maple < Example1.txt |\^/| Maple 2019 (APPLE UNIVERSAL OSX) ._|\| |/|_. Copyright (c) Maplesoft, a division of Waterloo Maple Inc. 2019 \ MAPLE / All rights reserved. Maple is a trademark of <____ ____> Waterloo Maple Inc. | Type ? for help. > ACC := 40; ACC := 40 > t := series(q^(-5) * mul( ( (1-q^n)/(1-q^(11*n)) )^12, n=1..ACC), q=0, ACC); -5 -4 -3 -2 -1 2 3 4 5 6 7 t := q - 12 q + 54 q - 88 q - 99 q + 540 - 418 q - 648 q + 594 q + 836 q + 1056 q - 4092 q - 353 q + 8 9 10 12 13 14 15 16 17 18 4752 q - 1650 q + 3068 q - 9768 q - 8074 q + 12144 q + 27258 q + 572 q - 54504 q - 4884 q + 19 20 21 23 24 25 26 27 28 45045 q - 22176 q + 61656 q - 104676 q - 69564 q + 78914 q + 290664 q - 72732 q - 411180 q + 29 30 31 32 34 35 8646 q + 241812 q - 117194 q + 567996 q - 842336 q + O(q ) > f := series(diff(t,q) * mul( (1-q^n)^(-2) * (1-q^(11*n))^(-2), n=1..ACC), q=0, ACC); -6 -5 -4 -3 -2 -1 2 3 4 5 6 f := -5 q + 38 q - 91 q + 42 q + 21 q + 238 q - 884 q - 759 q + 812 q + 7378 q - 6252 q - 6381 q + 7 8 9 10 12 13 14 15 16 3346 q - 11809 q + 14540 q + 41209 q - 86204 q - 64802 q + 75467 q + 228684 q - 156394 q - 105152 17 18 19 20 21 23 24 25 26 q + 106148 q - 448770 q + 395312 q + 712908 q - 1403928 q - 1199067 q + 1634612 q + 2782237 q - 27 28 29 30 31 32 34 1770056 q - 808215 q + 822298 q - 6583279 q + 5287908 q + 7492338 q + O(q ) > h := series(q*t*mul(1-q^(11*k), k=1..ACC) * add(combinat[numbpart](11*k+6)*q^k, k=0..ACC), q=0, ACC); memory used=4.3MB, alloc=40.3MB, time=0.08 -4 -3 -2 -1 2 3 4 5 6 7 h := 11 q + 165 q + 748 q + 1639 q + 3553 + 4136 q + 6347 q + 3586 q + 7414 q - 4444 q + 583 q - 14157 q 8 9 10 11 12 13 14 15 16 - 6523 q - 29590 q + 17435 q - 14641 q + 34100 q + 27863 q + 43186 q + 40216 q + 12738 q - 51216 17 18 19 20 21 22 23 24 25 q - 85162 q - 32142 q - 268488 q + 95194 q - 102487 q + 188386 q + 135927 q + 411906 q + 184932 26 27 28 29 30 31 32 33 34 q + 322366 q - 386969 q - 489467 q - 36773 q - 1503920 q + 174262 q - 556358 q + 914298 q + 35 36 443982 q + O(q ) # Compute the algebraic relation p in Q[x,y] between t and f using an Ansatz: > n := 5; n := 5 > m := 6; m := 6 > p := add(add( c[i,j]*x^i*y^j, i=0..min(m, max(m,n)-j)), j=0..n); 5 2 2 2 4 4 3 3 3 p := c[1, 5] x y + c[2, 2] x y + c[2, 4] x y + c[1, 4] x y + c[1, 3] x y + c[0, 3] y + c[3, 1] x y 4 5 5 3 3 3 2 3 2 5 + c[4, 0] x + c[5, 0] x + c[0, 5] y + c[3, 3] x y + c[3, 2] x y + c[3, 0] x + c[2, 0] x + c[5, 1] x y 4 6 2 2 4 2 + c[4, 1] x y + c[6, 0] x + c[1, 0] x + c[0, 1] y + c[0, 2] y + c[1, 1] x y + c[2, 1] x y + c[4, 2] x y 2 3 4 2 + c[2, 3] x y + c[0, 4] y + c[1, 2] x y + c[0, 0] > IsZero := eval(p, {x=t, y=f}): > SolveCoeffsZero := proc(IsZero, q, ACC) > solve({coeffs(convert(series(IsZero, q=0, ACC),polynom),q)}) > end: > p := eval(p, SolveCoeffsZero(IsZero, q, ACC)): > p := sort(collect(primpart(p,y),y, factor), y); 5 4 2 3 3 2 4 2 p := y + 170 x y + 9345 x y + 167320 x y + x (3125 x - 7903458 x + 5536128125) # Compute a basis v of all integral functions i for which i/x^d is # integral at infinity. Then write h as a linear combination of v: > d := 1; d := 1 > read NormalBasis: > v := UpToDegree(p, x, y, d): > H := add(c[i]*v[i], i=1..nops(v)): > IsZero := h - eval(H, {x=t,y=f}): > h := factor(eval(H, SolveCoeffsZero(IsZero, q, ACC))); 5 4 3 2 2 3 4 4 3 2 2 h := - 11 (829969 x - 33692 x y + 2046 x y - 13 x y - x y - 2094307204 x + 42341772 x y + 44713614 x y 3 4 3 / 3 + 1654433 x y + 14641 y + 1473717306875 x ) / (625 x (x + 1331) (x - 1331)) / # Shorten h with "Rational Univariate Representation" > ShortenAlg := proc(h, f,x,y) local d, RUR; > d := diff(f,y); > RUR := rem(h*d, f, y)/d; > map(factor, convert(RUR, parfrac, y)) > end: > h := ShortenAlg(h, p,x,y); 275 x (x - 1331) 110 (x + 1331) (71 x + 3 y) x h := 14641 + ---------------- - ----------------------------- 47 x + y 2 2 1424 x + 89 x y + y > with(algcurves): > genus(p,x,y); 1 # The genus is 1. So the integral elements can have poles at # infinity of order 0, 2, 3, 4, .... (the only gap is 1). # Call those functions 1, z[2], z[3], ... then we should # be able to write h as a polynomial in z[2], z[3]. # Compute the q-expansions of a basis v of some subspace of Q(x)[y]/(f). # Adjust this basis to bring these q-expansions into Reduced Echelon Form. # Return the adjusted basis, as well as q-expansions up to O(q^1). > qEchelonForm := proc(v,q, x,y, t,f, ACC) > local n,m,w,i,j,M; > n := nops(v); > w := [seq(convert(series(eval(i, {x=t, y=f}), q=0, ACC),polynom), i=v)]; > m := min(map(ldegree,w,q)); > M := Matrix(n,1-m,[seq(seq(coeff(i,q,j),j=m..0),i=w)]); > M := < M | LinearAlgebra:-IdentityMatrix(n) > ; > M := LinearAlgebra:-ReducedRowEchelonForm( M ); > [seq([factor(add(M[i,1-m+j]*v[j], j=1..n)), > add(M[i,j-m+1]*q^j,j=m..0)], i=1..n)] > end: > v := qEchelonForm(v, q, x,y, t,f, ACC): > for i in v do > PoleOrder := -ldegree(i[2],q); > z[PoleOrder] := ShortenAlg(i[1], p,x,y); > zq[PoleOrder] := i[2] + O(q); > od; PoleOrder := 5 25 x (x - 1331) 5 (x + 1331) (144 x + 7 y) x z[5] := x + 12 - --------------- - ---------------------------- 47 x + y 2 2 1424 x + 89 x y + y 1 zq[5] := ---- - 1/q + O(q) 5 q PoleOrder := 4 15 x (x - 1331) 5 (x + 1331) (28 x + 19 y) x z[4] := 12 - --------------- - ---------------------------- 22 (47 x + y) 2 2 22 (1424 x + 89 x y + y ) 1 zq[4] := ---- - 2/q + O(q) 4 q PoleOrder := 3 15 x (x - 1331) 5 (x + 1331) (16 x + 3 y) x z[3] := 12 + --------------- - --------------------------- 22 (47 x + y) 2 2 22 (1424 x + 89 x y + y ) 1 zq[3] := ---- + 1/q + O(q) 3 q PoleOrder := 2 5 x (x - 1331) 5 (x + 1331) (42 x + y) x z[2] := 12 + -------------- - -------------------------- 22 (47 x + y) 2 2 22 (1424 x + 89 x y + y ) 1 zq[2] := ---- + 2/q + O(q) 2 q PoleOrder := 0 z[0] := 1 zq[0] := 1 + O(q) # Let H be an Ansatz for the expression of h in terms of z[2] and z[3]: > H := c1 * z2^2 + c2 * z3 + c3 * z2 + c4; 2 H := c1 z2 + c2 z3 + c3 z2 + c4 > IsZero := subs(z2=z[2], z3=z[3], x=t,y=f, h-H): > 'h' = eval(H, SolveCoeffsZero(IsZero, q, ACC)); 2 h = 11 z2 + 704 z2 + 121 z3 + 3157 # Compute the algebraic relation between z[2] and z[3] using an Ansatz: > H := z3^2 + c1 * z3 + c2 * z2*z3 + c3 * z2^3 + c4 * z2^2 + c5 * z2 + c6: > IsZero := subs(z2=z[2], z3=z[3], x=t, y=f, H): > sort( eval(H,SolveCoeffsZero(IsZero, q, ACC)), z3) = 0; 2 3 2 z3 + 6 z2 z3 + 25 z3 - z2 - 2 z2 + 45 z2 + 168 = 0 > ifactor(j_invariant(lhs(%), z2, z3)); 12 3 (2) (31) - ------------- 5 (11) > ifactor(j_invariant(p, x, y)); 12 3 (2) (31) - ------------- 5 (11) > quit memory used=47.3MB, alloc=79.3MB, time=0.39