/usr/share/axiom-20170501/src/algebra/PLPKCRV.spad is in axiom-source 20170501-3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | )abbrev package PLPKCRV PolynomialPackageForCurve
++ Author: Gaetan Hache
++ Date Created: 17 nov 1992
++ Date Last Updated: May 2010 by Tim Daly
++ Description:
++ The following is part of the PAFF package
PolynomialPackageForCurve(K,PolyRing,E,dim,ProjPt) : SIG == CODE where
K : Field
dim : NonNegativeInteger
E : DirectProductCategory(dim,NonNegativeInteger)
PolyRing : FiniteAbelianMonoidRing(K,E) -- PolynomialCategory(K,E,OV)
ProjPt : ProjectiveSpaceCategory(K)
PackPoly ==> PackageForPoly(K,PolyRing,E,dim)
SIG ==> with
pointInIdeal? : (List(PolyRing),ProjPt) -> Boolean
++ pointInIdeal? test if the given point is in the algebraic set
++ defined by the given list of polynomials.
eval : (PolyRing,ProjPt) -> K
++ eval returns the value at given point.
translateToOrigin : (PolyRing,ProjPt,Integer) -> PolyRing
++ translateToOrigin translate the polynomial from the given point
++ to the origin
translateToOrigin : (PolyRing,ProjPt) -> PolyRing
++ translateToOrigin translate the polynomial from the given point
++ to the origin
minimalForm : (PolyRing,ProjPt) -> PolyRing
++ minimalForm returns the minimal form after translation to
++ the origin.
minimalForm : (PolyRing,ProjPt,Integer) -> PolyRing
++ minimalForm returns the minimal form after translation to
++ the origin.
multiplicity : (PolyRing,ProjPt) -> NonNegativeInteger
++ multiplicity returns the multiplicity of the polynomial at
++ given point.
multiplicity : (PolyRing,ProjPt,Integer) -> NonNegativeInteger
++ multiplicity returns the multiplicity of the polynomial at
++ given point.
CODE ==> add
import PolyRing
import ProjPt
import PackPoly
translateToOrigin(pol,pt,nV)==
zero?(pt.nV) => error "Impossible de translater"
pt:=homogenize(pt,nV)
lpt:List K:=list(pt)$ProjPt
translate(pol,lpt,nV)
pointInIdeal?(lstPol,pt)==
temp:Boolean:=true()$Boolean
for pol in lstPol repeat
temp:=(zero?(eval(pol,pt)) and temp)
temp
eval(f,pt)==
zero? f => 0
lpt:List(K) := list pt
dd:List NonNegativeInteger := entries degree f
lc:= leadingCoefficient f
ee:= reduce( "*" , [ p**e for p in lpt for e in dd | ^zero?(e)], 1$K)
lc * ee + eval( reductum f, pt)
translateToOrigin(pol,pt)==
translateToOrigin(pol,pt,lastNonNull(pt))
multiplicity(crb,pt)==
degreeOfMinimalForm(translateToOrigin(crb,pt))
multiplicity(crb,pt,nV)==
degreeOfMinimalForm(translateToOrigin(crb,pt,nV))
minimalForm(crb,pt)==
minimalForm(translateToOrigin(crb,pt))
minimalForm(crb,pt,nV)==
minimalForm(translateToOrigin(crb,pt,nV))
|