// We compute the fiber product of j = 1728+t^2 and // X_{9J^{0}-9a}. F := FunctionField(Rationals(),2); j1 := 1728+t^2; c9 := (j9^3 - 3*j9 + 1)/(j9^2 - j9); b3 := c9^3; j2 := (b3+3)^3*(b3+27)/b3; pol := Numerator(j1-j2); C := Curve(AffineSpace(Rationals(),2),pol); // C2 is the fiber product. C2 := ProjectiveClosure(C); FF := FunctionField(C2); jmap := 1728+FF.1^2; Genus(C2); // So C2 is geometrically hyperelliptic chk, H, mp := IsHyperelliptic(C); H2, mp2 := SimplifiedModel(H); J := Jacobian(H2); TorsionSubgroup(J); RankBounds(J); // The rank of J(C2) is zero. ratpoints := Chabauty0(J); // ratpoints is the provably complete list of rational points on H2. // So H2 has precisely 3 rational points. pt := C2![1,0,0]; plac := Places(pt); printf "The singular point %o has %o places above it.\n",pt,#plac; pt1 := plac[1]; pt2 := plac[2]; pt3 := plac[4]; Evaluate(jmap,pt1); Evaluate(jmap,pt2); Evaluate(jmap,pt3); // All the rational points are cusps.