Magma - Differential field extension over a differential field

53 Views Asked by At

I want to construct the differential field $\mathbb{Q}(x,\,\log x,\,\log(\log x))$ in Magma. I have tried the following:

> F<x> := RationalDifferentialField(RationalField());
> G<ln> := LogarithmicFieldExtension(F, 1/x);
> L<lln> := LogarithmicFieldExtension(G, G!(1/(x*ln)));

I find, as expected, that BaseField(F) is G. However, Magma has set the derivative of lln to be the same as that of ln; moreover, they are equal:

> Derivative(lln);
1/x
> lln eq ln;
true

I have the same issue when I employ an identical method to try to construct $\mathbb{Q}(x,\,\log(x + 1),\,\log(x - 1))$. The generator of any extension after the first always has the same derivative as the generator of the first extension. This is even happens when I try to do a logarithmic then exponential extension, or an exponential and then logarithmic extension.

I did some investigating in the source code in package/Ring/RngDiff/RngDiff.m and the implementation of LogarithmicFieldExtension essentially just calls DifferentialRingExtension with the appropriate argument. I can use this intrinsic to construct $\mathbb{Q}(x,\,\log(x + 1),\,\log(x - 1))$ as follows:

> P := PolynomialRing(F, 2);
> G<ln1, ln2> := DifferentialRingExtension([P | 1/(x-1), 1/(x+1)]);
> Derivative(ln1); Derivative(ln2);
1/(x - 1)
1/(x + 1)

However, the following construction has the same problem as the initial example using LogarithmicFieldExtension (therefore the problem is not in LogarithmicFieldExtension, but in DifferentialRingExtension):

> G := DifferentialRingExtension([PolynomialRing(F, 1) | 1/(x+1)]);
> L := DifferentialRingExtension([PolynomialRing(G, 1) | 1/(x-1)]);
> BaseRing(L) eq G;
true
> L.1 eq G.1;
true

Unfortunately, because the input to DifferentialRingExtension must be of type [RngMPolElt], I can't construct $\log(\log x)$ as this would require the argument to DifferentialRingExtension to be [P | 1/x, 1/(x*P.1)]. I actually need to construct an extension over an existing extension field.

Is there some error I have made in my constructions using DifferentialRingExtension which is preventing it from working the way I expect? If this is a bug in Magma, is there a way to work around it so that I can construct $\mathbb{Q}(x,\,\log x,\,\log(\log x))$? Any help would be much appreciated!

1

There are 1 best solutions below

0
On

It appears that everything was working, except that the generators of the extension field were not being set correctly. Nils Bruin, a contributor to the differential field functionality in Magma, provides a fix which sets the generators correctly:

> F<x> := RationalDifferentialField(RationalField());
> A<a> := LogarithmicFieldExtension(F, 1/x);
> B<b> := LogarithmicFieldExtension(A, A!(1/(x*a)));
> B`Generators := [ B | c : c in OrderedGenerators(UnderlyingField(B)) ];
> Derivative(B.1);
1/x/a

Note that, because b was set before the generators of B, it is actually equal to a and not B.1. Nils warns that the differential ring extension code is not very well tested, so this fix may not work all the time. Indeed, it does not work for exponential extensions. Consider:

E<e> := ExponentialFieldExtension(A, A!1); // Q(x, log x, exp x)
> Derivative(e)
1/x
> E`Generators := [ E | c : c in OrderedGenerators(UnderlyingField(E)) ];
> Derivative(E.1);
a // log(x), the first generator of CoefficientRing(E)