"Source: Text/Ring/FldFunAb.text";
"Line: 93";
"Date: Fri Sep 26 12:10:11 2025";
"Main: Fri Sep 26 14:29:19 2025";
// original file: Text/Ring/FldFunAb.text, line: 93
// Example: H47E1 ()
print "Example: H47E1";
ei := GetEchoInput();
SetEchoInput(true);
k<w> := GF(4);
kt<t> := PolynomialRing(k);
ktx<x> := PolynomialRing(kt);
K := FunctionField(x^3-w*t*x^2+x+t);
lp := Places(K, 2);
D1 := 4*lp[2]+2*lp[6];
D2 := &+Support(D1);
G1, mG1 := RayResidueRing(D1); G1;
G2, mG2 := RayResidueRing(D2); G2;
h := hom<G1 -> G2 | [G1.i@mG1@@mG2 : i in [1..Ngens(G1)]]>;
Image(h) eq G2;
assert $1;
[ h(G1.i) : i in [1..Ngens(G1)]];
R1, mR1 := RayClassGroup(D1);
R2, mR2 := RayClassGroup(D2); R2;
hR := hom<R1 -> R2 | [R1.i@mR1@@mR2 : i in [1..Ngens(R1)]]>;
Image(hR);
$1 eq R2;
assert $1;
C, mC := ClassGroup(K);
h1 := map<K -> G2 | x :-> (K!x)@@mG2>;
h2 := hom<G2 -> R2 | [ G2.i@mG2@@mR2 : i in [1..Ngens(G2)]]>;
h3 := hom<R2 -> C | [ R2.i@mR2@@mC : i in [1..Ngens(R2)]]>;
sub<G2 | [h1(x) : x in k | x ne 0]> eq Kernel(h2);
Image(h2) eq Kernel(h3);
Image(h3) eq C;
SetEchoInput(ei);
