Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download

Proof of Lemma 7 in the paper "On a simple quartic family of Thue equations over imaginary quadratic number fields" by Benjamin Earp-Lynch, Eva G. Goedhart, Ingrid Vukusic and Daniel P. Wisniewski.

18 views
unlisted
ubuntu2004
Kernel: SageMath 9.7

Proof of Lemma 7

##### parameters j = 3 # type 0 or 3 printd = False # print details printybound = True # print lower bound for y kstart = 2 if j == 0: print("type:", j) cstart = 1.12 kmax = 11 constrouche = 2.71 * 10^16 exporouche = 31 elif j == 3: print("type:", j) cstart = 2.27 kmax = 11 constrouche = 9.84 * 10^15 exporouche = 30 else: print("Attention! Type should be 0 or 1") ##### set up def roundup(x): return n(ceil(100*x)/100, digits = 4) S.<s> = PowerSeriesRing(QQ,'s',31) R.<x> = S[] T.<t> = LaurentSeriesRing(QQ,'t',31) f = x^4 - (1/s) * x^3 - 6 * x^2 + (1/s) * x + 1 fprime = x^3 + 3 * (1/s) * x^2 - 12 * x + (1/s) # get approximation to alpha with Newton's method x0 = 0 k = 15 for i in range(1,k+1): xnew = x0 - f(x0)/fprime(x0) x0 = xnew if j == 0: alpha = x0 elif j == 3: alpha = - (x0+1)/(x0-1) bs = alpha.truncate(30).power_series() bt = bs.subs(s=t^-1) print("B(1/t) =", bt) ##### Steps: clist = [] lblist = [] c = cstart for k in range(kstart, kmax + 1): print("\n*** Step", k, "***") c0 = c pade = bs.pade(k-1,k-1) ut = numerator(pade).subs(s=t^-1) vt = denominator(pade).subs(s=t^-1) denominators = [denominator(x) for x in ut.coefficients()] + [denominator(x) for x in vt.coefficients()] ut = ut * lcm(denominators) vt = vt * lcm(denominators) if printd: print("U(1/t)=", ut), print("V(1/t)=", vt) # bound U(1/t) - V(1/t) * B(1/t) uminusvb = ut - vt * bt if printd: print("U(1/t) - V(1/t) * B(1/t) =", uminusvb) expmin = 2*k - 1 if expmin == - max(uminusvb.exponents()): if printd: print("2*k - 1 =", expmin) else: print("Attention: Something went wrong with exponents in U - VB!") expos = uminusvb.exponents() coeffs = uminusvb.coefficients() c1 = add([abs(coeffs[i]) * 100^(expos[i] + expmin) for i in range(0,len(coeffs))]) if printd: print('c_1 =', c1.n()) # bound x - alpha*y c2 = 8.86 * c0^4 if printd: print("c_2 =", c2) # bound V(1/t) expos = vt.exponents() coeffs = vt.coefficients() c3 = add([abs(coeffs[i]) * 100^(expos[i]) for i in range(0,len(coeffs))]) if printd: print("c_3 =", c3.n()) # compute c c = roundup(c1 + c2*c3*100^(-2*k + 2) + constrouche * c3 * 100^-(exporouche + 1 - 2*k)) print("c =", c) clist.append(c) lby = 100^k/c lblist.append(lby) if printybound: print("new lower bound for y =", lby) ### Check expression does not vanish if printd: print("Check |F_(A(1/t)y, y)|>1:") denom = (t^(k-1)*vt)^4 Pt = t^(4*(k-1)) * (ut^4 - t * ut^3 * vt - 6 * ut^2 * vt^2 + t * ut * vt^3 + vt^4) if printd: print("P(t) =", Pt) if printd: print("denominator = ", denom) if max(Pt.exponents()) == 2*k - 2: if printd: print("Shape of f(A(1/t)) in paper checks out.") else: print("Attention: Shape of f(A(1/t)) is weird!") # Constant for lower bound for |P(t)| coeffs = Pt.coefficients() expos = Pt.exponents() clbPt = abs(coeffs[-1]) - add([abs(coeffs[j])*100^(-(2*k - 2) + expos[j]) for j in range(0,len(coeffs)-1)]) if printd: print("|P(t)| >", clbPt.n(), "* |t| ^ ", 2*k-2) # Constant for upper bound for |denominator| coeffs = denom.coefficients() expos = denom.exponents() cubdenom = sum([abs(coeffs[j])*100^(-4*(k-1) + expos[j]) for j in range(0,len(coeffs))]) if printd: print("|denominator| <", cubdenom.n(), "* |t| ^", 4*(k-1)) # Overall lower bound lb = clbPt * cubdenom^(-1) * c0^(-4) * 100^(2*k - 2) if lb > 1: if printd: print("|F_t(x,y)| >", lb, "> 1") else: print("Attention: Lower bound for |F(x,y)| was too small!")
type: 3 B(1/t) = -1435829041889280*t^-29 - 650285662207656*t^-28 + 99710350131200*t^-27 + 44259233299736*t^-26 - 6979724509184*t^-25 - 3031747059460*t^-24 + 493132709888*t^-23 + 209232806328*t^-22 - 35223764992*t^-21 - 14567881052*t^-20 + 2549088256*t^-19 + 1025056044*t^-18 - 187432960*t^-17 - 73061274*t^-16 + 14057472*t^-15 + 5291656*t^-14 - 1081344*t^-13 - 391220*t^-12 + 86016*t^-11 + 29724*t^-10 - 7168*t^-9 - 2346*t^-8 + 640*t^-7 + 196*t^-6 - 64*t^-5 - 18*t^-4 + 8*t^-3 + 2*t^-2 - 2*t^-1 + 1 *** Step 2 *** c = 10.14 new lower bound for y = 986.2 *** Step 3 *** c = 42.48 new lower bound for y = 23540. *** Step 4 *** c = 868.0 new lower bound for y = 115200. *** Step 5 *** c = 4921. new lower bound for y = 2.032e6 *** Step 6 *** c = 8503. new lower bound for y = 1.176e8 *** Step 7 *** c = 376200. new lower bound for y = 2.658e8 *** Step 8 *** c = 6.549e6 new lower bound for y = 1.527e9 *** Step 9 *** c = 1.195e7 new lower bound for y = 8.370e10 *** Step 10 *** c = 1.629e8 new lower bound for y = 6.138e11 *** Step 11 *** c = 9.547e8 new lower bound for y = 1.047e13
# produce table if j == 0: kstart = 4 liststart = 2 if j == 3: kstart = 2 liststart = 0 print("$k$", end=" & $" ) for k in range(kstart, kmax): print(k, end="$ & $") print(kmax, end="$ \\\\ \\hline \n") print("$c$", end=" & $" ) for k in range(liststart, len(clist)-1): print(latex(clist[k].n(digits=4)), end="$ & $") print(latex(clist[-1].n(digits=4)), end="$ \\\\ \n") print("$|y| \\geq \\ldots$", end=" & $" ) for k in range(liststart, len(lblist)-1): print(latex(lblist[k].n(digits=4)), end="$ & $") print(latex(lblist[-1].n(digits=4)), "$")
$k$ & $2$ & $3$ & $4$ & $5$ & $6$ & $7$ & $8$ & $9$ & $10$ & $11$ \\ \hline $c$ & $10.14$ & $42.48$ & $868.0$ & $4921.$ & $8503.$ & $376200.$ & $6.549 \times 10^{6}$ & $1.195 \times 10^{7}$ & $1.629 \times 10^{8}$ & $9.547 \times 10^{8}$ \\ $|y| \geq \ldots$ & $986.2$ & $23540.$ & $115200.$ & $2.032 \times 10^{6}$ & $1.176 \times 10^{8}$ & $2.658 \times 10^{8}$ & $1.527 \times 10^{9}$ & $8.370 \times 10^{10}$ & $6.138 \times 10^{11}$ & $1.047 \times 10^{13} $