"Source: Text/Geometry/Crv.text";
"Line: 6539";
"Date: Thu Sep 25 14:47:45 2025";
"Main: Fri Sep 26 14:29:19 2025";
// original file: Text/Geometry/Crv.text, line: 6539
// Example: H124E39 ()
print "Example: H124E39";
ei := GetEchoInput();
SetEchoInput(true);
F2 := FiniteField(2);
F4<t4> := FiniteField(4);
F8<t8> := FiniteField(8);
P<x,y,z> := ProjectiveSpace(F2,2);
C := Curve(P,x^3*y + y^3*z + z^3*x);
C8<a,b,c> := BaseChange(C,F8);
C8;
#RationalPoints(C8);
assert $1 eq 24;
L := Curve(P,x+y+z); 
IntersectionPoints(C,L);
C4 := BaseChange(C,FiniteField(4));
P4 := Ambient(C4);
L4 := BaseChange(L,P4);
IntersectionPoints(C4,L4);
[ IntersectionNumber(C4,L4,p) : p in $1 ];
FF8 := FunctionField(C8);
D := Divisor(C8, FF8!(a/c + b/c + 1));
D;
Decomposition(D);
D;
p := Support(D)[2];
Degree(p);
assert $1 eq 2;
G := 3*p;
S := Places(C8,1);
#S;
assert $1 eq 24;
AGC := AlgebraicGeometricCode(S,G);
Dimension(AGC);
assert $1 eq 4;
Dual(AGC);
SetEchoInput(ei);
