"Source: Text/Ring/RngOrdGal.text";
"Line: 1486";
"Date: Fri Sep 26 12:10:11 2025";
"Main: Fri Sep 26 14:29:19 2025";
// original file: Text/Ring/RngOrdGal.text, line: 1486
// Example: H40E5 ()
print "Example: H40E5";
ei := GetEchoInput();
SetEchoInput(true);
P<x> := PolynomialRing(IntegerRing());
f := x^3-2;
GaloisSplittingField(f);
K, R, G := $1;
K:Maximal;
[x^3 : x in R];
GaloisSplittingField(f:Name := "K");
(K where K := $1):Maximal;
G, r, S := GaloisGroup(f);
GaloisSplittingField(f:Galois := <G, r, S>, 
    Chain := CompositionSeries(G), Name := "K", AllAuto);
(K where K := $1):Maximal;
f := x^10 - 20*x^8 + 149*x^6 - 519*x^4 + 851*x^2 - 529;
G, r, S := GaloisGroup(f);G,r,S;
TransitiveGroupIdentification(G);
TransitiveGroupDescription(G);
time K, R := GaloisSplittingField(f:Name := "K");
K:Maximal;
[ Evaluate(f, x) eq 0 : x in R];
A := NormalSubgroups(G:OrderEqual := 16)[1]`subgroup;
GaloisSubgroup(S, A);
K, D, Reco, Bnd := GaloisSubfieldTower(S, [A, sub<G|>]);
R := SLPolynomialRing(Integers(), 10);
i := R.1;
B := S`max_comp; 
bound := Bnd(B);
rt := [GaloisRoot(i, S:Bound := bound) : i in [1..10]];
con := CartesianProduct(Reverse([x[3]: x in D]));
gamma := [Evaluate(i, PermuteSequence(rt, &*p)) : p in con];
im := Reco(gamma: Bound := B);
time Evaluate(f, im) eq 0;
i := D[1][1]; t := D[1][2];
B := Bound(i, Evaluate(t, S`max_comp));
bound := Bnd(B);
rt := [GaloisRoot(i, S:Bound := bound) : i in [1..10]];
rt := [Evaluate(t, x) : x in rt];
gamma := [Evaluate(i, PermuteSequence(rt, &*p)) : p in con];
im := Reco(gamma : Bound := B);
im;
im eq K.2;
rt := PermuteSequence(rt, Random(G));
gamma := [Evaluate(i, PermuteSequence(rt, &*p)) : p in con];
au := Reco(gamma : Bound := B);
au;
SetEchoInput(ei);
