Magma - Differential field extension over a differential field

36 Views Asked by At

I want to construct the differential field 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 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.

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 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 Q(x, log x, log(log x))? Any help would be much appreciated!

0

There are 0 best solutions below