"Source: Text/Geometry/Crv.text";
"Line: 3531";
"Date: Thu Sep 25 14:47:45 2025";
"Main: Fri Sep 26 14:29:19 2025";
// original file: Text/Geometry/Crv.text, line: 3531
// Example: H124E23 ()
print "Example: H124E23";
ei := GetEchoInput();
SetEchoInput(true);
P<[x]> := ProjectiveSpace(Rationals(),3);
X054 := Curve(P,[
  x[2]*x[3] - x[1]*x[4], 4*x[1]^2*x[2] + 2*x[1]*x[2]^2 +
      x[2]^3 - x[3]^3 + x[3]^2*x[4] - x[3]*x[4]^2]);
W2 := iso<X054->X054|[1/2*x[4],-x[3],-x[2],2*x[1]],
                [1/2*x[4],-x[3],-x[2],2*x[1]]>;
W27 := iso<X054->X054|
[
    -1/3*x[1] - 1/3*x[2] - 1/3*x[3] - 1/3*x[4],
    -2/3*x[1] - 2/3*x[2] + 1/3*x[3] + 1/3*x[4],
    -2/3*x[1] + 1/3*x[2] - 2/3*x[3] + 1/3*x[4],
    -4/3*x[1] + 2/3*x[2] + 2/3*x[3] - 1/3*x[4]
],
[
    -1/3*x[1] - 1/3*x[2] - 1/3*x[3] - 1/3*x[4],
    -2/3*x[1] - 2/3*x[2] + 1/3*x[3] + 1/3*x[4],
    -2/3*x[1] + 1/3*x[2] - 2/3*x[3] + 1/3*x[4],
    -4/3*x[1] + 2/3*x[2] + 2/3*x[3] - 1/3*x[4]
]>;
// 1. Quotient by <W2>
G := AutomorphismGroup(X054,[W2]);
CG,prj := CurveQuotient(G);
CG;
Genus(CG);
assert $1 eq 2;
// 2. Quotient by <W27>
G := AutomorphismGroup(X054,[W27]);
CG,prj := CurveQuotient(G);
CG;
Genus(CG);
assert $1 eq 1;
// 3. Quotient by <W2,W27>
G := AutomorphismGroup(X054,[W2,W27]);
CG,prj := CurveQuotient(G);
CG;
Ambient(CG);
SetEchoInput(ei);
