"Source: Text/Commut/RngInvar.text";
"Line: 1030";
"Date: Thu Sep 25 14:47:46 2025";
"Main: Fri Sep 26 14:29:19 2025";
// original file: Text/Commut/RngInvar.text, line: 1030
// Example: H120E9 ()
print "Example: H120E9";
ei := GetEchoInput();
SetEchoInput(true);
function deg_summary(B)
    degs := [TotalDegree(f): f in B];
    return [#[j: j in degs | j eq d]: d in [1 .. Max(degs)]];
end function;
d := 7;
time for i := 1 to NumberOfTransitiveGroups(d) do
    G := TransitiveGroup(d, i);
    R := InvariantRing(G, RationalField());
    F := FundamentalInvariants(R);
    printf "%o: Order: %o, Degrees: %o\n", i, #G, deg_summary(F);
end for;
d := 7;
time for i := 1 to NumberOfTransitiveGroups(d) do
    G := TransitiveGroup(d, i);
    p := rep{p: p in [2 .. #G] | IsPrime(p) and #G mod p ne 0};
    R := InvariantRing(G, GF(p));
    F := FundamentalInvariants(R);
    printf "%o: Order: %o, Degrees: %o\n", i, #G, deg_summary(F);
end for;
d := 8;
time for i := 1 to NumberOfTransitiveGroups(d) do
    G := TransitiveGroup(d, i);
    p := rep{p: p in [2 .. #G] | IsPrime(p) and #G mod p ne 0};
    R := InvariantRing(G, GF(p));
    F := FundamentalInvariants(R);
    printf "%o: Order: %o, Degrees: %o\n", i, #G, deg_summary(F);
end for;
SetEchoInput(ei);
