D-Algebraic Functions in Macaulay2¶
We here provide the Macaulay2 code of our article for computing with D-algebraic functions. Our implementation requires the package Jets. We also provide the examples from the article.
Notice: Our Macaulay2 code on a Jupyter notebook
The Macaulay2 Jupyter kernel (v0.6.7) has a quite small TIMEOUT (5 to 10 seconds). That is why we only present examples with small CPU time here. However, one does not encounter this limitation on the terminal.
The code for composition presented here did not run on Jupyter notebook of the versions 3.9.5 and 3.10.8 of Python on Emacs. This notebook was made with Python 3.8.10 on WSL2 with Ubuntu 20.04.4 installed.
[1]:
-- load the Jets package
needsPackage "Jets"
o1 = Jets
o1 : Package
Sum of D-algebraic functions¶
We first define the differential ring R. The numbers m and n represent the orders of the input differential polynomials.
[4]:
m = 2;
n = 1;
R = QQ[y_0..y_m, z_0..z_n, w_0, MonomialOrder => Lex];
The next cell contains the command to compute an ADE for the sum of two D-algebraic functions \(f\) and \(g\), taking differential polynomials \(P\) and \(Q\) with \(P(f)=0\) and \(Q(g)=0\) as an input.
[5]:
SumDalg = (P, Q) ->(
T = ideal 0_R; N =0;
I = ideal (P, Q, w_0 - z_0 - y_0);
while T == ideal 0_R do (
N = N + 1;
J = jets(N, I);
(RingJets,iota) = flattenRing ring(J);
factorialMap = map(RingJets, RingJets,
gens RingJets / ( i-> i => i/(value(substring(1, toString first baseName i)))! ));
F = factorialMap iota J;
R = QQ[y_0..y_(N+m), z_0..z_(N+n), w_0..w_N, MonomialOrder => Lex];
idxList = gens RingJets/(i->(last baseName i)+value((toString first baseName i)_(-1)));
letterList = gens RingJets / (i -> (toString first baseName i)_0);
mapList = apply(letterList, idxList, (i,j) -> value( i | "_" | toString(j)));
phi = map(R, RingJets, mapList);
L = splice(toList (y_0..y_(N+m), z_0..z_(N+n)));
T = eliminate(L, phi F);
);
return T;
);
For other operations such as taking products or fractions, one can use the same previous fuction and change the ideal \(I\) with the corresponding generators. In case of non-autonomus differential equations we add a variable \(x_0, x_1\) and in \(I\) we add the equation \(x_1 -1\).
Example 5.1¶
[11]:
m = 1;
n = 1;
R = QQ[y_0..y_m, z_0..z_n, w_0, MonomialOrder => Lex];
P = y_1^3 + y_0 + 1 ;
Q = z_1^2 - z_0 -1;
SumDalg(P,Q)
2 4 2 3 2 2 2 2 3 4
o11 = ideal (432w w - 864w w + 648w w - 216w w + 27w + 432w w w -
0 2 0 2 0 2 0 2 0 0 1 2
--------------------------------------------------------------------------
3 3 3 2 3 3 2 4 2 3
864w w w + 648w w w - 216w w w + 27w w - 432w w w + 864w w w -
0 1 2 0 1 2 0 1 2 0 1 0 1 2 0 1 2
--------------------------------------------------------------------------
2 2 2 2 3 2
648w w w + 216w w w - 27w w - 288w w w + 432w w w - 216w w w +
0 1 2 0 1 2 0 1 0 1 2 0 1 2 0 1 2
--------------------------------------------------------------------------
4 3 2 5 4
36w w + 1728w w - 3456w w + 2544w w - 832w w + 104w - 432w w +
0 1 0 2 0 2 0 2 0 2 0 1 2
--------------------------------------------------------------------------
5 3 5 2 5 5 4 3 4 2 4 4
864w w - 648w w + 216w w - 27w - 288w w + 432w w - 216w w + 36w +
1 2 1 2 1 2 1 1 2 1 2 1 2 1
--------------------------------------------------------------------------
3 4 3 3 3 2 3 3 2 4 2 3
864w w - 1728w w + 1248w w - 400w w + 50w - 864w w + 1728w w -
1 2 1 2 1 2 1 2 1 1 2 1 2
--------------------------------------------------------------------------
2 2 2 2 3 2 4
1296w w + 432w w - 54w - 576w w + 864w w - 432w w + 72w + 1728w -
1 2 1 2 1 1 2 1 2 1 2 1 2
--------------------------------------------------------------------------
3 2 2 6 2 5 2 3
3456w + 2496w - 800w + 100, 7776w w - 19440w w + 29160w w -
2 2 2 0 2 0 2 0 2
--------------------------------------------------------------------------
2 2 2 2 3 4 3 3 3 2
26730w w + 9477w w - 1215w - 19440w w w + 38880w w w - 29160w w w +
0 2 0 2 0 0 1 2 0 1 2 0 1 2
--------------------------------------------------------------------------
3 3 2 6 2 5 2 4
9720w w w - 1215w w - 7776w w w + 14256w w w + 11664w w w -
0 1 2 0 1 0 1 2 0 1 2 0 1 2
--------------------------------------------------------------------------
2 3 2 2 2 2 5
39528w w w + 31266w w w - 10449w w w + 1296w w - 5184w w w +
0 1 2 0 1 2 0 1 2 0 1 0 1 2
--------------------------------------------------------------------------
4 3 2 6
9504w w w + 6912w w w - 18144w w w + 9828w w w - 1674w w + 31104w w
0 1 2 0 1 2 0 1 2 0 1 2 0 1 0 2
--------------------------------------------------------------------------
5 4 3 2
- 77760w w - 864w w + 117648w w - 105120w w + 36504w w - 4680w +
0 2 0 2 0 2 0 2 0 2 0
--------------------------------------------------------------------------
5 4 5 3 5 2 5 5 4 5
19440w w - 38880w w + 29160w w - 9720w w + 1215w + 5184w w -
1 2 1 2 1 2 1 2 1 1 2
--------------------------------------------------------------------------
4 4 4 3 4 2 4 4 3 4
11664w w + 23328w w - 23976w w + 10692w w - 1701w - 34560w w +
1 2 1 2 1 2 1 2 1 1 2
--------------------------------------------------------------------------
3 3 3 2 3 3 2 6 2 5
69984w w - 50976w w + 16488w w - 2088w - 15552w w + 28512w w +
1 2 1 2 1 2 1 1 2 1 2
--------------------------------------------------------------------------
2 4 2 3 2 2 2 2 5
23328w w - 77904w w + 61140w w - 20322w w + 2508w - 10368w w +
1 2 1 2 1 2 1 2 1 1 2
--------------------------------------------------------------------------
4 3 2 6 5
19008w w + 13824w w - 36192w w + 19592w w - 3340w + 31104w - 77760w
1 2 1 2 1 2 1 2 1 2 2
--------------------------------------------------------------------------
4 3 2 3 5 3 4
- 1728w + 118656w - 103320w + 35100w - 4500, 3888w w - 7776w w +
2 2 2 2 0 2 0 2
--------------------------------------------------------------------------
3 3 3 2 3 2 2 5 2 2 4 2 2 3
5832w w - 1944w w + 243w w - 3888w w w + 5184w w w - 1296w w w -
0 2 0 2 0 2 0 1 2 0 1 2 0 1 2
--------------------------------------------------------------------------
2 2 2 2 2 2 2 2 5 2 4 2 3
972w w w + 567w w w - 81w w + 3888w w w - 10368w w w + 9936w w w -
0 1 2 0 1 2 0 1 0 1 2 0 1 2 0 1 2
--------------------------------------------------------------------------
2 2 2 2 2 5 2 3 2 2
4212w w w + 729w w w - 27w w + 23328w w - 58320w w + 57960w w -
0 1 2 0 1 2 0 1 0 2 0 2 0 2
--------------------------------------------------------------------------
2 2 4 4 4 3 4 2 4
21582w w + 2862w + 2592w w w - 3888w w w + 1944w w w - 324w w w -
0 2 0 0 1 2 0 1 2 0 1 2 0 1 2
--------------------------------------------------------------------------
3 5 3 4 3 3 3 2 3
3888w w w + 51840w w w - 92664w w w + 66528w w w - 21735w w w +
0 1 2 0 1 2 0 1 2 0 1 2 0 1 2
--------------------------------------------------------------------------
3 2 5 2 4 2 3 2 2
2700w w - 15552w w w - 28512w w w + 91152w w w - 74376w w w +
0 1 0 1 2 0 1 2 0 1 2 0 1 2
--------------------------------------------------------------------------
2 2 5 4 3
25296w w w - 3156w w + 15552w w w - 41472w w w + 8208w w w +
0 1 2 0 1 0 1 2 0 1 2 0 1 2
--------------------------------------------------------------------------
2 5 4 3
29808w w w - 20184w w w + 3712w w + 46656w w + 93312w w - 303264w w
0 1 2 0 1 2 0 1 0 2 0 2 0 2
--------------------------------------------------------------------------
2 6 3 6 2 6 6
+ 249984w w - 85836w w + 11024w - 648w w + 972w w - 486w w + 81w -
0 2 0 2 0 1 2 1 2 1 2 1
--------------------------------------------------------------------------
5 4 5 3 5 2 5 5 4 4
44064w w + 88344w w - 66852w w + 22626w w - 2889w + 5184w w -
1 2 1 2 1 2 1 2 1 1 2
--------------------------------------------------------------------------
4 3 4 2 4 4 3 5 3 4
36720w w + 47448w w - 22572w w + 3666w - 7776w w + 103680w w -
1 2 1 2 1 2 1 1 2 1 2
--------------------------------------------------------------------------
3 3 3 2 3 3 2 5 2 4
185328w w + 128448w w - 40470w w + 5060w - 15552w w - 77760w w +
1 2 1 2 1 2 1 1 2 1 2
--------------------------------------------------------------------------
2 3 2 2 2 2 5 4
187488w w - 144864w w + 48372w w - 5996w + 15552w w - 41472w w -
1 2 1 2 1 2 1 1 2 1 2
--------------------------------------------------------------------------
3 2 5 4 3
23328w w + 76464w w - 43284w w + 7532w + 31104w + 124416w - 326592w
1 2 1 2 1 2 1 2 2 2
--------------------------------------------------------------------------
2 2 2 5 2 2 4 2 2 3
+ 252576w - 83400w + 10600, 3888w w w - 7776w w w + 5832w w w -
2 2 0 1 2 0 1 2 0 1 2
--------------------------------------------------------------------------
2 2 2 2 2 2 5 2 3 2 2 2
1944w w w + 243w w w + 3888w w w - 9072w w w + 8748w w w - 3159w w w
0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2
--------------------------------------------------------------------------
2 2 3 2 2 2 2 4 5 4 4
+ 405w w + 432w w - 648w w + 324w w - 54w - 3888w w w + 12960w w w
0 1 0 2 0 2 0 2 0 0 1 2 0 1 2
--------------------------------------------------------------------------
4 3 4 2 4 4 3 5
- 16200w w w + 9720w w w - 2835w w w + 324w w - 3888w w w -
0 1 2 0 1 2 0 1 2 0 1 0 1 2
--------------------------------------------------------------------------
3 4 3 3 3 2 3 3
5184w w w + 17496w w w - 13608w w w + 4293w w w - 486w w +
0 1 2 0 1 2 0 1 2 0 1 2 0 1
--------------------------------------------------------------------------
2 5 2 4 2 3 2 2 2 2
15552w w w - 33696w w w + 20736w w w - 792w w w - 2844w w w + 648w w
0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1
--------------------------------------------------------------------------
5 3 2
+ 15552w w w - 36720w w w + 34128w w w - 11880w w w + 1488w w +
0 1 2 0 1 2 0 1 2 0 1 2 0 1
--------------------------------------------------------------------------
3 2 6 4 6 3 6 2
1728w w - 2592w w + 1248w w - 208w - 5184w w + 10368w w - 7776w w +
0 2 0 2 0 2 0 1 2 1 2 1 2
--------------------------------------------------------------------------
6 6 5 4 5 3 5 2 5 5
2592w w - 324w + 2592w w - 7992w w + 8100w w - 3402w w + 513w -
1 2 1 1 2 1 2 1 2 1 2 1
--------------------------------------------------------------------------
4 5 4 4 4 3 4 2 4 4 3 5
7776w w + 25920w w - 30240w w + 16056w w - 4098w w + 438w - 7776w w
1 2 1 2 1 2 1 2 1 2 1 1 2
--------------------------------------------------------------------------
3 4 3 3 3 2 3 3 2 5
- 10368w w + 34992w w - 26640w w + 8178w w - 888w + 15552w w -
1 2 1 2 1 2 1 2 1 1 2
--------------------------------------------------------------------------
2 4 2 3 2 2 2 2 5
36288w w + 18144w w + 6192w w - 6612w w + 1288w + 15552w w -
1 2 1 2 1 2 1 2 1 1 2
--------------------------------------------------------------------------
3 2 3 2
37152w w + 33264w w - 11124w w + 1356w + 1728w - 2592w + 1200w -
1 2 1 2 1 2 1 2 2 2
--------------------------------------------------------------------------
3 3 3 2 3 3 2 3 3 2 3 2
200, 216w w - 324w w + 162w w - 27w + 216w w w - 324w w w +
0 2 0 2 0 2 0 0 1 2 0 1 2
--------------------------------------------------------------------------
2 3 2 3 2 2 3 2 2 2 2 2 2 2
162w w w - 27w w - 432w w w + 648w w w - 324w w w + 54w w -
0 1 2 0 1 0 1 2 0 1 2 0 1 2 0 1
--------------------------------------------------------------------------
2 2 2 2 2 3 2 2 2 2
144w w w + 144w w w - 36w w + 1296w w - 1944w w + 948w w - 158w -
0 1 2 0 1 2 0 1 0 2 0 2 0 2 0
--------------------------------------------------------------------------
5 3 5 2 5 5 4 3 4 2
432w w w + 648w w w - 324w w w + 54w w + 216w w w - 468w w w +
0 1 2 0 1 2 0 1 2 0 1 0 1 2 0 1 2
--------------------------------------------------------------------------
4 4 3 3 3 2 3 3
306w w w - 63w w + 864w w w - 1152w w w + 480w w w - 68w w -
0 1 2 0 1 0 1 2 0 1 2 0 1 2 0 1
--------------------------------------------------------------------------
2 3 2 2 2 2 2
1728w w w + 2592w w w - 1272w w w + 212w w - 576w w w + 576w w w -
0 1 2 0 1 2 0 1 2 0 1 0 1 2 0 1 2
--------------------------------------------------------------------------
3 2 7 3 7 2
144w w + 2592w w - 3888w w + 1848w w - 308w + 216w w - 324w w +
0 1 0 2 0 2 0 2 0 1 2 1 2
--------------------------------------------------------------------------
7 7 6 2 6 6 5 3 5 2 5
162w w - 27w + 144w w - 144w w + 36w - 864w w + 1296w w - 624w w +
1 2 1 1 2 1 2 1 1 2 1 2 1 2
--------------------------------------------------------------------------
5 4 3 4 2 4 4 3 3 3 2 3
104w + 432w w - 936w w + 612w w - 126w + 864w w - 1008w w + 312w w
1 1 2 1 2 1 2 1 1 2 1 2 1 2
--------------------------------------------------------------------------
3 2 3 2 2 2 2 2
- 28w - 1728w w + 2592w w - 1248w w + 208w - 576w w + 576w w -
1 1 2 1 2 1 2 1 1 2 1 2
--------------------------------------------------------------------------
3 2 3 6 3 5
144w + 1728w - 2592w + 1200w - 200, 7776w w w - 19440w w w +
1 2 2 2 0 1 2 0 1 2
--------------------------------------------------------------------------
3 4 3 3 3 2 3 2 5
19440w w w - 9720w w w + 2430w w w - 243w w w + 5184w w w -
0 1 2 0 1 2 0 1 2 0 1 2 0 1 2
--------------------------------------------------------------------------
2 4 2 3 2 2 2 2 4
11664w w w + 10368w w w - 4536w w w + 972w w w - 81w w + 864w w w -
0 1 2 0 1 2 0 1 2 0 1 2 0 1 0 1 2
--------------------------------------------------------------------------
3 2 5 6 5 5
1728w w w + 1296w w w - 432w w w + 54w w - 7776w w + 19440w w -
0 1 2 0 1 2 0 1 2 0 1 1 2 1 2
--------------------------------------------------------------------------
5 4 5 3 5 2 5 4 5 4 4
19440w w + 9720w w - 2430w w + 243w w - 10368w w + 22032w w -
1 2 1 2 1 2 1 2 1 2 1 2
--------------------------------------------------------------------------
4 3 4 2 4 4 3 6 3 5 3 4
18144w w + 7128w w - 1296w w + 81w + 15552w w - 38880w w + 33696w w
1 2 1 2 1 2 1 1 2 1 2 1 2
--------------------------------------------------------------------------
3 3 3 2 3 3 2 5 2 4
- 10656w w - 684w w + 1062w w - 162w + 10368w w - 23328w w +
1 2 1 2 1 2 1 1 2 1 2
--------------------------------------------------------------------------
2 3 2 2 2 2 4 3 2
19584w w - 7680w w + 1368w w - 78w + 1728w w - 3456w w + 2496w w -
1 2 1 2 1 2 1 1 2 1 2 1 2
--------------------------------------------------------------------------
2 8 2 7 2 6 2 5
800w w + 100w , 15552w w w - 46656w w w + 58320w w w - 38880w w w +
1 2 1 0 1 2 0 1 2 0 1 2 0 1 2
--------------------------------------------------------------------------
2 4 2 3 2 2 7 6
14580w w w - 2916w w w + 243w w w + 10368w w w - 28512w w w +
0 1 2 0 1 2 0 1 2 0 1 2 0 1 2
--------------------------------------------------------------------------
5 4 3 2 6
32400w w w - 19440w w w + 6480w w w - 1134w w w + 81w w w + 1728w w
0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 2
--------------------------------------------------------------------------
5 4 3 2 4 8
- 4320w w + 4320w w - 2160w w + 540w w - 54w w - 15552w w +
0 2 0 2 0 2 0 2 0 2 1 2
--------------------------------------------------------------------------
4 7 4 6 4 5 4 4 4 3 4 2
46656w w - 58320w w + 38880w w - 14580w w + 2916w w - 243w w -
1 2 1 2 1 2 1 2 1 2 1 2
--------------------------------------------------------------------------
3 7 3 6 3 5 3 4 3 3 3 2
20736w w + 54432w w - 58320w w + 32400w w - 9720w w + 1458w w -
1 2 1 2 1 2 1 2 1 2 1 2
--------------------------------------------------------------------------
3 2 8 2 7 2 6 2 5 2 4
81w w + 31104w w - 93312w w + 106272w w - 55008w w + 9288w w +
1 2 1 2 1 2 1 2 1 2 1 2
--------------------------------------------------------------------------
2 3 2 2 2 7 6 5
2808w w - 1386w w + 162w w + 20736w w - 57024w w + 62496w w -
1 2 1 2 1 2 1 2 1 2 1 2
--------------------------------------------------------------------------
4 3 2 6 5 4
34944w w + 10416w w - 1524w w + 78w w + 3456w - 8640w + 8448w -
1 2 1 2 1 2 1 2 2 2 2
--------------------------------------------------------------------------
3 2 2 3 2 2 2 2
4096w + 1000w - 100w , 648w w w - 972w w w + 486w w w - 81w w +
2 2 2 0 1 2 0 1 2 0 1 2 0 1
--------------------------------------------------------------------------
2 3 2 2 2 2 5 5 5 4 5 3
432w w - 648w w + 324w w - 54w - 3888w w w + 7776w w w - 5832w w w
0 2 0 2 0 2 0 0 1 2 0 1 2 0 1 2
--------------------------------------------------------------------------
5 2 5 4 5 4 4 4 3
+ 1944w w w - 243w w w - 3888w w w + 5184w w w - 648w w w -
0 1 2 0 1 2 0 1 2 0 1 2 0 1 2
--------------------------------------------------------------------------
4 2 4 4 3 4 3 3 3 2
1944w w w + 1053w w w - 162w w - 2592w w w + 3888w w w - 1944w w w +
0 1 2 0 1 2 0 1 0 1 2 0 1 2 0 1 2
--------------------------------------------------------------------------
3 2 3 2 2 2 3 2
324w w w - 864w w w + 864w w w - 216w w w + 2592w w w - 4176w w w +
0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2
--------------------------------------------------------------------------
3 2 7 5
2160w w w - 384w w + 1728w w - 2592w w + 1248w w - 208w + 3888w w -
0 1 2 0 1 0 2 0 2 0 2 0 1 2
--------------------------------------------------------------------------
7 4 7 3 7 2 7 6 5 6 4 6 3
7776w w + 5832w w - 1944w w + 243w w + 3888w w - 2592w w - 3240w w
1 2 1 2 1 2 1 2 1 2 1 2 1 2
--------------------------------------------------------------------------
6 2 6 6 5 5 5 4 5 3
+ 3888w w - 1377w w + 162w - 7776w w + 20736w w - 17928w w +
1 2 1 2 1 1 2 1 2 1 2
--------------------------------------------------------------------------
5 2 5 5 4 5 4 4 4 3 4 2
5868w w - 288w w - 135w - 7776w w + 10368w w + 1296w w - 6696w w +
1 2 1 2 1 1 2 1 2 1 2 1 2
--------------------------------------------------------------------------
4 4 3 4 3 3 3 2 3 3
3138w w - 462w - 5184w w + 7776w w - 3312w w + 240w w + 84w -
1 2 1 1 2 1 2 1 2 1 2 1
--------------------------------------------------------------------------
2 3 2 2 2 2 3 2
1728w w + 1728w w - 384w w - 8w + 2592w w - 4464w w + 2376w w -
1 2 1 2 1 2 1 1 2 1 2 1 2
--------------------------------------------------------------------------
3 2
444w + 1728w - 2592w + 1200w - 200)
1 2 2 2
o11 : Ideal of R
Reciprocal of D-algebraic functions¶
[12]:
InvDalg = (P) ->(
T = ideal 0_R; N =0;
I = ideal (P, w_0 *y_0 - 1 );
while T == ideal 0_R do (
N = N + 1;
J = jets(N, I);
(RingJets,iota) = flattenRing ring(J);
factorialMap = map(RingJets, RingJets,
gens RingJets / ( i-> i => i/(value(substring(1, toString first baseName i)))! ));
F = factorialMap iota J;
R = QQ[y_0..y_(N+m), z_0..z_(N+n), w_0..w_N, MonomialOrder => Lex];
idxList = gens RingJets/(i->(last baseName i)+value((toString first baseName i)_(-1)));
letterList = gens RingJets / (i -> (toString first baseName i)_0);
mapList = apply(letterList, idxList, (i,j) -> value( i | "_" | toString(j)));
phi = map(R, RingJets, mapList);
L = splice(toList (y_0..y_(N+m), z_0..z_(N+n)));
T = eliminate(L, phi F);
);
return T;
);
Example 2.3¶
[16]:
m =2;
R = QQ[y_0..y_m, w_0, MonomialOrder => Lex];
P = y_2 - y_0;
InvDalg(P)
2 2
o16 = ideal(w + w w - 2w )
0 0 2 1
o16 : Ideal of R
Product abd square of D-algebraic functions¶
[19]:
m = 2;
n = 2;
R = QQ[y_0..y_m, z_0..z_n, w_0, x_0..x_1, MonomialOrder => Lex];
[21]:
ProdDalg = (P, Q) ->(
T = ideal 0_R;
N =0;
I = ideal (P, Q, w_0 - z_0 * y_0, x_1 -1 );
while T == ideal 0_R do (
N = N + 1;
J = jets(N, I);
(RingJets,iota) = flattenRing ring(J);
factorialMap = map(RingJets, RingJets, gens RingJets / ( i-> i => i/(value(substring(1, toString first baseName i)))! ));
F = factorialMap iota J;
R = QQ[y_0..y_(N+m), z_0..z_(N+n), w_0..w_N, x_0..x_(N+1), MonomialOrder => Lex];
idxList = gens RingJets/(i->(last baseName i)+value((toString first baseName i)_(-1)));
letterList = gens RingJets / (i -> (toString first baseName i)_0);
mapList = apply(letterList, idxList, (i,j) -> value( i | "_" | toString(j)));
phi = map(R, RingJets, mapList);
L = splice(toList (y_0..y_(N+m),z_0..z_(N+n), x_1..x_(N+1)));
T = eliminate(L, phi F);
);
return T;
);
SquarDalg = (P) ->(
T = ideal 0_R;
N =0;
I = ideal (P, w_0 - y_0^2, x_1 -1 );
while T == ideal 0_R do (
N = N + 1;
J = jets(N, I);
(RingJets,iota) = flattenRing ring(J);
factorialMap = map(RingJets, RingJets, gens RingJets / ( i-> i => i/(value(substring(1, toString first baseName i)))! ));
F = factorialMap iota J;
R = QQ[y_0..y_(N+m), w_0..w_N, x_0..x_(N+1), MonomialOrder => Lex];
idxList = gens RingJets/(i->(last baseName i)+value((toString first baseName i)_(-1)));
letterList = gens RingJets / (i -> (toString first baseName i)_0);
mapList = apply(letterList, idxList, (i,j) -> value( i | "_" | toString(j)));
phi = map(R, RingJets, mapList);
L = splice(toList (y_0..y_(N+m), x_1..x_(N+1)));
T = eliminate(L, phi F);
);
return T;
);
D
Toy Example for the product¶
[27]:
m = 2;
n = 2;
R = QQ[y_0..y_m, z_0..z_n, w_0, x_0..x_1, MonomialOrder => Lex];
P = y_2 + y_0;
Q = z_2 + z_0;
ProdDalg(P,Q)
o27 = ideal(4w + w )
1 3
o27 : Ideal of R
Example 2.8¶
The following lines compute an ADE for the square of the Painlevé transcendent of type I.
[31]:
m = 2;
R = QQ[y_0..y_m, w_0, x_0..x_1, MonomialOrder => Lex];
P = y_2 - 6*y_0^2 - x_0;
SquarDalg(P)
5 4 3 2 2 2 2 4
o31 = ideal(576w + 192w x + 16w x - 4w w + 4w w w - w )
0 0 0 0 0 0 2 0 1 2 1
o31 : Ideal of R
Composition of D-algebraic functions¶
The next functions are used to construct the polynomials S_i of Equation (4.12) from the paper.
[32]:
-- For Monomials
SpecialDifMonomials = ( M ) ->(
if isUnit M == true or M == 0 then
return 0
else (
for i from 0 when i < N + 2 do (
if M % z_i == 0 then (return z_(i + 1) * M // z_i + z_i * SpecialDifMonomials ( M // z_i););
if M % y_i == 0 then (return y_(i + 1) * z_1 * M // y_i + y_i * SpecialDifMonomials( M // y_i);)
);
);
);
[33]:
-- For Polynomials
SpecialDifPoly = ( M) ->(
L = terms (M);
S = {0};
for i from 0 when i < length L do ( S = append( S, SpecialDifMonomials(L_i)));
return sum S;
);
[34]:
-- Applying the previous function several times
HigherDif = (M, n) -> (
if n == 0 then return M;
if n == 1 then (
return (SpecialDifPoly(M));
);
return HigherDif(HigherDif (M, 1), n - 1);
);
[35]:
CompDalg = (P,Q) -> (
I = ideal(P , Q , x_1 - 1);
T = ideal 0_R ; N =0;
while T == ideal 0_R do (
N = N +1;
-- Constructing the differential ideal using Jets
J = jets(N, I); (RingJets,iota) = flattenRing ring(J);
factorialMap = map(RingJets, RingJets,
gens RingJets / ( i-> i => i / (value(substring(1, toString first baseName i)))! ));
-- Substituting the variables with factorials in the coefficients to make the ideal differential
F = factorialMap iota J;
-- Changing the ring from the ring of Jets to a new ring
R = QQ[w_0..w_(N + min(m,n)), y_0..y_(N + m), z_0..z_(N+ n), x_0..x_(N+1), MonomialOrder => Lex];
-- Adapting the indices
idxList = gens RingJets/(i->(last baseName i)+value((toString first baseName i)_(-1)));
letterList = gens RingJets / (i -> (toString first baseName i)_0);
mapList = apply(letterList, idxList, (i,j) -> value( i | "_" | toString(j)));
phi = map(R, RingJets, mapList);
H = phi F; -- Constructing the ideal containing the differential equation for the composition
for i from 0 when i < N + 2 do (
H = H + ideal( w_i - HigherDif(y_0, i) );
);
L = splice(toList (y_0..y_(N+m),z_0..z_(N+n), x_1..x_(N+1)));
T = eliminate(L, H); -- Eliminating the respective variables
);
return T;
);
Example 4.4¶
[41]:
m =1;
n =1;
R = QQ[y_0..y_m, z_0 ..z_n,w_0,x_0..x_1, MonomialOrder => Lex];
P = y_1 - y_0;
Q= 2*z_1 + z_0^2;
CompDalg(P,Q)
2 2 3 2 4
o41 = ideal(w w + 2w w - 2w w w + w )
0 2 0 1 0 1 2 1
o41 : Ideal of R
Example 4.5¶
[47]:
m = 2;
n = 1;
R = QQ[y_0..y_m, z_0 ..z_n, x_0..x_1, MonomialOrder => Lex];
P = y_2 - y_0;
Q = z_1 - x_0*z_0;
CompDalg(P,Q)
4 2 3 2 2 3 2
o47 = ideal(2w w x + 3w w x + 3w w - 3w w x - 3w w x + w w x + w x + w x
0 1 0 0 1 0 0 1 0 2 0 0 2 0 0 3 0 1 0 1 0
--------------------------------------------------------------------------
2
- w w x )
1 2 0
o47 : Ideal of R
Example 5.7¶
[53]:
m = 1;
n = 2;
R = QQ[y_0..y_m, z_0 ..z_n, x_0..x_1, MonomialOrder => Lex];
P = y_1 - y_0; Q = z_2 - 6*z_0^2 - x_0;
CompDalg(P,Q)
6 5 4 2 4 4 2 3 3 3 2
o53 = ideal(w - 2w w + 24w w x + 6w w w + w w - 4w w - 24w w w -
0 0 3 0 1 0 0 1 2 0 3 0 1 0 1 2
--------------------------------------------------------------------------
3 2 4 2 3 2 2 2 4 6
6w w w w + 24w w + 4w w w + 9w w w - 12w w w + 4w )
0 1 2 3 0 1 0 1 3 0 1 2 0 1 2 1
o53 : Ideal of R
[59]:
m = 1;
n = 2;
R = QQ[y_0..y_m, z_0 ..z_n, x_0..x_1, MonomialOrder => Lex];
P = 2*x_0*y_1 - y_0; Q = z_2 - 6*z_0^2 - x_0;
CompDalg(P,Q)
4 3 2 2 3 2 2 2 2 2 3
o59 = ideal(w - 4w w x + 96w w x - 12w w w x + 4w w x - 192w w w x +
0 0 3 0 0 1 0 0 1 2 0 0 3 0 0 1 2 0
--------------------------------------------------------------------------
2 4 3 2 2 2
24w w w w x - 192w x + 36w w x )
0 1 2 3 0 1 0 1 2 0
o59 : Ideal of R