"Source: Text/Geometry/CrvHyp.text";
"Line: 6899";
"Date: Fri Sep 26 09:12:34 2025";
"Main: Fri Sep 26 14:29:19 2025";
// original file: Text/Geometry/CrvHyp.text, line: 6899
// Example: H137E45 ()
print "Example: H137E45";
ei := GetEchoInput();
SetEchoInput(true);
SetSeed(1);
Q := RationalField();
P<x> := PolynomialRing(Q);
R<s> := NumberField(x^2-2);
PP<x> := PolynomialRing(R);
RF := NumberField(x^2-(-2+s));
CMF<t> := AbsoluteField(RF);
O := MaximalOrder(CMF);
D := Different(O);
IsPrincipal(D);
assert $1;
xi := -1/8*O.2; // a chosen generator of D^-1
xi*O eq D^-1;
assert $1;
auts := Automorphisms(CMF : Abelian := true);
cc := auts[3];
cc(cc(t)) eq t;
assert $1;
cc(xi^2) eq xi^2;
assert $1;
Z := IntegerRing();                                                          
E := Matrix(Z,4,4,[Trace(xi*cc(a)*b) : b in Basis(O), a in Basis(O)]);
D, C := FrobeniusFormAlternating(E); D;
newb := ElementToSequence(Matrix(O,C)*Matrix(O,4,1,Basis(O)));
SetKantPrecision(O,100);
Abs(Re(Conjugate(xi,2))) lt 10^-10 and Im(Conjugate(xi,2)) gt 0;
assert $1;
Abs(Re(Conjugate(xi,4))) lt 10^-10 and Im(Conjugate(xi,4)) gt 0;
assert $1;
C := ComplexField(100);
BigPM := Matrix(C,2,4,[Conjugate(b,2) : b in newb] cat
                      [Conjugate(b,4) : b in newb]);
tau := Submatrix(BigPM,1,3,2,2)^-1*Submatrix(BigPM,1,1,2,2);
MA := EndomorphismRing(tau); Dimension(MA);
MAGens := SetToSequence(Generators(MA)); MAGens;
MP := [MinimalPolynomial(g): g in MAGens];
IsIsomorphic(NumberField(rep{f: f in MP | Degree(f) gt 1}), CMF);
assert $1;
S := RosenhainInvariants(tau);
P<x> := PolynomialRing(C);
f := x*(x-1)*&*{x-a : a in S};
IC := IgusaClebschInvariants(f);
ICp := [BestApproximation(Re(r),10^50) : r in
         [IC[1]/IC[1], IC[2]/IC[1]^2, IC[3]/IC[1]^3, IC[4]/IC[1]^5]];
ICp;
C1 := HyperellipticCurveFromIgusaClebsch(ICp);
C2 := ReducedWamelenModel(C1);
C2;
P<x> := PolynomialRing(C);
f := -x^5 - 3*x^4 + 2*x^3 + 6*x^2 - 3*x - 1;
A := AnalyticJacobian(f);
IsIsomorphicSmallPeriodMatrices(tau,SmallPeriodMatrix(A));
assert $1;
SetEchoInput(ei);
