"Source: Text/Ring/Char.text";
"Line: 455";
"Date: Fri Sep 26 12:10:11 2025";
"Main: Fri Sep 26 14:29:19 2025";
// original file: Text/Ring/Char.text, line: 455
// Example: H43E2 ()
print "Example: H43E2";
ei := GetEchoInput();
SetEchoInput(true);
K := QuadraticField(-23);
p3 := Factorization(3*Integers(K))[1][1];
G1 := HeckeCharacterGroup(p3^1);
G2 := HeckeCharacterGroup(p3^2);
G3 := HeckeCharacterGroup(p3^3);
assert Extend(G1.1,G3) eq G3.1^9;
assert Restrict(G2.1^3,G1) eq G1.1;
assert Extend(G1.1,p3^3) eq Extend(G2.1^3,p3^3);
assert Restrict(Restrict(G3.1^3,p3^2)^3,p3) eq G1.1;
assert G1 eq HilbertCharacterSubgroup(G1);
assert Restrict(HilbertCharacterSubgroup(G2),G1) eq G1;
assert Restrict(sub<G2|[G2.1^3]>,p3) eq G1;
assert Extend(G2,G3) eq sub<G3|[G3.1^3]>;
assert Extend(G1,p3^2) eq Restrict(sub<G3|[G3.1^9]>,G2);
chi := KroneckerCharacter(-7);
K := QuadraticField(5);
theta := NormInduction(K,chi);
Type(theta);
Modulus(theta); assert IsPrimitive(theta);
cbrt := Parent(theta).1;
assert cbrt^3 eq theta; // Order(cbrt) is 6
SetTargetRing(~cbrt,GF(13)!2); // choice of gen
cbrt(K.1); // now an element of GF(13)
DirichletRestriction(cbrt)(K.1);
SetEchoInput(ei);
