option(none); // option(prot); // option(mem); LIB "elim.lib"; LIB "solve.lib"; LIB "primdec.lib"; print(""); print("FERMAT MIRROR K3 AS LEFSCHETZ FIBRATION (I)"); print(""); print("This program carries out the first step in the mirror computation,"); print("Namely, representing the 4 Lagrangian spheres as matching cycles."); print("We use the auxiliary holomorphic function"); print(""); print("1/4 (c_0 u_0 + c_1 u_1 + c_2 u_2 + c_3 u_3)"); print(""); print("with c_k roots of unity EXCEPT c_0, where we perturb from 1 to 5/4."); // the critical locus is given by points u_0^{-1} = s+c_0*t, etc. // such that u_0 \dots u_3 = 1. If we write prod = (s+c_0*t)... // (s+c_k*t), then the map from the critical locus down to \C^4 // is 1/4 times the derivatives of prod. ring space = 0,(s,t),dp; poly prod = (s-5/4*t)*(s+t)*(s^2+t^2); poly derivs = diff(prod,s); poly derivt = diff(prod,t); ring graphspace = 0,(s,t,z,w),dp; ideal graph = imap(space,prod)-1, 4*z-imap(space,derivs), 4*w-imap(space,derivt); print(""); print("The downstairs branch curve is:"); poly locus = elim1(graph,st)[1]; short = 0; factorize(locus); ring basespace = 0,(z,w),dp; poly locus2 = imap(graphspace,locus); ideal tangencies = locus2,diff(locus2,w); print(""); print("The real and fake critical values z are the zeros of (reduced):"); ideal critred = radical(elim1(tangencies,w)); short = 0; critred; poly critz = 1; for (int k=1; k <= size(critred); k=k+1){ critz = critz * critred[k]; }; ring cc = (complex,30,i),z,dp; poly tosolve = imap(basespace,critz); short = 0; tosolve; print(""); print("Numerically,"); short = 0; laguerre_solve(tosolve); setring basespace; poly locus3 = subst(locus2,z,0); ring cc2 = (complex,30,i),w,dp; poly locus4 = imap(basespace,locus3); print(""); print("If we restrict to the Fermat K3 fibre (z = 0), then"); print("the w-values of the critical points are the zeros of:"); short = 0; locus4; print(""); print("Numerically,"); short = 0; laguerre_solve(locus4); option(prompt);