################################################################### ## examples for curves.gap ##12-5-2004 ################################################################### Read("/home/wdj/gapfiles/curves/curves.gap"); F:=GF(11); R1:=PolynomialRing(F,["a"]);; var1:=IndeterminatesOfPolynomialRing(R1);; a:=var1[1];; b:=X(F,"b",var1); var2:=Concatenation(var1,[b]); R2:=PolynomialRing(F,var2); c:=X(F,"c",var2); var3:=Concatenation(var2,[c]); R3:=PolynomialRing(F,var3); f:=a^2*b+b^5; h:=HomogenizeMultivariatePolynomial(f,R2,R3); DehomogenizeMultivariatePolynomial(h,R3,R2); R4:=PolynomialRing(F,[a,c]); HomogenizeCoordinates([Z(11),Z(11)^2],R4,R3); ## [ Z(11), Z(11)^0, Z(11)^2 ] HomogenizeCoordinates([Z(11),Z(11)^2],R2,R3); ## [ Z(11), Z(11)^2, Z(11)^0 ] cdiv:=[ 1, -2, 1, -1 ]; sdiv:=[ Z(11)^2, Z(11)^3, Z(11)^7, Z(11) ]; crvP1:=AffineCurve(b,R2); div:=DivisorOnAffineCurve(cdiv,sdiv,crvP1); div.coeffs; div.curve; div.support; div1:=DivisorOnAffineCurve([1,2,3,4],[Z(11)^2,Z(11)^3,Z(11)^7,Z(11)],crvP1); DivisorDegree(div1); div2:=DivisorOnAffineCurve([1,2,3,4],[Z(11),Z(11)^2,Z(11)^3,Z(11)^4],crvP1); DivisorDegree(div2); div3:=DivisorAddition(div1,div2); DivisorDegree(div3); DivisorGCD(div1,div2); DivisorIsEffective(div1); DivisorIsEffective(div2); ndiv1:=DivisorNegate(div1); zdiv:=DivisorAddition(div1,ndiv1); DivisorIsZero(zdiv); div1:=DivisorOnAffineCurve([1,2,3,4,5], [Z(11)^2,Z(11)^3,Z(11)^6,Z(11),Z(11)^9],crvP1); div2:=DivisorOnAffineCurve([2,1,3,4,5], [Z(11)^3,Z(11)^2,Z(11)^6,Z(11),Z(11)^9],crvP1); DivisorEqual(div1,div2); Pts:=[[Z(11),-Z(11)]]; crv:=AffineCurve(a+b,R2); OnCurve(Pts,crv); f:=(a^4+Z(11)^6*a^3-a^2+Z(11)^7*a+Z(11)^0)/(a^4+Z(11)^4*a^3+Z(11)*a^2+Z(11)^7*a+Z(11));; divf:=DivisorOfRationalFunction(f,R2); denf:=DenominatorOfRationalFunction(f); RootsOfUPol(denf); numf:=NumeratorOfRationalFunction(f); RootsOfUPol(numf); B:=RiemannRochSpaceBasisP1(divf); 1/f in B; # A:=[[1,2],[3,4]]; h:=MoebiusTransformation(A,R1); var:=IndeterminatesOfPolynomialRing(R1); Value(h,var,Z(11)^0*[7]); A:=Z(11)^0*[[1,2],[3,4]]; ActionMoebiusTransformationOnDivisorDefinedP1(A,div1); A:=Z(11)^0*[[1,2],[1,4]]; ActionMoebiusTransformationOnDivisorDefinedP1(A,div1); agp:=DivisorAutomorphismGroup(div1); time; # #8036 Size(agp); #10 A:=Z(11)^0*[[1,2],[3,4]]; ActionMoebiusTransformationOnFunction(A,f,R2); basis:=RiemannRochSpaceBasisP1(div1); Length(basis); div3:=DivisorOnAffineCurve([1,1,1,1,2], [Z(11)^2,Z(11)^3,Z(11)^6,Z(11),Z(11)^9],crvP1); div4:=DivisorOnAffineCurve([1,2,3,-4],[Z(11)^2,Z(11)^3,Z(11)^6,Z(11)^9],crvP1); div5:=DivisorOnAffineCurve([1,2,3,-5], [Z(11)^2,Z(11)^3,Z(11)^6,Z(11)^9],crvP1); z:=List([1..11],i->1);; w:=div5.support;; C2:=GeneralizedSrivastavaCode(pts,w,z,F); G2:=GeneratorMat(C2);;PutStandardForm(G2);;Display(G2); g:=a^4+a^3+1; C3:=GoppaCode(g,pts); G3:=GeneratorMat(C3);;PutStandardForm(G3);;Display(G3); C1;C2;C3; C2=C3;C1=C3;C1=C2; CoveringRadius(C1); CoveringRadius(C2); CoveringRadius(C3); div:=DivisorOnAffineCurve([1,1,1,1,1], [Z(11)^2,Z(11)^3,Z(11)^6,Z(11),Z(11)^9],crvP1); G:=DivisorAutomorphismGroup(div); time; IdGroup(G); g:=Random(G); rho:=MatrixRepresentationOnRiemannRochSpaceP1(g,div); Display(rho); div:=DivisorOnAffineCurve([1,1,1,1,1], [Z(11)^4,Z(11)^5,Z(11)^7,Z(11)^8,Z(11)^10],crvP1); Gdiv:=DivisorAutomorphismGroup(div); time; H:=Intersection(G,Gdiv); q:=4; F:=GF(q^2); a:=X(F); R1:=PolynomialRing(F,[a]);; var1:=IndeterminatesOfPolynomialRing(R1);; b:=X(F); R2:=PolynomialRing(F,[a,b]); var2:=IndeterminatesOfPolynomialRing(R2);; #R1:=PolynomialRing(F,["a"]);; #R2:=PolynomialRing(R1,["b"]);; crv:=AffineCurve(b^q+b-a^(q+1),R2); OnePointRiemannRochSpaceAtInfinity(-1,crv); OnePointRiemannRochSpaceAtInfinity(0,crv); OnePointRiemannRochSpaceAtInfinity(3,crv); OnePointRiemannRochSpaceAtInfinity(4,crv); OnePointRiemannRochSpaceAtInfinity(7,crv); OnePointRiemannRochSpaceAtInfinity(8,crv); OnePointRiemannRochSpaceAtInfinity(11,crv); OnePointRiemannRochSpaceAtInfinity(12,crv); alpha:=Random(F); K:=CurveFiberFF2(alpha,crv); beta:=Random(K); Pts:=PointsOnAffineCurveFF(crv,F);; Length(Pts); ########################################################## ## ## To use EvaluationCode, need below but then ## Pts:=Difference(Pts,[ [ 0*Z(2^4)^0, 0*Z(2)^0 ] ]); ## q:=4; F:=GF(q^2); R:=PolynomialRing(F,2);; vars:=IndeterminatesOfPolynomialRing(R); x:=vars[1]; y:=vars[2]; crv:=AffineCurve(y^q+y-x^(q+1),R); L:=[ Z(2)^0, x, x^2*y^-1 ]; Pts:=PointsOnAffineCurveFF(crv,F);; P:=Difference(Pts,[[ 0*Z(2^4)^0, 0*Z(2)^0 ]]);; C2:=EvaluationCode(P,L,R); MinimumDistance(C2); ########################################### q:=3; R:=PolynomialRing(F,2);; vars:=IndeterminatesOfPolynomialRing(R); x:=vars[1]; y:=vars[2]; crv:=AffineCurve(y^q+y-x^(q+1),R); Pts:=PointsOnAffineCurveFF(crv,F);; P:=Difference(Pts,[[ 0*Z(3^2)^0, 0*Z(3)^0 ]]);; L42:=[ Z(3)^0, y, x, x^2*y^-1 ]; C2:=EvaluationCode(P,L42,R); MinimumDistance(C2); ##############################################################