"Source: Text/Geometry/Scheme.text";
"Line: 9911";
"Date: Thu Sep 25 14:47:45 2025";
"Main: Fri Sep 26 14:29:19 2025";
// original file: Text/Geometry/Scheme.text, line: 9911
// Example: H122E81 ()
print "Example: H122E81";
ei := GetEchoInput();
SetEchoInput(true);
k := Rationals();
P<x,y,z,t> := ProjectiveSpace(k,3);
M1 := Matrix(CoordinateRing(P),2,3,[y,t,x,t,x,z]);
M2 := Matrix(CoordinateRing(P),2,3,[y,x,t,x,t,z]);
C1 := Scheme(P,Minors(M1,2));
C2 := Scheme(P,Minors(M2,2));
Z := Intersection(C1,C2);
MinimalBasis(Z);
IsCluster(Z);                                                                
assert $1;
Degree(Z);
assert $1 eq 5;
IsReduced(Z);
assert $1;
RationalPoints(Z);
HasPointsOverExtension(Z);
assert $1;
GB := GroebnerBasis(ChangeOrder(Ideal(Z),"lex"));
GB[#GB];
L<w> := ext< k | U.1^2 + U.1 + 1 > where U is PolynomialRing(k);
RationalPoints(Z,L);
HasPointsOverExtension(Z,L);
assert not $1;
C := Union(C1,C2);
C;
SC := SingularPointsOverSplittingField(C);
SC;
Ring(Universe(SC));                   
phi := iso< P -> P | [t,y,z,x],[t,y,z,x] >;
IsAutomorphism(phi);
assert $1;
Ideal(C2) eq Ideal(phi(C1));
assert $1;
Z eq phi(Z);
assert $1;
Ideal(Z) eq Ideal(phi(Z));
assert $1;
S5 := SymmetricGroup(5);
QL := RationalPoints(Z,L);
rho := S5 ! [ Index(QL,phi(p)) : p in QL ];
rho;
GaloisGroup(L);
psi := iso< C -> C | [x,z,y,t],[x,z,y,t] >;
eta := S5 ! [ Index(QL,psi(p)) : p in QL ]; 
eta;
G := sub< S5 | rho,eta >;
#G;
assert $1 eq 4;
SetEchoInput(ei);
