"Source: Text/Ring/FldAb.text";
"Line: 1315";
"Date: Fri Sep 26 12:10:11 2025";
"Main: Fri Sep 26 14:29:19 2025";
// original file: Text/Ring/FldAb.text, line: 1315
// Example: H41E7 ()
print "Example: H41E7";
ei := GetEchoInput();
SetEchoInput(true);
_<x> := PolynomialRing(Integers());
K := NumberField(x^4+4*x^3+7*x^2+2*x+1);
f := Polynomial([1, 1-K.1, 1+K.1+K.1^2, 1]);
E := ext<K|f>; // E/K is cyclic of deg 3
G := HeckeCharacterGroup(E); psi:=G.1;
A := AbelianExtension(psi); // either psi or G
assert IsIsomorphic(E,NumberField(A));
L := LSeries(psi);
CFENew(L);
K := QuadraticField(-4027);
ClassGroup(K);
G := HeckeCharacterGroup(1*Integers(K));
L := AbelianExtension(G);
assert G eq HeckeCharacterGroup(L);
assert IsIsomorphic(HilbertClassField(K),NumberField(L));
L1 := AbelianExtension(G.1); // L1/K cyclic deg 3
L2 := AbelianExtension(G.2); // L2/K cyclic deg 3
assert L1*L2 eq L;
SetEchoInput(ei);
