PAFF
: Package for Algebraic Function Fields in one variable
by Gaétan Haché
PAFF is a package written in Axiom and one of its many purpose is to construct geometric Goppa codes (also called algebraic geometric codes or AG-codes). I wrote this package in the frame work of my doctorate thesis on "Effective construction of geometric codes": this thesis was done at Inria in Rocquencourt at project CODES and under the direction of Dominique LeBrigand? at Université Pierre et Marie Curie (Paris 6). Here is a
résumé
of my thesis.
It is well known that the most difficult part in constructing AG-code is the computation of a basis of the vector space "L(D)" where D is a divisor of the function field of an irreducible curve. To compute such a basis, PAFF used the Brill-Noether algorithm which was generalized to any plane curve by D. LeBrigand and J.J. Risler (see [7] ). In [4] you will find more details about the algorithmic aspect of the Brill-Noether algorithm. Also, if you prefer, as I do, a strictly algebraic approach, see [3]. This is the approach I used in my thesis ([4]) and of course this is where you will find complete details about the implementation of the algorithm. The algebraic approach use the theory of algebraic function field in one variable : you will find in [8] a very good introduction to this theory and AG-codes.
It is important to notice that PAFF can be used for most computation related to the function field of an irreducible plane curve. For example, you can compute the genus, find all places above all the singular points, compute the adjunction divisor and of course compute a basis of the vector space L(D) for any divisor D of the function field of the curve.
There is also the package PAFFFF which is especially designed to be used over finite fields. This package is essentially the same as PAFF, except that the computation are done over "dynamic extensions" of the ground field. For this, I used a simplify version of the notion of dynamic algebraic closure as proposed by D. Duval (see [1]).
References
- Duval (D.). -- Évaluation dynamique et clôture algébrique en Axiom. Journal of Pure and Applied Algebra, no99, 1995, pp. 267--295.
- Garcia (A.) et Stichtenoth (H.). -- A tower of Artin-Schreier extensions of function fields attaining the Drinfeld-Vladut bound. Invent. Math., vol. 121, 1995, pp. 211--222.
- Haché (G.). -- Computation in algebraic function fields for effective construction of algebraic-geometric codes. Lecture Notes in Computer Science, vol. 948, 1995, pp. 262--278.
- Haché (G.). -- Construction effective des codes géométriques. -- Thèse de doctorat de l'Université Pierre et Marie Curie (Paris 6), Septembre 1996.
- Haché (G.) et Le Brigand (D.). -- Effective construction of algebraic geometry codes. IEEE Transaction on Information Theory, vol. 41, n'27 6, November 1995, pp. 1615--1628.
- Huang (M.D.) et Ierardi (D.). -- Efficient algorithms for Riemann-Roch problem and for addition in the jacobian of a curve. In: Proceedings 32nd Annual Symposium on Foundations of Computer Sciences. IEEE Comput. Soc. Press, pp. 678--687.
- Le Brigand (D.) et Risler (J.J.). -- Algorithme de Brill-Noether et codes de Goppa. Bull. Soc. Math. France, vol. 116, 1988, pp. 231--253.
- Stichtenoth (H.). -- Algebraic function fields and codes. -- Springer-Verlag, 1993, University Text.
Example 1
This example compute the genus of the projective plane curve defined by:
5 2 3 4
X + Y Z + Y Z = 0
over the field GF(2).
First load the PAFF library (must be done twice).
axiom
)lib )dir PAFF/spad
UnivariateTaylorSeriesCZero is now explicitly exposed in frame
initial
UnivariateTaylorSeriesCZero will be automatically loaded when needed
from /var/zope2/var/LatexWiki/PAFF/spad/UTSZ.NRLIB/code
SetCategoryWithDegree is now explicitly exposed in frame initial
SetCategoryWithDegree will be automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/SETCATD.NRLIB/code
RootsFindingPackage is now explicitly exposed in frame initial
RootsFindingPackage will be automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/RFP.NRLIB/code
ProjectiveSpaceCategory is now explicitly exposed in frame initial
ProjectiveSpaceCategory will be automatically loaded when needed
from /var/zope2/var/LatexWiki/PAFF/spad/PRSPCAT.NRLIB/code
ProjectiveSpace is now explicitly exposed in frame initial
ProjectiveSpace will be automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/PROJSP.NRLIB/code
ProjectivePlaneOverPseudoAlgebraicClosureOfFiniteField is now
explicitly exposed in frame initial
ProjectivePlaneOverPseudoAlgebraicClosureOfFiniteField will be
automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/PROJPLPS.NRLIB/code
ProjectivePlane is now explicitly exposed in frame initial
ProjectivePlane will be automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/PROJPL.NRLIB/code
ProjectiveAlgebraicSetPackage is now explicitly exposed in frame
initial
ProjectiveAlgebraicSetPackage will be automatically loaded when
needed from
/var/zope2/var/LatexWiki/PAFF/spad/PRJALGPK.NRLIB/code
PolynomialPackageForCurve is now explicitly exposed in frame initial
PolynomialPackageForCurve will be automatically loaded when needed
from /var/zope2/var/LatexWiki/PAFF/spad/PLPKCRV.NRLIB/code
Plcs is now explicitly exposed in frame initial
Plcs will be automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/PLCS.NRLIB/code
PlacesOverPseudoAlgebraicClosureOfFiniteField is now explicitly
exposed in frame initial
PlacesOverPseudoAlgebraicClosureOfFiniteField will be automatically
loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/PLACESPS.NRLIB/code
PlacesCategory is now explicitly exposed in frame initial
PlacesCategory will be automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/PLACESC.NRLIB/code
Places is now explicitly exposed in frame initial
Places will be automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/PLACES.NRLIB/code
PackageForPoly is now explicitly exposed in frame initial
PackageForPoly will be automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/PFORP.NRLIB/code
ParametrizationPackage is now explicitly exposed in frame initial
ParametrizationPackage will be automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/PARAMP.NRLIB/code
PackageForAlgebraicFunctionFieldOverFiniteField is now explicitly
exposed in frame initial
PackageForAlgebraicFunctionFieldOverFiniteField will be
automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/PAFFFF.NRLIB/code
PackageForAlgebraicFunctionField is now explicitly exposed in frame
initial
PackageForAlgebraicFunctionField will be automatically loaded when
needed from /var/zope2/var/LatexWiki/PAFF/spad/PAFF.NRLIB/code
PseudoAlgebraicClosureOfRationalNumberCategory is now explicitly
exposed in frame initial
PseudoAlgebraicClosureOfRationalNumberCategory will be automatically
loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/PACRATC.NRLIB/code
PseudoAlgebraicClosureOfRationalNumber is now explicitly exposed in
frame initial
PseudoAlgebraicClosureOfRationalNumber will be automatically loaded
when needed from
/var/zope2/var/LatexWiki/PAFF/spad/PACRAT.NRLIB/code
PseudoAlgebraicClosureOfPerfectFieldCategory is now explicitly
exposed in frame initial
PseudoAlgebraicClosureOfPerfectFieldCategory will be automatically
loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/PACPERC.NRLIB/code
PseudoAlgebraicClosureOfFiniteField is now explicitly exposed in
frame initial
PseudoAlgebraicClosureOfFiniteField will be automatically loaded
when needed from
/var/zope2/var/LatexWiki/PAFF/spad/PACOFF.NRLIB/code
PseudoAlgebraicClosureOfFiniteFieldCategory is now explicitly
exposed in frame initial
PseudoAlgebraicClosureOfFiniteFieldCategory will be automatically
loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/PACFFC.NRLIB/code
PseudoAlgebraicClosureOfAlgExtOfRationalNumberCategory is now
explicitly exposed in frame initial
PseudoAlgebraicClosureOfAlgExtOfRationalNumberCategory will be
automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/PACEXTC.NRLIB/code
PseudoAlgebraicClosureOfAlgExtOfRationalNumber is now explicitly
exposed in frame initial
PseudoAlgebraicClosureOfAlgExtOfRationalNumber will be automatically
loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/PACEXT.NRLIB/code
NeitherSparseOrDensePowerSeries is now explicitly exposed in frame
initial
NeitherSparseOrDensePowerSeries will be automatically loaded when
needed from /var/zope2/var/LatexWiki/PAFF/spad/NSDPS.NRLIB/code
NewtonPolygon is now explicitly exposed in frame initial
NewtonPolygon will be automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/NPOLYGON.NRLIB/code
LocalParametrizationOfSimplePointPackage is now explicitly exposed
in frame initial
LocalParametrizationOfSimplePointPackage will be automatically
loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/LPARSPT.NRLIB/code
LinesOpPack is now explicitly exposed in frame initial
LinesOpPack will be automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/LOP.NRLIB/code
LocalPowerSeriesCategory is now explicitly exposed in frame initial
LocalPowerSeriesCategory will be automatically loaded when needed
from /var/zope2/var/LatexWiki/PAFF/spad/LOCPOWC.NRLIB/code
LinearSystemFromPowerSeriesPackage is now explicitly exposed in
frame initial
LinearSystemFromPowerSeriesPackage will be automatically loaded when
needed from /var/zope2/var/LatexWiki/PAFF/spad/LISYSER.NRLIB/code
InterpolateFormsPackage is now explicitly exposed in frame initial
InterpolateFormsPackage will be automatically loaded when needed
from /var/zope2/var/LatexWiki/PAFF/spad/INTFRSP.NRLIB/code
InterfaceGroebnerPackage is now explicitly exposed in frame initial
InterfaceGroebnerPackage will be automatically loaded when needed
from /var/zope2/var/LatexWiki/PAFF/spad/INTERGB.NRLIB/code
IntersectionDivisorPackage is now explicitly exposed in frame
initial
IntersectionDivisorPackage will be automatically loaded when needed
from /var/zope2/var/LatexWiki/PAFF/spad/INTDIVP.NRLIB/code
InfinitlyClosePoint is now explicitly exposed in frame initial
InfinitlyClosePoint will be automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/INFCLSPT.NRLIB/code
InfinitlyClosePointOverPseudoAlgebraicClosureOfFiniteField is now
explicitly exposed in frame initial
InfinitlyClosePointOverPseudoAlgebraicClosureOfFiniteField will be
automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/INFCLSPS.NRLIB/code
InfinitlyClosePointCategory is now explicitly exposed in frame
initial
InfinitlyClosePointCategory will be automatically loaded when needed
from /var/zope2/var/LatexWiki/PAFF/spad/INFCLCT.NRLIB/code
InfClsPt is now explicitly exposed in frame initial
InfClsPt will be automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/ICP.NRLIB/code
GeneralPackageForAlgebraicFunctionField is now explicitly exposed in
frame initial
GeneralPackageForAlgebraicFunctionField will be automatically loaded
when needed from
/var/zope2/var/LatexWiki/PAFF/spad/GPAFF.NRLIB/code
FiniteFieldSquareFreeDecomposition is now explicitly exposed in
frame initial
FiniteFieldSquareFreeDecomposition will be automatically loaded when
needed from /var/zope2/var/LatexWiki/PAFF/spad/FFSQFR.NRLIB/code
FiniteFieldFactorizationWithSizeParseBySideEffect is now explicitly
exposed in frame initial
FiniteFieldFactorizationWithSizeParseBySideEffect will be
automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/FFFACTSE.NRLIB/code
FactorisationOverPseudoAlgebraicClosureOfRationalNumber is now
explicitly exposed in frame initial
FactorisationOverPseudoAlgebraicClosureOfRationalNumber will be
automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/FACTRN.NRLIB/code
FactorisationOverPseudoAlgebraicClosureOfAlgExtOfRationalNumber is
now explicitly exposed in frame initial
FactorisationOverPseudoAlgebraicClosureOfAlgExtOfRationalNumber will
be automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/FACTEXT.NRLIB/code
DesingTreePackage is now explicitly exposed in frame initial
DesingTreePackage will be automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/DTP.NRLIB/code
DesingTree is now explicitly exposed in frame initial
DesingTree will be automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/DSTREE.NRLIB/code
DesingTreeCategory is now explicitly exposed in frame initial
DesingTreeCategory will be automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/DSTRCAT.NRLIB/code
DivisorCategory is now explicitly exposed in frame initial
DivisorCategory will be automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/DIVCAT.NRLIB/code
Divisor is now explicitly exposed in frame initial
Divisor will be automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/DIV.NRLIB/code
BlowUpPackage is now explicitly exposed in frame initial
BlowUpPackage will be automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/BLUPPACK.NRLIB/code
BlowUpWithQuadTrans is now explicitly exposed in frame initial
BlowUpWithQuadTrans will be automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/BLQT.NRLIB/code
BlowUpMethodCategory is now explicitly exposed in frame initial
BlowUpMethodCategory will be automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/BLMETCT.NRLIB/code
BlowUpWithHamburgerNoether is now explicitly exposed in frame
initial
BlowUpWithHamburgerNoether will be automatically loaded when needed
from /var/zope2/var/LatexWiki/PAFF/spad/BLHN.NRLIB/code
AffineSpaceCategory is now explicitly exposed in frame initial
AffineSpaceCategory will be automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/AFSPCAT.NRLIB/code
AffineSpace is now explicitly exposed in frame initial
AffineSpace will be automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/AFFSP.NRLIB/code
AffinePlaneOverPseudoAlgebraicClosureOfFiniteField is now explicitly
exposed in frame initial
AffinePlaneOverPseudoAlgebraicClosureOfFiniteField will be
automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/AFFPLPS.NRLIB/code
AffinePlane is now explicitly exposed in frame initial
AffinePlane will be automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/AFFPL.NRLIB/code
AffineAlgebraicSetComputeWithResultant is now explicitly exposed in
frame initial
AffineAlgebraicSetComputeWithResultant will be automatically loaded
when needed from
/var/zope2/var/LatexWiki/PAFF/spad/AFALGRES.NRLIB/code
AffineAlgebraicSetComputeWithGroebnerBasis is now explicitly exposed
in frame initial
AffineAlgebraicSetComputeWithGroebnerBasis will be automatically
loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/AFALGGRO.NRLIB/code
axiom
)lib )dir PAFF/spad
UnivariateTaylorSeriesCZero is already explicitly exposed in frame
initial
UnivariateTaylorSeriesCZero will be automatically loaded when needed
from /var/zope2/var/LatexWiki/PAFF/spad/UTSZ.NRLIB/code
SetCategoryWithDegree is already explicitly exposed in frame initial
SetCategoryWithDegree will be automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/SETCATD.NRLIB/code
RootsFindingPackage is already explicitly exposed in frame initial
RootsFindingPackage will be automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/RFP.NRLIB/code
ProjectiveSpaceCategory is already explicitly exposed in frame
initial
ProjectiveSpaceCategory will be automatically loaded when needed
from /var/zope2/var/LatexWiki/PAFF/spad/PRSPCAT.NRLIB/code
ProjectiveSpace is already explicitly exposed in frame initial
ProjectiveSpace will be automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/PROJSP.NRLIB/code
ProjectivePlaneOverPseudoAlgebraicClosureOfFiniteField is already
explicitly exposed in frame initial
ProjectivePlaneOverPseudoAlgebraicClosureOfFiniteField will be
automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/PROJPLPS.NRLIB/code
ProjectivePlane is already explicitly exposed in frame initial
ProjectivePlane will be automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/PROJPL.NRLIB/code
ProjectiveAlgebraicSetPackage is already explicitly exposed in frame
initial
ProjectiveAlgebraicSetPackage will be automatically loaded when
needed from
/var/zope2/var/LatexWiki/PAFF/spad/PRJALGPK.NRLIB/code
PolynomialPackageForCurve is already explicitly exposed in frame
initial
PolynomialPackageForCurve will be automatically loaded when needed
from /var/zope2/var/LatexWiki/PAFF/spad/PLPKCRV.NRLIB/code
Plcs is already explicitly exposed in frame initial
Plcs will be automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/PLCS.NRLIB/code
PlacesOverPseudoAlgebraicClosureOfFiniteField is already explicitly
exposed in frame initial
PlacesOverPseudoAlgebraicClosureOfFiniteField will be automatically
loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/PLACESPS.NRLIB/code
PlacesCategory is already explicitly exposed in frame initial
PlacesCategory will be automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/PLACESC.NRLIB/code
Places is already explicitly exposed in frame initial
Places will be automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/PLACES.NRLIB/code
PackageForPoly is already explicitly exposed in frame initial
PackageForPoly will be automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/PFORP.NRLIB/code
ParametrizationPackage is already explicitly exposed in frame
initial
ParametrizationPackage will be automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/PARAMP.NRLIB/code
PackageForAlgebraicFunctionFieldOverFiniteField is already
explicitly exposed in frame initial
PackageForAlgebraicFunctionFieldOverFiniteField will be
automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/PAFFFF.NRLIB/code
PackageForAlgebraicFunctionField is already explicitly exposed in
frame initial
PackageForAlgebraicFunctionField will be automatically loaded when
needed from /var/zope2/var/LatexWiki/PAFF/spad/PAFF.NRLIB/code
PseudoAlgebraicClosureOfRationalNumberCategory is already explicitly
exposed in frame initial
PseudoAlgebraicClosureOfRationalNumberCategory will be automatically
loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/PACRATC.NRLIB/code
PseudoAlgebraicClosureOfRationalNumber is already explicitly exposed
in frame initial
PseudoAlgebraicClosureOfRationalNumber will be automatically loaded
when needed from
/var/zope2/var/LatexWiki/PAFF/spad/PACRAT.NRLIB/code
PseudoAlgebraicClosureOfPerfectFieldCategory is already explicitly
exposed in frame initial
PseudoAlgebraicClosureOfPerfectFieldCategory will be automatically
loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/PACPERC.NRLIB/code
PseudoAlgebraicClosureOfFiniteField is already explicitly exposed in
frame initial
PseudoAlgebraicClosureOfFiniteField will be automatically loaded
when needed from
/var/zope2/var/LatexWiki/PAFF/spad/PACOFF.NRLIB/code
PseudoAlgebraicClosureOfFiniteFieldCategory is already explicitly
exposed in frame initial
PseudoAlgebraicClosureOfFiniteFieldCategory will be automatically
loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/PACFFC.NRLIB/code
PseudoAlgebraicClosureOfAlgExtOfRationalNumberCategory is already
explicitly exposed in frame initial
PseudoAlgebraicClosureOfAlgExtOfRationalNumberCategory will be
automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/PACEXTC.NRLIB/code
PseudoAlgebraicClosureOfAlgExtOfRationalNumber is already explicitly
exposed in frame initial
PseudoAlgebraicClosureOfAlgExtOfRationalNumber will be automatically
loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/PACEXT.NRLIB/code
NeitherSparseOrDensePowerSeries is already explicitly exposed in
frame initial
NeitherSparseOrDensePowerSeries will be automatically loaded when
needed from /var/zope2/var/LatexWiki/PAFF/spad/NSDPS.NRLIB/code
NewtonPolygon is already explicitly exposed in frame initial
NewtonPolygon will be automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/NPOLYGON.NRLIB/code
LocalParametrizationOfSimplePointPackage is already explicitly
exposed in frame initial
LocalParametrizationOfSimplePointPackage will be automatically
loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/LPARSPT.NRLIB/code
LinesOpPack is already explicitly exposed in frame initial
LinesOpPack will be automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/LOP.NRLIB/code
LocalPowerSeriesCategory is already explicitly exposed in frame
initial
LocalPowerSeriesCategory will be automatically loaded when needed
from /var/zope2/var/LatexWiki/PAFF/spad/LOCPOWC.NRLIB/code
LinearSystemFromPowerSeriesPackage is already explicitly exposed in
frame initial
LinearSystemFromPowerSeriesPackage will be automatically loaded when
needed from /var/zope2/var/LatexWiki/PAFF/spad/LISYSER.NRLIB/code
InterpolateFormsPackage is already explicitly exposed in frame
initial
InterpolateFormsPackage will be automatically loaded when needed
from /var/zope2/var/LatexWiki/PAFF/spad/INTFRSP.NRLIB/code
InterfaceGroebnerPackage is already explicitly exposed in frame
initial
InterfaceGroebnerPackage will be automatically loaded when needed
from /var/zope2/var/LatexWiki/PAFF/spad/INTERGB.NRLIB/code
IntersectionDivisorPackage is already explicitly exposed in frame
initial
IntersectionDivisorPackage will be automatically loaded when needed
from /var/zope2/var/LatexWiki/PAFF/spad/INTDIVP.NRLIB/code
InfinitlyClosePoint is already explicitly exposed in frame initial
InfinitlyClosePoint will be automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/INFCLSPT.NRLIB/code
InfinitlyClosePointOverPseudoAlgebraicClosureOfFiniteField is
already explicitly exposed in frame initial
InfinitlyClosePointOverPseudoAlgebraicClosureOfFiniteField will be
automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/INFCLSPS.NRLIB/code
InfinitlyClosePointCategory is already explicitly exposed in frame
initial
InfinitlyClosePointCategory will be automatically loaded when needed
from /var/zope2/var/LatexWiki/PAFF/spad/INFCLCT.NRLIB/code
InfClsPt is already explicitly exposed in frame initial
InfClsPt will be automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/ICP.NRLIB/code
GeneralPackageForAlgebraicFunctionField is already explicitly
exposed in frame initial
GeneralPackageForAlgebraicFunctionField will be automatically loaded
when needed from
/var/zope2/var/LatexWiki/PAFF/spad/GPAFF.NRLIB/code
FiniteFieldSquareFreeDecomposition is already explicitly exposed in
frame initial
FiniteFieldSquareFreeDecomposition will be automatically loaded when
needed from /var/zope2/var/LatexWiki/PAFF/spad/FFSQFR.NRLIB/code
FiniteFieldFactorizationWithSizeParseBySideEffect is already
explicitly exposed in frame initial
FiniteFieldFactorizationWithSizeParseBySideEffect will be
automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/FFFACTSE.NRLIB/code
FactorisationOverPseudoAlgebraicClosureOfRationalNumber is already
explicitly exposed in frame initial
FactorisationOverPseudoAlgebraicClosureOfRationalNumber will be
automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/FACTRN.NRLIB/code
FactorisationOverPseudoAlgebraicClosureOfAlgExtOfRationalNumber is
already explicitly exposed in frame initial
FactorisationOverPseudoAlgebraicClosureOfAlgExtOfRationalNumber will
be automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/FACTEXT.NRLIB/code
DesingTreePackage is already explicitly exposed in frame initial
DesingTreePackage will be automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/DTP.NRLIB/code
DesingTree is already explicitly exposed in frame initial
DesingTree will be automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/DSTREE.NRLIB/code
DesingTreeCategory is already explicitly exposed in frame initial
DesingTreeCategory will be automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/DSTRCAT.NRLIB/code
DivisorCategory is already explicitly exposed in frame initial
DivisorCategory will be automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/DIVCAT.NRLIB/code
Divisor is already explicitly exposed in frame initial
Divisor will be automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/DIV.NRLIB/code
BlowUpPackage is already explicitly exposed in frame initial
BlowUpPackage will be automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/BLUPPACK.NRLIB/code
BlowUpWithQuadTrans is already explicitly exposed in frame initial
BlowUpWithQuadTrans will be automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/BLQT.NRLIB/code
BlowUpMethodCategory is already explicitly exposed in frame initial
BlowUpMethodCategory will be automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/BLMETCT.NRLIB/code
BlowUpWithHamburgerNoether is already explicitly exposed in frame
initial
BlowUpWithHamburgerNoether will be automatically loaded when needed
from /var/zope2/var/LatexWiki/PAFF/spad/BLHN.NRLIB/code
AffineSpaceCategory is already explicitly exposed in frame initial
AffineSpaceCategory will be automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/AFSPCAT.NRLIB/code
AffineSpace is already explicitly exposed in frame initial
AffineSpace will be automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/AFFSP.NRLIB/code
AffinePlaneOverPseudoAlgebraicClosureOfFiniteField is already
explicitly exposed in frame initial
AffinePlaneOverPseudoAlgebraicClosureOfFiniteField will be
automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/AFFPLPS.NRLIB/code
AffinePlane is already explicitly exposed in frame initial
AffinePlane will be automatically loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/AFFPL.NRLIB/code
AffineAlgebraicSetComputeWithResultant is already explicitly exposed
in frame initial
AffineAlgebraicSetComputeWithResultant will be automatically loaded
when needed from
/var/zope2/var/LatexWiki/PAFF/spad/AFALGRES.NRLIB/code
AffineAlgebraicSetComputeWithGroebnerBasis is already explicitly
exposed in frame initial
AffineAlgebraicSetComputeWithGroebnerBasis will be automatically
loaded when needed from
/var/zope2/var/LatexWiki/PAFF/spad/AFALGGRO.NRLIB/code
axiom
-- First we define the field GF(2).
K:=PF 2
Type: Domain
axiom
-- Next, we define the polynomial ring over which
-- the polynomial is defined.
-- You have the choice for the name of
-- the three variables (always three !!) but
-- the domain DMP must be used.
-- DMP is an AXIOM domain and stands for DistributedMultivariatePolymnomial.
R:=DMP([X,Y,Z],K)
Type: Domain
axiom
-- Then we tell to the package PAFF over which field the computation must be done.
-- Also, you must give the same list of variables which is used to defined the polynomial.
-- BLQT Stand for BlowUpWithQuadTrans which specified the method
-- used for blowing-up (there will be another one (when ?)
-- using similar thechnics to Hamburger-Nother expansions).
P:=PAFF(K,[X,Y,Z],BLQT)
Type: Domain
axiom
-- We defined now the polynomial of the curve.
C:R:=X**5 + Y**2*Z**3+Y*Z**4
Type: DistributedMultivariatePolynomial
?([X,Y,Z]
?,PrimeField
? 2)
axiom
-- We give it to the package PAFF(K,[X,Y,Z]) which was assigned to the
-- variable "P"
setCurve(C)$P
Type: DistributedMultivariatePolynomial
?([X,Y,Z]
?,PrimeField
? 2)
axiom
-- To compute the genus of the curve, simply do
genus()$P
axiom
-- To compute the genus, the package use the genus formula
-- given by the blowin-up theory. That means that the singular points
-- has been computed.
singularPoints()$P
Type: List ProjectivePlane
? PrimeField
? 2
axiom
-- The results of singularPoints()$P is the list of all
-- the singular points of the curve in the projective plane.
--
--
-- The Brill-Noether algorithm use the notion of "adjunction divisor".
-- To compute it simply do "adjunctionDivisor()$P"
-- You should obtained something like
--
-- 1
-- 8 %I1
--
-- This is a divisor of the function field of the curve, consisting
-- of 8 times the place %I1 which is of degree 1 (the exponant).
-- The place %I1 is a place above a singular point (the unique one for this example).
-- This mean that the "desingularization tree" has been computed. See next step.
adjunctionDivisor()$P
Type: Divisor Places PrimeField
? 2
axiom
-- To compute the "desingularization tree" simply do:
-- desingTree()$P
--
-- For this example, you should obtained from desingTree()$P
--
-- ["UU.."]
--
-- This a list of desingularization tree for each singular point.
-- Here there is only one, which is "UU..".
-- To interpret the result, you have to do some manual drawing.
-- The letter U means "Up", and a . (dot) means "down".
--
--
--
-- o
-- |
-- ^ | |
-- | | | .
-- U | | |
-- | | v
-- |
-- |
-- o
-- |
-- ^ | |
-- | | | .
-- U | | |
-- | | v
-- |
-- |
-- o
--
desingTree()$P
Type: List DesingTree
? InfClsPt
?(PrimeField
? 2,[X,Y,Z]
?,BlowUpWithQuadTrans
?)
axiom
-- To see more information about the desingularization trees,
-- issue the command, fullDesTree()$P, and recall the command
-- desingTree()$P. Here you have a bit more information about
-- the infinitly near points in the desingularization trees.
-- For this example, the result corresponds to the following
--
-- %I1 o multiplicity = 1
-- |
-- |
-- |
-- |
-- |
-- |
-- |
-- %I0 o multiplicity = 2
-- |
-- |
-- |
-- |
-- |
-- |
-- |
-- %P0 o multiplicity = 3
--
fullDesTree()$P
Type: Void
axiom
desingTree()$P
Type: List DesingTree
? InfClsPt
?(PrimeField
? 2,[X,Y,Z]
?,BlowUpWithQuadTrans
?)
axiom
-- To see everything about desingularization trees, issue
-- the following
fullInfClsPt()$P
Type: Void
axiom
--desingTree()$P
-- You can ask for all the place of degree 1
--
placesOfDegree(1)$P
Type: List Places PrimeField
? 2
axiom
-- With those places, you can create divisors
listOfDiv:=placesOfDegree(1)$P :: List DIV PLACES PF 2
Type: List Divisor Places PrimeField
? 2
axiom
-- You can add the divisors.
D:=reduce(+, listOfDiv)
Type: Divisor Places PrimeField
? 2
axiom
-- You can multiply the divisor by an integer
D10 := 10 * D
Type: Divisor Places PrimeField
? 2
axiom
-- You can ask for the degree of the divisor
degree D10
axiom
-- You can compute the basis of the vector space L(D10).
-- The results is an Axiom Record. The first selector "num"
-- corresponds to the numerators of the elements of the basis,
-- and the second selector "den" is the common denominator.
baseOfLofD:= lBasis(D10)$P
Trying to interpolate with forms of degree:
8
Denominator found
Intersection Divisor of Denominator found
Type: Record(num: List DistributedMultivariatePolynomial
?([X,Y,Z]
?,PrimeField
? 2),den: DistributedMultivariatePolynomial
?([X,Y,Z]
?,PrimeField
? 2))
axiom
-- Of course, the number of element in the list of numerator
-- is the dimension of the vector space L(D10). According to the
-- Riemann-Roch Theorem, since
--
-- deg D10 >= 2 g - 1
--
-- we should have
--
-- dim L(D10) = deg D10 - g + 1
--
--
((# baseOfLofD.num) = degree D10 - genus()$P + 1 ) :: Boolean
Type: Boolean