axiom-commit Mailing List for Axiom Computer Algebra System
Brought to you by:
daly,
starseeker
You can subscribe to this list here.
2006 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(12) |
Jun
(30) |
Jul
(5) |
Aug
(44) |
Sep
(54) |
Oct
(83) |
Nov
(138) |
Dec
(77) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2007 |
Jan
(8) |
Feb
(19) |
Mar
(36) |
Apr
(57) |
May
(62) |
Jun
(95) |
Jul
(51) |
Aug
(79) |
Sep
(39) |
Oct
(25) |
Nov
(8) |
Dec
(33) |
2008 |
Jan
(35) |
Feb
(37) |
Mar
(41) |
Apr
(52) |
May
(42) |
Jun
(55) |
Jul
(42) |
Aug
(47) |
Sep
(45) |
Oct
(24) |
Nov
(53) |
Dec
(102) |
2009 |
Jan
(39) |
Feb
(58) |
Mar
(48) |
Apr
(77) |
May
(269) |
Jun
(111) |
Jul
(21) |
Aug
(102) |
Sep
(54) |
Oct
(73) |
Nov
(42) |
Dec
(26) |
2010 |
Jan
(45) |
Feb
(35) |
Mar
(15) |
Apr
(25) |
May
(80) |
Jun
(62) |
Jul
(28) |
Aug
(27) |
Sep
(31) |
Oct
(40) |
Nov
(9) |
Dec
(21) |
2011 |
Jan
(21) |
Feb
(16) |
Mar
(12) |
Apr
(9) |
May
(23) |
Jun
(2) |
Jul
(19) |
Aug
(18) |
Sep
(20) |
Oct
(5) |
Nov
(19) |
Dec
(19) |
2012 |
Jan
(20) |
Feb
(21) |
Mar
(12) |
Apr
(19) |
May
(14) |
Jun
(3) |
Jul
|
Aug
(1) |
Sep
|
Oct
(1) |
Nov
|
Dec
|
2013 |
Jan
(12) |
Feb
(16) |
Mar
(65) |
Apr
(3) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2016 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
2020 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
|
Dec
|
2022 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
|
|
|
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
9
|
10
|
11
|
12
(4) |
13
(4) |
14
(2) |
15
(2) |
16
(4) |
17
(2) |
18
|
19
(4) |
20
|
21
(1) |
22
(2) |
23
|
24
|
25
(2) |
26
|
27
(4) |
28
(2) |
29
(2) |
30
(2) |
31
(2) |
From: <da...@us...> - 2009-01-31 17:28:45
|
Revision: 1097 http://axiom.svn.sourceforge.net/axiom/?rev=1097&view=rev Author: daly Date: 2009-01-31 17:28:38 +0000 (Sat, 31 Jan 2009) Log Message: ----------- 20090130 tpd books/bookvol4.pamphlet document spadhelp 20090130 tpd src/Makefile remove parallel input testing 20090130 tpd src/algebra/Makefile fix spadhelp 20090130 tpd src/doc/Makefile pick up the spadhelp changes dynamically 20090130 tpd src/doc/spadhelp remove the static help list 20090130 tpd src/algebra/Makefile remove spad files 20090130 tpd src/algebra/gbeuclid.spad removed 20090130 tpd books/ps/v104euclideangroebnerbasispackage.ps added 20090130 tpd src/algebra/Makefile EuclideanGroebnerBasisPackage.regress added 20090130 tpd src/algebra/Makefile EuclideanGroebnerBasisPackage.help added 20090130 tpd src/algebra/gaussian.spad removed 20090130 tpd books/ps/v104complexintegersolvelinearpolynomialequation.ps 20090130 tpd books/ps/v104complexfactorization.ps added 20090130 tpd books/ps/v104complexfunctions2.ps added 20090130 tpd books/ps/v104complexpatternmatch.ps added 20090130 tpd books/ps/v104complexpattern.ps added 20090130 tpd src/algebra/gaussfac.spad removed 20090130 tpd books/ps/v104gaussianfactorizationpackage.ps added 20090130 tpd src/algebra/galutil.spad removed 20090130 tpd books/ps/v104galoisgrouputilities.ps added 20090130 tpd src/algebra/galpolyu.spad removed 20090130 tpd books/ps/v104galoisgrouppolynomialutilities.ps added 20090130 tpd src/algebra/galfactu.spad removed 20090130 tpd books/ps/v104galoisgroupfactorizationutilities.ps added 20090130 tpd src/algebra/galfact.spad removed 20090130 tpd books/ps/v104galoisgroupfactorizer.ps added 20090129 tpd src/axiom-website/patches.html 20090129.01.mxr.patch 20090129 mxr src/interp/i-funsel.boot document mmCost Modified Paths: -------------- trunk/axiom/books/bookvol10.4.pamphlet trunk/axiom/books/bookvol4.pamphlet trunk/axiom/changelog trunk/axiom/src/Makefile.pamphlet trunk/axiom/src/algebra/Makefile.pamphlet trunk/axiom/src/doc/Makefile.pamphlet trunk/axiom/src/doc/spadhelp.pamphlet Added Paths: ----------- trunk/axiom/books/ps/v104complexfactorization.ps trunk/axiom/books/ps/v104complexfunctions2.ps trunk/axiom/books/ps/v104complexintegersolvelinearpolynomialequation.ps trunk/axiom/books/ps/v104complexpattern.ps trunk/axiom/books/ps/v104complexpatternmatch.ps trunk/axiom/books/ps/v104euclideangroebnerbasispackage.ps trunk/axiom/books/ps/v104galoisgroupfactorizationutilities.ps trunk/axiom/books/ps/v104galoisgroupfactorizer.ps trunk/axiom/books/ps/v104galoisgrouppolynomialutilities.ps trunk/axiom/books/ps/v104galoisgrouputilities.ps trunk/axiom/books/ps/v104gaussianfactorizationpackage.ps Removed Paths: ------------- trunk/axiom/src/algebra/galfact.spad.pamphlet trunk/axiom/src/algebra/galfactu.spad.pamphlet trunk/axiom/src/algebra/galpolyu.spad.pamphlet trunk/axiom/src/algebra/galutil.spad.pamphlet trunk/axiom/src/algebra/gaussfac.spad.pamphlet trunk/axiom/src/algebra/gaussian.spad.pamphlet trunk/axiom/src/algebra/gbeuclid.spad.pamphlet Modified: trunk/axiom/books/bookvol10.4.pamphlet =================================================================== --- trunk/axiom/books/bookvol10.4.pamphlet 2009-01-30 10:23:04 UTC (rev 1096) +++ trunk/axiom/books/bookvol10.4.pamphlet 2009-01-31 17:28:38 UTC (rev 1097) @@ -4342,6 +4342,321 @@ @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{package COMPFACT ComplexFactorization} +\pagehead{ComplexFactorization}{COMPFACT} +\pagepic{ps/v104complexfactorization.ps}{COMPFACT}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\end{tabular} + +<<package COMPFACT ComplexFactorization>>= +)abbrev package COMPFACT ComplexFactorization +++ Author: +++ Date Created: +++ Date Last Updated: +++ Basic Functions: +++ Related Constructors: Complex, UnivariatePolynomial +++ Also See: +++ AMS Classifications: +++ Keywords: complex, polynomial factorization, factor +++ References: +ComplexFactorization(RR,PR) : C == T where + RR : EuclideanDomain -- R is Z or Q + PR : UnivariatePolynomialCategory Complex RR + R ==> Complex RR + I ==> Integer + RN ==> Fraction I + GI ==> Complex I + GRN ==> Complex RN + + + C == with + + factor : PR -> Factored PR + ++ factor(p) factorizes the polynomial p with complex coefficients. + + T == add + SUP ==> SparseUnivariatePolynomial + fUnion ==> Union("nil", "sqfr", "irred", "prime") + FF ==> Record(flg:fUnion, fctr:PR, xpnt:Integer) + SAEF := SimpleAlgebraicExtensionAlgFactor(SUP RN,GRN,SUP GRN) + UPCF2 := UnivariatePolynomialCategoryFunctions2(R,PR,GRN,SUP GRN) + UPCFB := UnivariatePolynomialCategoryFunctions2(GRN,SUP GRN,R,PR) + + myMap(r:R) : GRN == + R is GI => + cr :GI := r pretend GI + complex((real cr)::RN,(imag cr)::RN) + R is GRN => r pretend GRN + + compND(cc:GRN):Record(cnum:GI,cden:Integer) == + ccr:=real cc + cci:=imag cc + dccr:=denom ccr + dcci:=denom cci + ccd:=lcm(dccr,dcci) + [complex(((ccd exquo dccr)::Integer)*numer ccr, + ((ccd exquo dcci)::Integer)*numer cci),ccd] + + conv(f:SUP GRN) :Record(convP:SUP GI, convD:RN) == + pris:SUP GI :=0 + dris:Integer:=1 + dris1:Integer:=1 + pdris:Integer:=1 + for i in 0..(degree f) repeat + (cf:= coefficient(f,i)) = 0 => "next i" + cdf:=compND cf + dris:=lcm(cdf.cden,dris1) + pris:=((dris exquo dris1)::Integer)*pris + + ((dris exquo cdf.cden)::Integer)* + monomial(cdf.cnum,i)$(SUP GI) + dris1:=dris + [pris,dris::RN] + + backConv(ffr:Factored SUP GRN) : Factored PR == + R is GRN => + makeFR((unit ffr) pretend PR,[[f.flg,(f.fctr) pretend PR,f.xpnt] + for f in factorList ffr]) + R is GI => + const:=unit ffr + ris: List FF :=[] + for ff in factorList ffr repeat + fact:=primitivePart(conv(ff.fctr).convP) + expf:=ff.xpnt + ris:=cons([ff.flg,fact pretend PR,expf],ris) + lc:GRN := myMap leadingCoefficient(fact pretend PR) + const:= const*(leadingCoefficient(ff.fctr)/lc)**expf + uconst:GI:= compND(coefficient(const,0)).cnum + makeFR((uconst pretend R)::PR,ris) + + + factor(pol : PR) : Factored PR == + ratPol:SUP GRN := 0 + ratPol:=map(myMap,pol)$UPCF2 + ffr:=factor ratPol + backConv ffr + +@ +<<COMPFACT.dotabb>>= +"COMPFACT" [color="#FF4488",href="bookvol10.4.pdf#nameddest=COMPFACT"] +"COMPCAT" [color="#4488FF",href="bookvol10.2.pdf#nameddest=COMPCAT"] +"COMPFACT" -> "COMPCAT" + +@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{package COMPLEX2 ComplexFunctions2} +\pagehead{ComplexFunctions2}{COMPLEX2} +\pagepic{ps/v104complexfunctions2.ps}{COMPLEX2}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\end{tabular} + +<<package COMPLEX2 ComplexFunctions2>>= +)abbrev package COMPLEX2 ComplexFunctions2 +++ Author: +++ Date Created: +++ Date Last Updated: +++ Basic Functions: +++ Related Constructors: +++ Also See: +++ AMS Classifications: +++ Keywords: +++ References: +++ Description: +++ This package extends maps from underlying rings to maps between +++ complex over those rings. +ComplexFunctions2(R:CommutativeRing, S:CommutativeRing): with + map: (R -> S, Complex R) -> Complex S + ++ map(f,u) maps f onto real and imaginary parts of u. + == add + map(fn, gr) == complex(fn real gr, fn imag gr) + +@ +<<COMPLEX2.dotabb>>= +"COMPLEX2" [color="#FF4488",href="bookvol10.4.pdf#nameddest=COMPLEX2"] +"BMODULE" [color="#4488FF",href="bookvol10.2.pdf#nameddest=BMODULE"] +"COMPLEX2" -> "BMODULE" + +@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{package CINTSLPE ComplexIntegerSolveLinearPolynomialEquation} +\pagehead{ComplexIntegerSolveLinearPolynomialEquation}{CINTSLPE} +\pagepic{ps/v104complexintegersolvelinearpolynomialequation.ps}{CINTSLPE}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\end{tabular} + +<<package CINTSLPE ComplexIntegerSolveLinearPolynomialEquation>>= +)abbrev package CINTSLPE ComplexIntegerSolveLinearPolynomialEquation +++ Author: James Davenport +++ Date Created: 1990 +++ Date Last Updated: +++ Basic Functions: +++ Related Constructors: +++ Also See: +++ AMS Classifications: +++ Keywords: +++ References: +++ Description: +++ This package provides the generalized euclidean algorithm which is +++ needed as the basic step for factoring polynomials. +ComplexIntegerSolveLinearPolynomialEquation(R,CR): C == T + where + CP ==> SparseUnivariatePolynomial CR + R:IntegerNumberSystem + CR:ComplexCategory(R) + C == with + solveLinearPolynomialEquation: (List CP,CP) -> Union(List CP,"failed") + ++ solveLinearPolynomialEquation([f1, ..., fn], g) + ++ where (fi relatively prime to each other) + ++ returns a list of ai such that + ++ g = sum ai prod fj (j \= i) or + ++ equivalently g/prod fj = sum (ai/fi) + ++ or returns "failed" if no such list exists + T == add + oldlp:List CP := [] + slpePrime:R:=(2::R) + oldtable:Vector List CP := empty() + solveLinearPolynomialEquation(lp,p) == + if (oldlp ^= lp) then + -- we have to generate a new table + deg:= _+/[degree u for u in lp] + ans:Union(Vector List CP,"failed"):="failed" + slpePrime:=67108859::R -- 2**26 -5 : a prime + -- a good test case for this package is + -- (good question?) + while (ans case "failed") repeat + ans:=tablePow(deg,complex(slpePrime,0),lp)$GenExEuclid(CR,CP) + if (ans case "failed") then + slpePrime:= slpePrime-4::R + while not prime?(slpePrime)$IntegerPrimesPackage(R) repeat + slpePrime:= slpePrime-4::R + oldtable:=(ans:: Vector List CP) + answer:=solveid(p,complex(slpePrime,0),oldtable) + answer + +@ +<<CINTSLPE.dotabb>>= +"CINTSLPE" [color="#FF4488",href="bookvol10.4.pdf#nameddest=CINTSLPE"] +"COMPCAT" [color="#4488FF",href="bookvol10.2.pdf#nameddest=COMPCAT"] +"CINTSLPE" -> "COMPCAT" + +@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{package COMPLPAT ComplexPattern} +\pagehead{ComplexPattern}{COMPLPAT} +\pagepic{ps/v104complexpattern.ps}{COMPLPAT}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\end{tabular} + +<<package COMPLPAT ComplexPattern>>= +)abbrev package COMPLPAT ComplexPattern +++ Author: Barry Trager +++ Date Created: 30 Nov 1995 +++ Date Last Updated: +++ Basic Functions: +++ Related Constructors: +++ Also See: +++ AMS Classifications: +++ Keywords: complex, patterns +++ References: +++ Description: +++ This package supports converting complex expressions to patterns +ComplexPattern(R, S, CS) : C == T where + R: SetCategory + S: Join(ConvertibleTo Pattern R, CommutativeRing) + CS: ComplexCategory S + C == with + convert: CS -> Pattern R + ++ convert(cs) converts the complex expression cs to a pattern + + T == add + + ipat : Pattern R := patternVariable("%i"::Symbol, true, false, false) + + convert(cs) == + zero? imag cs => convert real cs + convert real cs + ipat * convert imag cs + +@ +<<COMPLPAT.dotabb>>= +"COMPLPAT" [color="#FF4488",href="bookvol10.4.pdf#nameddest=COMPLPAT"] +"COMPCAT" [color="#4488FF",href="bookvol10.2.pdf#nameddest=COMPCAT"] +"COMPLPAT" -> "COMPCAT" + +@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{package CPMATCH ComplexPatternMatch} +\pagehead{ComplexPatternMatch}{CPMATCH} +\pagepic{ps/v104complexpatternmatch.ps}{CPMATCH}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\end{tabular} + +<<package CPMATCH ComplexPatternMatch>>= +)abbrev package CPMATCH ComplexPatternMatch +++ Author: Barry Trager +++ Date Created: 30 Nov 1995 +++ Date Last Updated: +++ Basic Functions: +++ Related Constructors: +++ Also See: +++ AMS Classifications: +++ Keywords: complex, pattern matching +++ References: +++ Description: +++ This package supports matching patterns involving complex expressions +ComplexPatternMatch(R, S, CS) : C == T where + R: SetCategory + S: Join(PatternMatchable R, CommutativeRing) + CS: ComplexCategory S + PMRS ==> PatternMatchResult(R, CS) + PS ==> Polynomial S + C == with + if PS has PatternMatchable(R) then + patternMatch: (CS, Pattern R, PMRS) -> PMRS + ++ patternMatch(cexpr, pat, res) matches the pattern pat to the + ++ complex expression cexpr. res contains the variables of pat + ++ which are already matched and their matches. + + T == add + + import PatternMatchPushDown(R, S, CS) + import PatternMatchResultFunctions2(R, PS, CS) + import PatternMatchResultFunctions2(R, CS, PS) + + ivar : PS := "%i"::Symbol::PS + + makeComplex(p:PS):CS == + up := univariate p + degree up > 1 => error "not linear in %i" + icoef:=leadingCoefficient(up) + rcoef:=leadingCoefficient(reductum p) + complex(rcoef,icoef) + + makePoly(cs:CS):PS == real(cs)*ivar + imag(cs)::PS + + if PS has PatternMatchable(R) then + patternMatch(cs, pat, result) == + zero? imag cs => + patternMatch(real cs, pat, result) + map(makeComplex, + patternMatch(makePoly cs, pat, map(makePoly, result))) + +@ +<<CPMATCH.dotabb>>= +"CPMATCH" [color="#FF4488",href="bookvol10.4.pdf#nameddest=CPMATCH"] +"COMPCAT" [color="#4488FF",href="bookvol10.2.pdf#nameddest=COMPCAT"] +"CPMATCH" -> "COMPCAT" + +@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{package CRFP ComplexRootFindingPackage} \pagehead{ComplexRootFindingPackage}{CRFP} \pagepic{ps/v104complexrootfindingpackage.ps}{CRFP}{1.00} @@ -11318,6 +11633,1669 @@ @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{package GBEUCLID EuclideanGroebnerBasisPackage} +<<EuclideanGroebnerBasisPackage.input>>= +)spool EuclideanGroebnerBasisPackage.output +)set message test on +)set message auto off +)clear all +--S 1 of 24 +a1:DMP([y,x],INT):= (9*x**2 + 5*x - 3)+ y*(3*x**2 + 2*x + 1) +--R +--R 2 2 +--R (1) 3y x + 2y x + y + 9x + 5x - 3 +--R Type: DistributedMultivariatePolynomial([y,x],Integer) +--E 1 + +--S 2 of 24 +a2:DMP([y,x],INT):= (6*x**3 - 2*x**2 - 3*x +3) + y*(2*x**3 - x - 1) +--R +--R 3 3 2 +--R (2) 2y x - y x - y + 6x - 2x - 3x + 3 +--R Type: DistributedMultivariatePolynomial([y,x],Integer) +--E 2 + +--S 3 of 24 +a3:DMP([y,x],INT):= (3*x**3 + 2*x**2) + y*(x**3 + x**2) +--R +--R 3 2 3 2 +--R (3) y x + y x + 3x + 2x +--R Type: DistributedMultivariatePolynomial([y,x],Integer) +--E 3 + +--S 4 of 24 +an:=[a1,a2,a3] +--R +--R (4) +--R 2 2 3 3 2 +--R [3y x + 2y x + y + 9x + 5x - 3, 2y x - y x - y + 6x - 2x - 3x + 3, +--R 3 2 3 2 +--R y x + y x + 3x + 2x ] +--R Type: List DistributedMultivariatePolynomial([y,x],Integer) +--E 4 + +--S 5 of 24 +euclideanGroebner(an) +--R +--R 2 3 2 +--R (5) [y x - y + x + 3,2y + 2x - 3x - 6,2x - 5x - 5x] +--R Type: List DistributedMultivariatePolynomial([y,x],Integer) +--E 5 + +--S 6 of 24 +euclideanGroebner(an,"redcrit") +--R +--R +--R reduced Critpair - Polynom : +--R +--R +--R 2 2 +--R - 2y x - y x - y - 6x - 3x + 3 +--R +--R +--R +--R +--R reduced Critpair - Polynom : +--R +--R +--R y x - y + x + 3 +--R +--R +--R +--R +--R reduced Critpair - Polynom : +--R +--R +--R 2 +--R 4y + 4x - 6x - 12 +--R +--R +--R +--R +--R reduced Critpair - Polynom : +--R +--R +--R 3 2 +--R - 4x + 10x + 10x +--R +--R +--R +--R +--R reduced Critpair - Polynom : +--R +--R +--R 2 +--R 2y + 2x - 3x - 6 +--R +--R +--R +--R +--R reduced Critpair - Polynom : +--R +--R +--R 0 +--R +--R +--R +--R +--R reduced Critpair - Polynom : +--R +--R +--R 3 2 +--R - 2x + 5x + 5x +--R +--R +--R +--R +--R reduced Critpair - Polynom : +--R +--R +--R 0 +--R +--R +--R +--R +--R reduced Critpair - Polynom : +--R +--R +--R 0 +--R +--R +--R +--R +--R reduced Critpair - Polynom : +--R +--R +--R 0 +--R +--R +--R THE GROEBNER BASIS over EUCLIDEAN DOMAIN +--R +--R 2 3 2 +--R (6) [y x - y + x + 3,2y + 2x - 3x - 6,2x - 5x - 5x] +--R Type: List DistributedMultivariatePolynomial([y,x],Integer) +--E 6 + +--S 7 of 24 +euclideanGroebner(an,"info") +--R +--R you choose option -info- +--R abbrev. for the following information strings are +--R ci => Leading monomial for critpair calculation +--R tci => Number of terms of polynomial i +--R cj => Leading monomial for critpair calculation +--R tcj => Number of terms of polynomial j +--R c => Leading monomial of critpair polynomial +--R tc => Number of terms of critpair polynomial +--R rc => Leading monomial of redcritpair polynomial +--R trc => Number of terms of redcritpair polynomial +--R tF => Number of polynomials in reduction list F +--R tD => Number of critpairs still to do +--R +--R +--R +--R +--R +--R 3 3 2 2 +--R [[ci= y x ,tci= 7,cj= y x ,tcj= 4,c= y x ,tc= 6,rc= y x ,trc= 6,tH= 3,tD= 3]] +--R +--R +--R 2 2 +--R [[ci= y x ,tci= 6,cj= y x ,tcj= 6,c= y x,tc= 4,rc= y x,trc= 4,tH= 1,tD= 3]] +--R +--R +--R 2 +--R [[ci= y x ,tci= 6,cj= y x,tcj= 4,c= y x,tc= 5,rc= y,trc= 4,tH= 2,tD= 3]] +--R +--R +--R 3 +--R [[ci= y x,tci= 4,cj= y,tcj= 4,c= y,tc= 5,rc= x ,trc= 3,tH= 3,tD= 3]] +--R +--R +--R 2 +--R [[ci= y x ,tci= 6,cj= y x,tcj= 4,c= y x,tc= 5,rc= y,trc= 4,tH= 3,tD= 4]] +--R +--R +--R [[ci= y,tci= 4,cj= y,tcj= 4,c= 0,tc= 0,rc= 0,trc= 0,tH= 3,tD= 3]] +--R +--R +--R 3 +--R [[ci= y x,tci= 4,cj= y,tcj= 4,c= y,tc= 5,rc= x ,trc= 3,tH= 3,tD= 3]] +--R +--R +--R 3 3 +--R [[ci= x ,tci= 3,cj= x ,tcj= 3,c= 0,tc= 0,rc= 0,trc= 0,tH= 3,tD= 2]] +--R +--R +--R 3 2 +--R [[ci= y x ,tci= 4,cj= y x,tcj= 4,c= y x ,tc= 3,rc= 0,trc= 0,tH= 3,tD= 1]] +--R +--R +--R 3 2 +--R [[ci= y,tci= 4,cj= x ,tcj= 3,c= y x ,tc= 5,rc= 0,trc= 0,tH= 3,tD= 0]] +--R +--R +--R There are +--R +--R 3 +--R +--R Groebner Basis Polynomials. +--R +--R +--R THE GROEBNER BASIS over EUCLIDEAN DOMAIN +--R +--R 2 3 2 +--R (7) [y x - y + x + 3,2y + 2x - 3x - 6,2x - 5x - 5x] +--R Type: List DistributedMultivariatePolynomial([y,x],Integer) +--E 7 + +--S 8 of 24 +euclideanGroebner(an,"info","redcrit") +--R +--R +--R reduced Critpair - Polynom : +--R +--R +--R 2 2 +--R - 2y x - y x - y - 6x - 3x + 3 +--R +--R +--R +--R you choose option -info- +--R abbrev. for the following information strings are +--R ci => Leading monomial for critpair calculation +--R tci => Number of terms of polynomial i +--R cj => Leading monomial for critpair calculation +--R tcj => Number of terms of polynomial j +--R c => Leading monomial of critpair polynomial +--R tc => Number of terms of critpair polynomial +--R rc => Leading monomial of redcritpair polynomial +--R trc => Number of terms of redcritpair polynomial +--R tF => Number of polynomials in reduction list F +--R tD => Number of critpairs still to do +--R +--R +--R +--R +--R +--R 3 3 2 2 +--R [[ci= y x ,tci= 7,cj= y x ,tcj= 4,c= y x ,tc= 6,rc= y x ,trc= 6,tH= 3,tD= 3]] +--R +--R +--R +--R reduced Critpair - Polynom : +--R +--R +--R y x - y + x + 3 +--R +--R +--R +--R 2 2 +--R [[ci= y x ,tci= 6,cj= y x ,tcj= 6,c= y x,tc= 4,rc= y x,trc= 4,tH= 1,tD= 3]] +--R +--R +--R +--R reduced Critpair - Polynom : +--R +--R +--R 2 +--R 4y + 4x - 6x - 12 +--R +--R +--R +--R 2 +--R [[ci= y x ,tci= 6,cj= y x,tcj= 4,c= y x,tc= 5,rc= y,trc= 4,tH= 2,tD= 3]] +--R +--R +--R +--R reduced Critpair - Polynom : +--R +--R +--R 3 2 +--R - 4x + 10x + 10x +--R +--R +--R +--R 3 +--R [[ci= y x,tci= 4,cj= y,tcj= 4,c= y,tc= 5,rc= x ,trc= 3,tH= 3,tD= 3]] +--R +--R +--R +--R reduced Critpair - Polynom : +--R +--R +--R 2 +--R 2y + 2x - 3x - 6 +--R +--R +--R +--R 2 +--R [[ci= y x ,tci= 6,cj= y x,tcj= 4,c= y x,tc= 5,rc= y,trc= 4,tH= 3,tD= 4]] +--R +--R +--R +--R reduced Critpair - Polynom : +--R +--R +--R 0 +--R +--R +--R +--R [[ci= y,tci= 4,cj= y,tcj= 4,c= 0,tc= 0,rc= 0,trc= 0,tH= 3,tD= 3]] +--R +--R +--R +--R reduced Critpair - Polynom : +--R +--R +--R 3 2 +--R - 2x + 5x + 5x +--R +--R +--R +--R 3 +--R [[ci= y x,tci= 4,cj= y,tcj= 4,c= y,tc= 5,rc= x ,trc= 3,tH= 3,tD= 3]] +--R +--R +--R +--R reduced Critpair - Polynom : +--R +--R +--R 0 +--R +--R +--R +--R 3 3 +--R [[ci= x ,tci= 3,cj= x ,tcj= 3,c= 0,tc= 0,rc= 0,trc= 0,tH= 3,tD= 2]] +--R +--R +--R +--R reduced Critpair - Polynom : +--R +--R +--R 0 +--R +--R +--R +--R 3 2 +--R [[ci= y x ,tci= 4,cj= y x,tcj= 4,c= y x ,tc= 3,rc= 0,trc= 0,tH= 3,tD= 1]] +--R +--R +--R +--R reduced Critpair - Polynom : +--R +--R +--R 0 +--R +--R +--R +--R 3 2 +--R [[ci= y,tci= 4,cj= x ,tcj= 3,c= y x ,tc= 5,rc= 0,trc= 0,tH= 3,tD= 0]] +--R +--R +--R There are +--R +--R 3 +--R +--R Groebner Basis Polynomials. +--R +--R +--R THE GROEBNER BASIS over EUCLIDEAN DOMAIN +--R +--R 2 3 2 +--R (8) [y x - y + x + 3,2y + 2x - 3x - 6,2x - 5x - 5x] +--R Type: List DistributedMultivariatePolynomial([y,x],Integer) +--E 8 + +--S 9 of 24 +b1:HDMP([y,x],INT):= (9*x**2 + 5*x - 3)+ y*(3*x**2 + 2*x + 1) +--R +--R 2 2 +--R (9) 3y x + 2y x + 9x + y + 5x - 3 +--R Type: HomogeneousDistributedMultivariatePolynomial([y,x],Integer) +--E 9 + +--S 10 of 24 +b2:HDMP([y,x],INT):= (6*x**3 - 2*x**2 - 3*x +3) + y*(2*x**3 - x - 1) +--R +--R 3 3 2 +--R (10) 2y x + 6x - y x - 2x - y - 3x + 3 +--R Type: HomogeneousDistributedMultivariatePolynomial([y,x],Integer) +--E 10 + +--S 11 of 24 +b3:HDMP([y,x],INT):= (3*x**3 + 2*x**2) + y*(x**3 + x**2) +--R +--R 3 2 3 2 +--R (11) y x + y x + 3x + 2x +--R Type: HomogeneousDistributedMultivariatePolynomial([y,x],Integer) +--E 11 + +--S 12 of 24 +bn:=[b1,b2,b3] +--R +--R (12) +--R 2 2 3 3 2 +--R [3y x + 2y x + 9x + y + 5x - 3, 2y x + 6x - y x - 2x - y - 3x + 3, +--R 3 2 3 2 +--R y x + y x + 3x + 2x ] +--R Type: List HomogeneousDistributedMultivariatePolynomial([y,x],Integer) +--E 12 + +--S 13 of 24 +euclideanGroebner(bn) +--R +--R 2 2 +--R (13) [2y - 5y - 8x - 3,y x - y + x + 3,2x + 2y - 3x - 6] +--R Type: List HomogeneousDistributedMultivariatePolynomial([y,x],Integer) +--E 13 + +--S 14 of 24 +euclideanGroebner(bn,"redcrit") +--R +--R +--R reduced Critpair - Polynom : +--R +--R +--R 2 2 +--R - 2y x - y x - 6x - y - 3x + 3 +--R +--R +--R +--R +--R reduced Critpair - Polynom : +--R +--R +--R y x - y + x + 3 +--R +--R +--R +--R +--R reduced Critpair - Polynom : +--R +--R +--R 2 +--R 4x + 4y - 6x - 12 +--R +--R +--R +--R +--R reduced Critpair - Polynom : +--R +--R +--R 2 +--R 2x + 2y - 3x - 6 +--R +--R +--R +--R +--R reduced Critpair - Polynom : +--R +--R +--R 0 +--R +--R +--R +--R +--R reduced Critpair - Polynom : +--R +--R +--R 2 +--R - 2y + 5y + 8x + 3 +--R +--R +--R +--R +--R reduced Critpair - Polynom : +--R +--R +--R 0 +--R +--R +--R +--R +--R reduced Critpair - Polynom : +--R +--R +--R 0 +--R +--R +--R THE GROEBNER BASIS over EUCLIDEAN DOMAIN +--R +--R 2 2 +--R (14) [2y - 5y - 8x - 3,y x - y + x + 3,2x + 2y - 3x - 6] +--R Type: List HomogeneousDistributedMultivariatePolynomial([y,x],Integer) +--E 14 + +--S 15 of 24 +euclideanGroebner(bn,"info") +--R +--R you choose option -info- +--R abbrev. for the following information strings are +--R ci => Leading monomial for critpair calculation +--R tci => Number of terms of polynomial i +--R cj => Leading monomial for critpair calculation +--R tcj => Number of terms of polynomial j +--R c => Leading monomial of critpair polynomial +--R tc => Number of terms of critpair polynomial +--R rc => Leading monomial of redcritpair polynomial +--R trc => Number of terms of redcritpair polynomial +--R tF => Number of polynomials in reduction list F +--R tD => Number of critpairs still to do +--R +--R +--R +--R +--R +--R 3 3 2 2 +--R [[ci= y x ,tci= 7,cj= y x ,tcj= 4,c= y x ,tc= 6,rc= y x ,trc= 6,tH= 3,tD= 3]] +--R +--R +--R 2 2 +--R [[ci= y x ,tci= 6,cj= y x ,tcj= 6,c= y x,tc= 4,rc= y x,trc= 4,tH= 1,tD= 3]] +--R +--R +--R 2 2 +--R [[ci= y x ,tci= 6,cj= y x,tcj= 4,c= y x,tc= 5,rc= x ,trc= 4,tH= 2,tD= 3]] +--R +--R +--R 2 2 +--R [[ci= y x ,tci= 6,cj= y x,tcj= 4,c= y x,tc= 5,rc= x ,trc= 4,tH= 2,tD= 3]] +--R +--R +--R 2 2 +--R [[ci= x ,tci= 4,cj= x ,tcj= 4,c= 0,tc= 0,rc= 0,trc= 0,tH= 2,tD= 2]] +--R +--R +--R 2 2 2 +--R [[ci= y x,tci= 4,cj= x ,tcj= 4,c= y ,tc= 5,rc= y ,trc= 4,tH= 3,tD= 2]] +--R +--R +--R 2 2 +--R [[ci= y x,tci= 4,cj= y ,tcj= 4,c= y ,tc= 5,rc= 0,trc= 0,tH= 3,tD= 1]] +--R +--R +--R 3 2 +--R [[ci= y x ,tci= 4,cj= y x,tcj= 4,c= y x ,tc= 3,rc= 0,trc= 0,tH= 3,tD= 0]] +--R +--R +--R There are +--R +--R 3 +--R +--R Groebner Basis Polynomials. +--R +--R +--R THE GROEBNER BASIS over EUCLIDEAN DOMAIN +--R +--R 2 2 +--R (15) [2y - 5y - 8x - 3,y x - y + x + 3,2x + 2y - 3x - 6] +--R Type: List HomogeneousDistributedMultivariatePolynomial([y,x],Integer) +--E 15 + +--S 16 of 24 +euclideanGroebner(bn,"info","redcrit") +--R +--R +--R reduced Critpair - Polynom : +--R +--R +--R 2 2 +--R - 2y x - y x - 6x - y - 3x + 3 +--R +--R +--R +--R you choose option -info- +--R abbrev. for the following information strings are +--R ci => Leading monomial for critpair calculation +--R tci => Number of terms of polynomial i +--R cj => Leading monomial for critpair calculation +--R tcj => Number of terms of polynomial j +--R c => Leading monomial of critpair polynomial +--R tc => Number of terms of critpair polynomial +--R rc => Leading monomial of redcritpair polynomial +--R trc => Number of terms of redcritpair polynomial +--R tF => Number of polynomials in reduction list F +--R tD => Number of critpairs still to do +--R +--R +--R +--R +--R +--R 3 3 2 2 +--R [[ci= y x ,tci= 7,cj= y x ,tcj= 4,c= y x ,tc= 6,rc= y x ,trc= 6,tH= 3,tD= 3]] +--R +--R +--R +--R reduced Critpair - Polynom : +--R +--R +--R y x - y + x + 3 +--R +--R +--R +--R 2 2 +--R [[ci= y x ,tci= 6,cj= y x ,tcj= 6,c= y x,tc= 4,rc= y x,trc= 4,tH= 1,tD= 3]] +--R +--R +--R +--R reduced Critpair - Polynom : +--R +--R +--R 2 +--R 4x + 4y - 6x - 12 +--R +--R +--R +--R 2 2 +--R [[ci= y x ,tci= 6,cj= y x,tcj= 4,c= y x,tc= 5,rc= x ,trc= 4,tH= 2,tD= 3]] +--R +--R +--R +--R reduced Critpair - Polynom : +--R +--R +--R 2 +--R 2x + 2y - 3x - 6 +--R +--R +--R +--R 2 2 +--R [[ci= y x ,tci= 6,cj= y x,tcj= 4,c= y x,tc= 5,rc= x ,trc= 4,tH= 2,tD= 3]] +--R +--R +--R +--R reduced Critpair - Polynom : +--R +--R +--R 0 +--R +--R +--R +--R 2 2 +--R [[ci= x ,tci= 4,cj= x ,tcj= 4,c= 0,tc= 0,rc= 0,trc= 0,tH= 2,tD= 2]] +--R +--R +--R +--R reduced Critpair - Polynom : +--R +--R +--R 2 +--R - 2y + 5y + 8x + 3 +--R +--R +--R +--R 2 2 2 +--R [[ci= y x,tci= 4,cj= x ,tcj= 4,c= y ,tc= 5,rc= y ,trc= 4,tH= 3,tD= 2]] +--R +--R +--R +--R reduced Critpair - Polynom : +--R +--R +--R 0 +--R +--R +--R +--R 2 2 +--R [[ci= y x,tci= 4,cj= y ,tcj= 4,c= y ,tc= 5,rc= 0,trc= 0,tH= 3,tD= 1]] +--R +--R +--R +--R reduced Critpair - Polynom : +--R +--R +--R 0 +--R +--R +--R +--R 3 2 +--R [[ci= y x ,tci= 4,cj= y x,tcj= 4,c= y x ,tc= 3,rc= 0,trc= 0,tH= 3,tD= 0]] +--R +--R +--R There are +--R +--R 3 +--R +--R Groebner Basis Polynomials. +--R +--R +--R THE GROEBNER BASIS over EUCLIDEAN DOMAIN +--R +--R 2 2 +--R (16) [2y - 5y - 8x - 3,y x - y + x + 3,2x + 2y - 3x - 6] +--R Type: List HomogeneousDistributedMultivariatePolynomial([y,x],Integer) +--E 16 + +--S 17 of 24 +c1:GDMP([y,x],INT,DIRPROD(2,NNI)):= (9*x**2 + 5*x - 3)+ y*(3*x**2 + 2*x + 1) +--R +--R 2 2 +--R (17) 3y x + 2y x + y + 9x + 5x - 3 +--RType: GeneralDistributedMultivariatePolynomial([y,x],Integer,DirectProduct(2,NonNegativeInteger)) +--E 17 + +--S 18 of 24 +c2:GDMP([y,x],INT,DIRPROD(2,NNI)):= (6*x**3 - 2*x**2 - 3*x +3) + y*(2*x**3 - x - 1) +--R +--R 3 3 2 +--R (18) 2y x - y x - y + 6x - 2x - 3x + 3 +--RType: GeneralDistributedMultivariatePolynomial([y,x],Integer,DirectProduct(2,NonNegativeInteger)) +--E 18 + +--S 19 of 24 +c3:GDMP([y,x],INT,DIRPROD(2,NNI)):= (3*x**3 + 2*x**2) + y*(x**3 + x**2) +--R +--R 3 2 3 2 +--R (19) y x + y x + 3x + 2x +--RType: GeneralDistributedMultivariatePolynomial([y,x],Integer,DirectProduct(2,NonNegativeInteger)) +--E 19 + +--S 20 of 24 +cn:=[c1,c2,c3] +--R +--R (20) +--R 2 2 3 3 2 +--R [3y x + 2y x + y + 9x + 5x - 3, 2y x - y x - y + 6x - 2x - 3x + 3, +--R 3 2 3 2 +--R y x + y x + 3x + 2x ] +--RType: List GeneralDistributedMultivariatePolynomial([y,x],Integer,DirectProduct(2,NonNegativeInteger)) +--E 20 + +--S 21 of 24 +euclideanGroebner(cn) +--R +--R 2 3 2 +--R (21) [y x - y + x + 3,2y + 2x - 3x - 6,2x - 5x - 5x] +--RType: List GeneralDistributedMultivariatePolynomial([y,x],Integer,DirectProduct(2,NonNegativeInteger)) +--E 21 + +--S 22 of 24 +euclideanGroebner(cn,"redcrit") +--R +--R +--R reduced Critpair - Polynom : +--R +--R +--R 2 2 +--R - 2y x - y x - y - 6x - 3x + 3 +--R +--R +--R +--R +--R reduced Critpair - Polynom : +--R +--R +--R y x - y + x + 3 +--R +--R +--R +--R +--R reduced Critpair - Polynom : +--R +--R +--R 2 +--R 4y + 4x - 6x - 12 +--R +--R +--R +--R +--R reduced Critpair - Polynom : +--R +--R +--R 3 2 +--R - 4x + 10x + 10x +--R +--R +--R +--R +--R reduced Critpair - Polynom : +--R +--R +--R 2 +--R 2y + 2x - 3x - 6 +--R +--R +--R +--R +--R reduced Critpair - Polynom : +--R +--R +--R 0 +--R +--R +--R +--R +--R reduced Critpair - Polynom : +--R +--R +--R 3 2 +--R - 2x + 5x + 5x +--R +--R +--R +--R +--R reduced Critpair - Polynom : +--R +--R +--R 0 +--R +--R +--R +--R +--R reduced Critpair - Polynom : +--R +--R +--R 0 +--R +--R +--R +--R +--R reduced Critpair - Polynom : +--R +--R +--R 0 +--R +--R +--R THE GROEBNER BASIS over EUCLIDEAN DOMAIN +--R +--R 2 3 2 +--R (22) [y x - y + x + 3,2y + 2x - 3x - 6,2x - 5x - 5x] +--RType: List GeneralDistributedMultivariatePolynomial([y,x],Integer,DirectProduct(2,NonNegativeInteger)) +--E 22 + +--S 23 of 24 +euclideanGroebner(cn,"info") +--R +--R you choose option -info- +--R abbrev. for the following information strings are +--R ci => Leading monomial for critpair calculation +--R tci => Number of terms of polynomial i +--R cj => Leading monomial for critpair calculation +--R tcj => Number of terms of polynomial j +--R c => Leading monomial of critpair polynomial +--R tc => Number of terms of critpair polynomial +--R rc => Leading monomial of redcritpair polynomial +--R trc => Number of terms of redcritpair polynomial +--R tF => Number of polynomials in reduction list F +--R tD => Number of critpairs still to do +--R +--R +--R +--R +--R +--R 3 3 2 2 +--R [[ci= y x ,tci= 7,cj= y x ,tcj= 4,c= y x ,tc= 6,rc= y x ,trc= 6,tH= 3,tD= 3]] +--R +--R +--R 2 2 +--R [[ci= y x ,tci= 6,cj= y x ,tcj= 6,c= y x,tc= 4,rc= y x,trc= 4,tH= 1,tD= 3]] +--R +--R +--R 2 +--R [[ci= y x ,tci= 6,cj= y x,tcj= 4,c= y x,tc= 5,rc= y,trc= 4,tH= 2,tD= 3]] +--R +--R +--R 3 +--R [[ci= y x,tci= 4,cj= y,tcj= 4,c= y,tc= 5,rc= x ,trc= 3,tH= 3,tD= 3]] +--R +--R +--R 2 +--R [[ci= y x ,tci= 6,cj= y x,tcj= 4,c= y x,tc= 5,rc= y,trc= 4,tH= 3,tD= 4]] +--R +--R +--R [[ci= y,tci= 4,cj= y,tcj= 4,c= 0,tc= 0,rc= 0,trc= 0,tH= 3,tD= 3]] +--R +--R +--R 3 +--R [[ci= y x,tci= 4,cj= y,tcj= 4,c= y,tc= 5,rc= x ,trc= 3,tH= 3,tD= 3]] +--R +--R +--R 3 3 +--R [[ci= x ,tci= 3,cj= x ,tcj= 3,c= 0,tc= 0,rc= 0,trc= 0,tH= 3,tD= 2]] +--R +--R +--R 3 2 +--R [[ci= y x ,tci= 4,cj= y x,tcj= 4,c= y x ,tc= 3,rc= 0,trc= 0,tH= 3,tD= 1]] +--R +--R +--R 3 2 +--R [[ci= y,tci= 4,cj= x ,tcj= 3,c= y x ,tc= 5,rc= 0,trc= 0,tH= 3,tD= 0]] +--R +--R +--R There are +--R +--R 3 +--R +--R Groebner Basis Polynomials. +--R +--R +--R THE GROEBNER BASIS over EUCLIDEAN DOMAIN +--R +--R 2 3 2 +--R (23) [y x - y + x + 3,2y + 2x - 3x - 6,2x - 5x - 5x] +--RType: List GeneralDistributedMultivariatePolynomial([y,x],Integer,DirectProduct(2,NonNegativeInteger)) +--E 23 + +--S 24 of 24 +euclideanGroebner(cn,"info","redcrit") +--R +--R +--R reduced Critpair - Polynom : +--R +--R +--R 2 2 +--R - 2y x - y x - y - 6x - 3x + 3 +--R +--R +--R +--R you choose option -info- +--R abbrev. for the following information strings are +--R ci => Leading monomial for critpair calculation +--R tci => Number of terms of polynomial i +--R cj => Leading monomial for critpair calculation +--R tcj => Number of terms of polynomial j +--R c => Leading monomial of critpair polynomial +--R tc => Number of terms of critpair polynomial +--R rc => Leading monomial of redcritpair polynomial +--R trc => Number of terms of redcritpair polynomial +--R tF => Number of polynomials in reduction list F +--R tD => Number of critpairs still to do +--R +--R +--R +--R +--R +--R 3 3 2 2 +--R [[ci= y x ,tci= 7,cj= y x ,tcj= 4,c= y x ,tc= 6,rc= y x ,trc= 6,tH= 3,tD= 3]] +--R +--R +--R +--R reduced Critpair - Polynom : +--R +--R +--R y x - y + x + 3 +--R +--R +--R +--R 2 2 +--R [[ci= y x ,tci= 6,cj= y x ,tcj= 6,c= y x,tc= 4,rc= y x,trc= 4,tH= 1,tD= 3]] +--R +--R +--R +--R reduced Critpair - Polynom : +--R +--R +--R 2 +--R 4y + 4x - 6x - 12 +--R +--R +--R +--R 2 +--R [[ci= y x ,tci= 6,cj= y x,tcj= 4,c= y x,tc= 5,rc= y,trc= 4,tH= 2,tD= 3]] +--R +--R +--R +--R reduced Critpair - Polynom : +--R +--R +--R 3 2 +--R - 4x + 10x + 10x +--R +--R +--R +--R 3 +--R [[ci= y x,tci= 4,cj= y,tcj= 4,c= y,tc= 5,rc= x ,trc= 3,tH= 3,tD= 3]] +--R +--R +--R +--R reduced Critpair - Polynom : +--R +--R +--R 2 +--R 2y + 2x - 3x - 6 +--R +--R +--R +--R 2 +--R [[ci= y x ,tci= 6,cj= y x,tcj= 4,c= y x,tc= 5,rc= y,trc= 4,tH= 3,tD= 4]] +--R +--R +--R +--R reduced Critpair - Polynom : +--R +--R +--R 0 +--R +--R +--R +--R [[ci= y,tci= 4,cj= y,tcj= 4,c= 0,tc= 0,rc= 0,trc= 0,tH= 3,tD= 3]] +--R +--R +--R +--R reduced Critpair - Polynom : +--R +--R +--R 3 2 +--R - 2x + 5x + 5x +--R +--R +--R +--R 3 +--R [[ci= y x,tci= 4,cj= y,tcj= 4,c= y,tc= 5,rc= x ,trc= 3,tH= 3,tD= 3]] +--R +--R +--R +--R reduced Critpair - Polynom : +--R +--R +--R 0 +--R +--R +--R +--R 3 3 +--R [[ci= x ,tci= 3,cj= x ,tcj= 3,c= 0,tc= 0,rc= 0,trc= 0,tH= 3,tD= 2]] +--R +--R +--R +--R reduced Critpair - Polynom : +--R +--R +--R 0 +--R +--R +--R +--R 3 2 +--R [[ci= y x ,tci= 4,cj= y x,tcj= 4,c= y x ,tc= 3,rc= 0,trc= 0,tH= 3,tD= 1]] +--R +--R +--R +--R reduced Critpair - Polynom : +--R +--R +--R 0 +--R +--R +--R +--R 3 2 +--R [[ci= y,tci= 4,cj= x ,tcj= 3,c= y x ,tc= 5,rc= 0,trc= 0,tH= 3,tD= 0]] +--R +--R +--R There are +--R +--R 3 +--R +--R Groebner Basis Polynomials. +--R +--R +--R THE GROEBNER BASIS over EUCLIDEAN DOMAIN +--R +--R 2 3 2 +--R (24) [y x - y + x + 3,2y + 2x - 3x - 6,2x - 5x - 5x] +--RType: List GeneralDistributedMultivariatePolynomial([y,x],Integer,DirectProduct(2,NonNegativeInteger)) +--E 24 + +)spool +)lisp (bye) +@ +<<EuclideanGroebnerBasisPackage.help>>= +==================================================================== +euclideanGroebner examples +==================================================================== + +Example to call euclideanGroebner: + + a1:DMP([y,x],INT):= (9*x**2 + 5*x - 3)+ y*(3*x**2 + 2*x + 1) + a2:DMP([y,x],INT):= (6*x**3 - 2*x**2 - 3*x +3) + y*(2*x**3 - x - 1) + a3:DMP([y,x],INT):= (3*x**3 + 2*x**2) + y*(x**3 + x**2) + an:=[a1,a2,a3] + euclideanGroebner(an) + +This will return the weak euclidean Groebner basis set. +All reductions are total reductions. + +You can get more information by providing a second argument. +To get the reduced critical pairs do: + + euclideanGroebner(an,"redcrit") + +You can get other information by calling: + + euclideanGroebner(an,"info") + +which returns: + ci => Leading monomial for critpair calculation + tci => Number of terms of polynomial i + cj => Leading monomial for critpair calculation + tcj => Number of terms of polynomial j + c => Leading monomial of critpair polynomial + tc => Number of terms of critpair polynomial + rc => Leading monomial of redcritpair polynomial + trc => Number of terms of redcritpair polynomial + tH => Number of polynomials in reduction list H + tD => Number of critpairs still to do + +The three argument form returns all of the information: + + euclideanGroebner(an,"info","redcrit") + + +The term ordering is determined by the polynomial type used. +Suggested types include + DistributedMultivariatePolynomial + HomogeneousDistributedMultivariatePolynomial + GeneralDistributedMultivariatePolynomial + +See Also: +o )display operations euclideanGroebner +o )show EuclideanGroebnerBasisPackage +o )show DistributedMultivariatePolynomial +o )show HomogeneousDistributedMultivariatePolynomial +o )show GeneralDistributedMultivariatePolynomial + +@ +\pagehead{EuclideanGroebnerBasisPackage}{GBEUCLID} +\pagepic{ps/v104euclideangroebnerbasispackage.ps}{GBEUCLID}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\end{tabular} + +<<package GBEUCLID EuclideanGroebnerBasisPackage>>= +)abbrev package GBEUCLID EuclideanGroebnerBasisPackage +++ Authors: Gebauer, Moeller +++ Date Created: 12-1-86 +++ Date Last Updated: 2-28-91 +++ Basic Functions: +++ Related Constructors: Ideal, IdealDecompositionPackage, GroebnerPackage +++ Also See: +++ AMS Classifications: +++ Keywords: groebner basis, polynomial ideal, euclidean domain +++ References: +++ Description: \spadtype{EuclideanGroebnerBasisPackage} computes groebner +++ bases for polynomial ideals over euclidean domains. +++ The basic computation provides +++ a distinguished set of generators for these ideals. +++ This basis allows an easy test for membership: the operation +++ \spadfun{euclideanNormalForm} returns zero on ideal members. The string +++ "info" and "redcrit" can be given as additional args to provide +++ incremental information during the computation. If "info" is given, +++ a computational summary is given for each s-polynomial. If "redcrit" +++ is given, the reduced critical pairs are printed. The term ordering +++ is determined by the polynomial type used. Suggested types include +++ \spadtype{DistributedMultivariatePolynomial}, +++ \spadtype{HomogeneousDistributedMultivariatePolynomial}, +++ \spadtype{GeneralDistributedMultivariatePolynomial}. + +EuclideanGroebnerBasisPackage(Dom, Expon, VarSet, Dpol): T == C where + + Dom: EuclideanDomain + Expon: OrderedAbelianMonoidSup + VarSet: OrderedSet + Dpol: PolynomialCategory(Dom, Expon, VarSet) + + T== with + + euclideanNormalForm: (Dpol, List(Dpol) ) -> Dpol + ++ euclideanNormalForm(poly,gb) reduces the polynomial poly modulo the + ++ precomputed groebner basis gb giving a canonical representative + ++ of the residue class. + euclideanGroebner: List(Dpol) -> List(Dpol) + ++ euclideanGroebner(lp) computes a groebner basis for a polynomial + ++ ideal over a euclidean domain generated by the list of polys lp. + ++ + ++X a1:DMP([y,x],INT):= (9*x**2 + 5*x - 3)+ y*(3*x**2 + 2*x + 1) + ++X a2:DMP([y,x],INT):= (6*x**3 - 2*x**2 - 3*x +3) + y*(2*x**3 - x - 1) + ++X a3:DMP([y,x],INT):= (3*x**3 + 2*x**2) + y*(x**3 + x**2) + ++X an:=[a1,a2,a3] + ++X euclideanGroebner(an) + + euclideanGroebner: (List(Dpol), String) -> List(Dpol) + ++ euclideanGroebner(lp, infoflag) computes a groebner basis + ++ for a polynomial ideal over a euclidean domain + ++ generated by the list of polynomials lp. + ++ During computation, additional information is printed out + ++ if infoflag is given as + ++ either "info" (for summary information) or + ++ "redcrit" (for reduced critical pairs) + ++ + ++X a1:DMP([y,x],INT):= (9*x**2 + 5*x - 3)+ y*(3*x**2 + 2*x + 1) + ++X a2:DMP([y,x],INT):= (6*x**3 - 2*x**2 - 3*x +3) + y*(2*x**3 - x - 1) + ++X a3:DMP([y,x],INT):= (3*x**3 + 2*x**2) + y*(x**3 + x**2) + ++X an:=[a1,a2,a3] + ++X euclideanGroebner(an,"redcrit") + ++X euclideanGroebner(an,"info") + + euclideanGroebner: (List(Dpol), String, String ) -> List(Dpol) + ++ euclideanGroebner(lp, "info", "redcrit") computes a groebner basis + ++ for a polynomial ideal generated by the list of polynomials lp. + ++ If the second argument is "info", + ++ a summary is given of the critical pairs. + ++ If the third argument is "redcrit", critical pairs are printed. + ++ + ++X a1:DMP([y,x],INT):= (9*x**2 + 5*x - 3)+ y*(3*x**2 + 2*x + 1) + ++X a2:DMP([y,x],INT):= (6*x**3 - 2*x**2 - 3*x +3) + y*(2*x**3 - x - 1) + ++X a3:DMP([y,x],INT):= (3*x**3 + 2*x**2) + y*(x**3 + x**2) + ++X an:=[a1,a2,a3] + ++X euclideanGroebner(an,"info","redcrit") + + C== add + Ex ==> OutputForm + lc ==> leadingCoefficient + red ==> reductum + + import OutputForm + + ------ Definition list of critPair + ------ lcmfij is now lcm of headterm of poli and polj + ------ lcmcij is now lcm of of lc poli and lc polj + + critPair ==>Record(lcmfij: Expon, lcmcij: Dom, poli:Dpol, polj: Dpol ) + Prinp ==> Record( ci:Dpol,tci:Integer,cj:Dpol,tcj:Integer,c:Dpol, + tc:Integer,rc:Dpol,trc:Integer,tH:Integer,tD:Integer) + + ------ Definition of intermediate functions + + strongGbasis: (List(Dpol), Integer, Integer) -> List(Dpol) + eminGbasis: List(Dpol) -> List(Dpol) + ecritT: (critPair ) -> Boolean + ecritM: (Expon, Dom, Expon, Dom) -> Boolean + ecritB: (Expon, Dom, Expon, Dom, Expon, Dom) -> Boolean + ecrithinH: (Dpol, List(Dpol)) -> Boolean + ecritBonD: (Dpol, List(critPair)) -> List(critPair) + ecritMTondd1:(List(critPair)) -> List(critPair) + ecritMondd1:(Expon, Dom, List(critPair)) -> List(critPair) + crithdelH: (Dpol, List(Dpol)) -> List(Dpol) + eupdatF: (Dpol, List(Dpol) ) -> List(Dpol) + updatH: (Dpol, List(Dpol), List(Dpol), List(Dpol) ) -> List(Dpol) + sortin: (Dpol, List(Dpol) ) -> List(Dpol) + eRed: (Dpol, List(Dpol), List(Dpol) ) -> Dpol + ecredPol: (Dpol, List(Dpol) ) -> Dpol + esPol: (critPair) -> Dpol + updatD: (List(critPair), List(critPair)) -> List(critPair) + lepol: Dpol -> Integer + prinshINFO : Dpol -> Void + prindINFO: (critPair, Dpol, Dpol,Integer,Integer,Integer) -> Integer + prinpolINFO: List(Dpol) -> Void + prinb: Integer -> Void + + ------ MAIN ALGORITHM GROEBNER ------------------------ + euclideanGroebner( Pol: List(Dpol) ) == + eminGbasis(strongGbasis(Pol,0,0)) + + euclideanGroebner( Pol: List(Dpol), xx1: String) == + xx1 = "redcrit" => + eminGbasis(strongGbasis(Pol,1,0)) + xx1 = "info" => + eminGbasis(strongGbasis(Pol,2,1)) + print(" "::Ex) + print("WARNING: options are - redcrit and/or info - "::Ex) + print(" you didn't type them correct"::Ex) + print(" please try again"::Ex) + print(" "::Ex) + [] + + euclideanGroebner( Pol: List(Dpol), xx1: String, xx2: String) == + (xx1 = "redcrit" and xx2 = "info") or + (xx1 = "info" and xx2 = "redcrit") => + eminGbasis(strongGbasis(Pol,1,1)) + xx1 = "redcrit" and xx2 = "redcrit" => + eminGbasis(strongGbasis(Pol,1,0)) + xx1 = "info" and xx2 = "info" => + eminGbasis(strongGbasis(Pol,2,1)) + print(" "::Ex) + print("WARNING: options are - redcrit and/or info - "::Ex) + print(" you didn't type them correct"::Ex) + print(" please try again "::Ex) + print(" "::Ex) + [] + + ------ calculate basis + + strongGbasis(Pol: List(Dpol),xx1: Integer, xx2: Integer ) == + dd1, D : List(critPair) + + --------- create D and Pol + + Pol1:= sort( (degree #1 > degree #2) or + ((degree #1 = degree #2 ) and + sizeLess?(leadingCoefficient #2,leadingCoefficient #1)), + Pol) + Pol:= [first(Pol1)] + H:= Pol + Pol1:= rest(Pol1) + D:= nil + while ^null Pol1 repeat + h:= first(Pol1) + Pol1:= rest(Pol1) + en:= degree(h) + lch:= lc h + dd1:= [[sup(degree(x), en), lcm(leadingCoefficient x, lch), x, h]$critPair + for x in Pol] + D:= updatD(ecritMTondd1(sort((#1.lcmfij < #2.lcmfij) or + (( #1.lcmfij = #2.lcmfij ) and + ( sizeLess?(#1.lcmcij,#2.lcmcij)) ), + dd1)), ecritBonD(h,D)) + Pol:= cons(h, eupdatF(h, Pol)) + ((en = degree(first(H))) and (leadingCoefficient(h) = leadingCoefficient(first(H)) ) ) => + " go to top of while " + H:= updatH(h,H,crithdelH(h,H),[h]) + H:= sort((degree #1 > degree #2) or + ((degree #1 = degree #2 ) and + sizeLess?(leadingCoefficient #2,leadingCoefficient #1)), H) + D:= sort((#1.lcmfij < #2.lcmfij) or + (( #1.lcmfij = #2.lcmfij ) and + ( sizeLess?(#1.lcmcij,#2.lcmcij)) ) ,D) + xx:= xx2 + + -------- loop + + while ^null D repeat + D0:= first D + ep:=esPol(D0) + D:= rest(D) + eh:= ecredPol(eRed(ep,H,H),H) + if xx1 = 1 then + prinshINFO(eh) + eh = 0 => + if xx2 = 1 then + ala:= prindINFO(D0,ep,eh,#H, #D, xx) + xx:= 2 + " go to top of while " + eh := unitCanonical eh + e:= degree(eh) + leh:= lc eh + dd1:= [[sup(degree(x), e), lcm(leadingCoefficient x, leh), x, eh]$critPair + for x in Pol] + D:= updatD(ecritMTondd1(sort( (#1.lcmfij < + #2.lcmfij) or (( #1.lcmfij = #2.lcmfij ) and + ( sizeLess?(#1.lcmcij,#2.lcmcij)) ), dd1)), ecritBonD(eh,D)) + Pol:= cons(eh,eupdatF(eh,Pol)) + ^ecrithinH(eh,H) or + ((e = degree(first(H))) and (leadingCoefficient(eh) = leadingCoefficient(first(H)) ) ) => + if xx2 = 1 then + ala:= prindINFO(D0,ep,eh,#H, #D, xx) + xx:= 2 + " go to top of while " + H:= updatH(eh,H,crithdelH(eh,H),[eh]) + H:= sort( (degree #1 > degree #2) or + ((degree #1 = degree #2 ) and + sizeLess?(leadingCoefficient #2,leadingCoefficient #1)), H) + if xx2 = 1 then + ala:= prindINFO(D0,ep,eh,#H, #D, xx) + xx:= 2 + " go to top of while " + if xx2 = 1 then + prinpolINFO(Pol) + print(" THE GROEBNER BASIS over EUCLIDEAN DOMAIN"::Ex) + if xx1 = 1 and xx2 ^= 1 then + print(" THE GROEBNER BASIS over EUCLIDEAN DOMAIN"::Ex) + H + + -------------------------------------- + + --- erase multiple of e in D2 using crit M + + ecritMondd1(e: Expon, c: Dom, D2: List(critPair))== + null D2 => nil + x:= first(D2) + ecritM(e,c, x.lcmfij, lcm(leadingCoefficient(x.poli), leadingCoefficient(x.polj))) + => ecritMondd1(e, c, rest(D2)) + cons(x, ecritMondd1(e, c, rest(D2))) + + ------------------------------- + + ecredPol(h: Dpol, F: List(Dpol) ) == + h0:Dpol:= 0 + null F => h + while h ^= 0 repeat + h0:= h0 + monomial(leadingCoefficient(h),degree(h)) + h:= eRed(red(h), F, F) + h0 + ---------------------------- + + --- reduce dd1 using crit T and crit M + + ecritMTondd1(dd1: List(critPair))== + null dd1 => nil + f1:= first(dd1) + s1:= #(dd1) + cT1:= ecritT(f1) + s1= 1 and cT1 => nil + s1= 1 => dd1 + e1:= f1.lcmfij + r1:= rest(dd1) + f2:= first(r1) + e1 = f2.lcmfij and f1.lcmcij = f2.lcmcij => + cT1 => ecritMTondd1(cons(f1, rest(r1))) + ecritMTondd1(r1) + dd1 := ecritMondd1(e1, f1.lcmcij, r1) + cT1 => ecritMTondd1(dd1) + cons(f1, ecritMTondd1(dd1)) + + ----------------------------- + + --- erase elements in D fullfilling crit B + + ecritBonD(h:Dpol, D: List(critPair))== + null D => nil + x:= first(D) + x1:= x.poli + x2:= x.polj + ecritB(degree(h), leadingCoefficient(h), degree(x1),leadingCoefficient(x1),degree(x2),leadingCoefficient(x2)) => + ecritBonD(h, rest(D)) + cons(x, ecritBonD(h, rest(D))) + + ----------------------------- + + --- concat F and h and erase multiples of h in F + + eupdatF(h: Dpol, F: List(Dpol)) == + null F => nil + f1:= first(F) + ecritM(degree h, leadingCoefficient(h), degree f1, leadingCoefficient(f1)) + => eupdatF(h, rest(F)) + cons(f1, eupdatF(h, rest(F))) + + ----------------------------- + --- concat H and h and erase multiples of h in H + + updatH(h: Dpol, H: List(Dpol), Hh: List(Dpol), Hhh: List(Dpol)) == + null H => append(Hh,Hhh) + h1:= first(H) + hlcm:= sup(degree(h1), degree(h)) + plc:= extendedEuclidean(leadingCoefficient(h), leadingCoefficient(h1)) + hp:= monomial(plc.coef1,subtractIfCan(hlcm, degree(h))::Expon)*h + + monomial(plc.coef2,subtractIfCan(hlcm, degree(h1))::Expon)*h1 + (ecrithinH(hp, Hh) and ecrithinH(hp, Hhh)) => + hpp:= append(rest(H),Hh) + hp:= ecredPol(eRed(hp,hpp,hpp),hpp) + updatH(h, rest(H), crithdelH(hp,Hh),cons(hp,crithdelH(hp,Hhh))) + updatH(h, rest(H), Hh,Hhh) + + -------------------------------------------------- + ---- delete elements in cons(h,H) + + crithdelH(h: Dpol, H: List(Dpol))== + null H => nil + h1:= first(H) + dh1:= degree h1 + dh:= degree h + ecritM(dh, lc h, dh1, lc h1) => crithdelH(h, rest(H)) + dh1 = sup(dh,dh1) => + plc:= extendedEuclidean( lc h1, lc h) + cons(plc.coef1*h1 + monomial(plc.coef2,subtractIfCan(dh1,dh)::Expon)*h, + crithdelH(h,rest(H))) + cons(h1, crithdelH(h,rest(H))) + + eminGbasis(F: List(Dpol)) == + null F => nil + newbas := eminGbasis rest F + cons(ecredPol( first(F), newbas),newbas) + + ------------------------------------------------ + --- does h belong to H + + ecrithinH(h: Dpol, H: List(Dpol))== + null H => true + h1:= first(H) + ecritM(degree h1, lc h1, degree h, lc h) => false + ecrithinH(h, rest(H)) + + ----------------------------- + --- calculate euclidean S-polynomial of a critical pair + + esPol(p:critPair)== + Tij := p.lcmfij + fi := p.poli + fj := p.polj + lij:= lcm(leadingCoefficient(fi), leadingCoefficient(fj)) + red(fi)*monomial((lij exquo leadingCoefficient(fi))::Dom, + subtractIfCan(Tij, degree fi)::Expon) - + red(fj)*monomial((lij exquo leadingCoefficient(fj))::Dom, + subtractIfCan(Tij, degree fj)::Expon) + + ---------------------------- + + --- euclidean reduction mod F + + eRed(s: Dpol, H: List(Dpol), Hh: List(Dpol)) == + ( s = 0 or null H ) => s + f1:= first(H) + ds:= degree s + lf1:= leadingCoefficient(f1) + ls:= leadingCoefficient(s) + e: Union(Expon, "failed") + (((e:= subtractIfCan(ds, degree f1)) case "failed" ) or sizeLess?(ls, lf1) ) => + eRed(s, rest(H), Hh) + sdf1:= divide(ls, lf1) + q1:= sdf1.quotient + sdf1.remainder = 0 => + eRed(red(s) - monomial(q1,e)*reductum(f1), Hh, Hh) + eRed(s -(monomial(q1, e)*f1), rest(H), Hh) + + ---------------------------- + + --- crit T true, if e1 and e2 are disjoint + + ecritT(p: critPair) == + pi:= p.poli + pj:= p.polj + ci:= lc pi + cj:= lc pj + (p.lcmfij = degree pi + degree pj) and (p.lcmcij = ci*cj) + + ---------------------------- + + --- crit M - true, if lcm#2 multiple of lcm#1 + + ecritM(e1: Expon, c1: Dom, e2: Expon, c2: Dom) == + en: Union(Expon, "failed") + ((en:=subtractIfCan(e2, e1)) case "failed") or + ((c2 exquo c1) case "failed") => false + true + ---------------------------- + + --- crit B - true, if eik is a multiple of eh and eik ^equal + --- lcm(eh,ei) and eik ^equal lcm(eh,ek) + + ecritB(eh:Expon, ch: Dom, ei:Expon, ci: Dom, ek:Expon, ck: Dom) == + eik:= sup(ei, ek) + cik:= lcm(ci, ck) + ecritM(eh, ch, eik, cik) and + ^ecritM(eik, cik, sup(ei, eh), lcm(ci, ch)) and + ^ecritM(eik, cik, sup(ek, eh), lcm(ck, ch)) + + ------------------------------- + + --- reduce p1 mod lp + + euclideanNormalForm(p1: Dpol, lp: List(Dpol))== + eRed(p1, lp, lp) + + --------------------------------- + + --- insert element in sorted list + + sortin(p1: Dpol, lp: List(Dpol))== + null lp => [p1] + f1:= first(lp) + elf1:= degree(f1) + ep1:= degree(p1) + ((elf1 < ep1) or ((elf1 = ep1) and + sizeLess?(leadingCoefficient(f1),leadingCoefficient(p1)))) => + cons(f1,sortin(p1, rest(lp))) + cons(p1,lp) + + updatD(D1: List(critPair), D2: List(critPair)) == + null D1 => D2 + null D2 => D1 + dl1:= first(D1) + dl2:= first(D2) + (dl1.lcmfij < dl2.lcmfij) => cons(dl1, updatD(D1.rest, D2)) + cons(dl2, updatD(D1, D2.rest)) + + ---- calculate number of terms of polynomial + + lepol(p1:Dpol)== + n: Integer + n:= 0 + while p1 ^= 0 repeat + n:= n + 1 + p1:= red(p1) + n + + ---- print blanc lines + + prinb(n: Integer)== + for i in 1..n repeat messagePrint(" ") + + ---- print reduced critpair polynom + + prinshINFO(h: Dpol)== + prinb(2) + messagePrint(" reduced Critpair - Polynom :") + prinb(2) + print(h::Ex) + prinb(2) + + ------------------------------- + + ---- print info string + + prindINFO(cp: critPair, ps: Dpol, ph: Dpol, i1:Integer, + i2:Integer, n:Integer) == + ll: List Prinp + a: Dom + cpi:= cp.poli + cpj:= cp.polj + if n = 1 then + prinb(1) + messagePrint("you choose option -info- ") + messagePrint("abbrev. for the following information strings are") + messagePrint(" ci => Leading monomial for critpair calculation") + messagePrint(" tci => Number of terms of polynomial i") + messagePrint(" cj => Leading monomial for critpair calculation") + messagePrint(" tcj => Number of terms of polynomial j") + messagePrint(" c => Leading monomial of critpair polynomial") + messagePrint(" tc => Number of terms of critpair polynomial") + messagePrint(" rc => Leading monomial of redcritpair polynomial") + messagePrint(" trc => Number of terms of redcritpair polynomial") + messagePrint(" tF => Number of polynomials in reduction list F") + messagePrint(" tD => Number of critpairs still to do") + prinb(4) + n:= 2 + prinb(1) + a:= 1 + ph = 0 => + ps = 0 => + ll:= [[monomial(a,degree(cpi)),lepol(cpi),monomial(a,degree(cpj)), + lepol(cpj),ps,0,ph,0,i1,i2]$Prinp] + print(ll::Ex) + prinb(1) + n + ll:= [[monomial(a,degree(cpi)),lepol(cpi), + monomial(a,degree(cpj)),lepol(cpj),monomial(a,degree(ps)), + lepol(ps), ph,0,i1,i2]$Prinp] + print(ll::Ex) + prinb(1) + n + ll:= [[monomial(a,degree(cpi)),lepol(cpi), + monomial(a,degree(cpj)),lepol(cpj),monomial(a,degree(ps)), + lepol(ps),monomial(a,degree(ph)),lepol(ph),i1,i2]$Prinp] + print(ll::Ex) + prinb(1) + n + + ------------------------------- + + ---- print the groebner basis polynomials + + prinpolINFO(pl: List(Dpol))== + n:Integer + n:= #pl + prinb(1) + n = 1 => + print(" There is 1 Groebner Basis Polynomial "::Ex) + prinb(2) + print(" There are "::Ex) + prinb(1) + print(n::Ex) + prinb(1) + print(" Groebner Basis Polynomials. "::Ex) + prinb(2) + + +@ +<<GBEUCLID.dotabb>>= +"GBEUCLID" [color="#FF4488"... [truncated message content] |
From: <gi...@ax...> - 2009-01-31 17:24:32
|
books/bookvol10.4.pamphlet | 3445 +++++++++++++++++++- books/bookvol4.pamphlet | 145 +- books/ps/v104complexfactorization.ps | 281 ++ books/ps/v104complexfunctions2.ps | 281 ++ ...4complexintegersolvelinearpolynomialequation.ps | 281 ++ books/ps/v104complexpattern.ps | 281 ++ books/ps/v104complexpatternmatch.ps | 281 ++ books/ps/v104euclideangroebnerbasispackage.ps | 326 ++ books/ps/v104galoisgroupfactorizationutilities.ps | 281 ++ books/ps/v104galoisgroupfactorizer.ps | 281 ++ books/ps/v104galoisgrouppolynomialutilities.ps | 281 ++ books/ps/v104galoisgrouputilities.ps | 281 ++ books/ps/v104gaussianfactorizationpackage.ps | 281 ++ changelog | 26 + src/Makefile.pamphlet | 3 +- src/algebra/Makefile.pamphlet | 128 +- src/algebra/galfact.spad.pamphlet | 862 ----- src/algebra/galfactu.spad.pamphlet | 214 -- src/algebra/galpolyu.spad.pamphlet | 156 - src/algebra/galutil.spad.pamphlet | 173 - src/algebra/gaussfac.spad.pamphlet | 233 -- src/algebra/gaussian.spad.pamphlet | 303 -- src/algebra/gbeuclid.spad.pamphlet | 596 ---- src/doc/Makefile.pamphlet | 1 + src/doc/spadhelp.pamphlet | 53 - 25 files changed, 6853 insertions(+), 2621 deletions(-) New commits: commit 0e3edebd30b6673a3b08cdec5f8767b6a0d41ba2 Author: root <root@chris.localdomain> Date: Thu Jan 29 16:06:38 2009 -0500 20090130 tpd books/bookvol4.pamphlet document spadhelp 20090130 tpd src/Makefile remove parallel input testing 20090130 tpd src/algebra/Makefile fix spadhelp 20090130 tpd src/doc/Makefile pick up the spadhelp changes dynamically 20090130 tpd src/doc/spadhelp remove the static help list 20090130 tpd src/algebra/Makefile remove spad files 20090130 tpd src/algebra/gbeuclid.spad removed 20090130 tpd books/ps/v104euclideangroebnerbasispackage.ps added 20090130 tpd src/algebra/Makefile EuclideanGroebnerBasisPackage.regress added 20090130 tpd src/algebra/Makefile EuclideanGroebnerBasisPackage.help added 20090130 tpd src/algebra/gaussian.spad removed 20090130 tpd books/ps/v104complexintegersolvelinearpolynomialequation.ps 20090130 tpd books/ps/v104complexfactorization.ps added 20090130 tpd books/ps/v104complexfunctions2.ps added 20090130 tpd books/ps/v104complexpatternmatch.ps added 20090130 tpd books/ps/v104complexpattern.ps added 20090130 tpd src/algebra/gaussfac.spad removed 20090130 tpd books/ps/v104gaussianfactorizationpackage.ps added 20090130 tpd src/algebra/galutil.spad removed 20090130 tpd books/ps/v104galoisgrouputilities.ps added 20090130 tpd src/algebra/galpolyu.spad removed 20090130 tpd books/ps/v104galoisgrouppolynomialutilities.ps added 20090130 tpd src/algebra/galfactu.spad removed 20090130 tpd books/ps/v104galoisgroupfactorizationutilities.ps added 20090130 tpd src/algebra/galfact.spad removed 20090130 tpd books/ps/v104galoisgroupfactorizer.ps added 20090129 tpd src/axiom-website/patches.html 20090129.01.mxr.patch 20090129 mxr src/interp/i-funsel.boot document mmCost |
From: <da...@us...> - 2009-01-30 10:23:07
|
Revision: 1096 http://axiom.svn.sourceforge.net/axiom/?rev=1096&view=rev Author: daly Date: 2009-01-30 10:23:04 +0000 (Fri, 30 Jan 2009) Log Message: ----------- 20090129 tpd src/axiom-website/patches.html 20090129.01.mxr.patch 20090129 mxr src/interp/i-funsel.boot document mmCost Modified Paths: -------------- trunk/axiom/changelog trunk/axiom/src/axiom-website/patches.html trunk/axiom/src/interp/i-funsel.boot.pamphlet Modified: trunk/axiom/changelog =================================================================== --- trunk/axiom/changelog 2009-01-29 11:35:03 UTC (rev 1095) +++ trunk/axiom/changelog 2009-01-30 10:23:04 UTC (rev 1096) @@ -1,3 +1,5 @@ +20090129 tpd src/axiom-website/patches.html 20090129.01.mxr.patch +20090129 mxr src/interp/i-funsel.boot document mmCost 20090128 tpd src/axiom-website/patches.html 20090128.01.tpd.patch 20090128 tpd src/algebra/Makefile remove spad files 20090128 tpd src/algebra/funcpkgs.spad removed Modified: trunk/axiom/src/axiom-website/patches.html =================================================================== --- trunk/axiom/src/axiom-website/patches.html 2009-01-29 11:35:03 UTC (rev 1095) +++ trunk/axiom/src/axiom-website/patches.html 2009-01-30 10:23:04 UTC (rev 1096) @@ -913,5 +913,7 @@ bookvol10.4 add packages<br/> <a href="patches/20090128.01.tpd.patch">20090128.01.tpd.patch</a> bookvol10.4 add packages<br/> +<a href="patches/20090129.01.mxr.patch">20090129.01.mxr.patch</a> +i-funsel.boot document mmCost<br/> </body> </html> Modified: trunk/axiom/src/interp/i-funsel.boot.pamphlet =================================================================== --- trunk/axiom/src/interp/i-funsel.boot.pamphlet 2009-01-29 11:35:03 UTC (rev 1095) +++ trunk/axiom/src/interp/i-funsel.boot.pamphlet 2009-01-30 10:23:04 UTC (rev 1096) @@ -631,6 +631,31 @@ mmS := [mm,:mmS] nreverse mmS +@ +mmCost assigns a penalty to each signature according to the following +formula: +\begin{verbatim} + 10000*n + 1000*domainDepth(res) + hitListOfTargets(res) +\end{verbatim} +where: +\begin{itemize} +\item {\bf n} is a penalty taking into account the number of coercions +necessary to coerce the types of the given arguments to those of the +signature under consideration. +\item {\bf res} is the codomain of the signature +\item {\bf hitListOfTarget} assigns a penalty between 1 and 1600 using +a short list of constructors: Polynomial (300), List (400), 500 is the +default, UniversalSegment (501), RationalFunction (900), Matrix (910), +Union (999), Expression (1600). Note that RationalFunction is actually +not a domain, so it should never happen. +\item {\bf domainDepth} calculates the maximal depth of the type +\item {\bf finally} the preference order of PI, NNI, and DFLOAT as +targets is done at the very end. +\end{itemize} +In particular, note that if we have two signatures taking types A and B, +and the given argument does not match exactly but has to be coerced, then +the types A and B themselves are not sorted by preference. +<<*>>= mmCost(name, sig,cond,tar,args1,args2) == cost := mmCost0(name, sig,cond,tar,args1,args2) res := CADR sig This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <gi...@ax...> - 2009-01-30 10:18:01
|
changelog | 2 ++ src/axiom-website/patches.html | 2 ++ src/interp/i-funsel.boot.pamphlet | 25 +++++++++++++++++++++++++ 3 files changed, 29 insertions(+), 0 deletions(-) New commits: commit e9086c7f4a4264cea45c7f7e274ad1785c1c0be0 Author: root <root@chris.localdomain> Date: Wed Jan 28 14:22:26 2009 -0500 20090129 tpd src/axiom-website/patches.html 20090129.01.mxr.patch 20090129 mxr src/interp/i-funsel.boot document mmCost |
From: <da...@us...> - 2009-01-29 12:22:11
|
Revision: 1095 http://axiom.svn.sourceforge.net/axiom/?rev=1095&view=rev Author: daly Date: 2009-01-29 11:35:03 +0000 (Thu, 29 Jan 2009) Log Message: ----------- 20090128 tpd src/axiom-website/patches.html 20090128.01.tpd.patch 20090128 tpd src/algebra/Makefile remove spad files 20090128 tpd src/algebra/funcpkgs.spad removed 20090128 tpd books/ps/v104functionspaceunivariatepolynomialfactor.ps added 20090128 tpd src/algebra/fspace.spad removed 20090128 tpd books/ps/v104functionspacefunctions2.ps added 20090128 tpd books/ps/v104expressionspacefunctions2.ps added 20090128 tpd books/ps/v104expressionspacefunctions1.ps added 20090128 tpd src/algebra/fs2ups.spad removed 20090128 tpd books/ps/v104functionspacetounivariatepowerseries.ps added 20090128 tpd src/algebra/fs2expxp.spad removed 20090128 tpd books/ps/v104functionspacetoexponentialexpansion.ps added 20090128 tpd src/algebra/fr.spad removed 20090128 tpd books/ps/v104FactoredFunctions2.ps added 20090128 tpd books/ps/v104factoredfunctionutilities.ps added 20090128 tpd src/algebra/fraction.spad removed 20090128 tpd books/ps/v104fractionfunctions2.ps added 20090128 tpd books/ps/v104linearpolynomialequationbyfractions.ps added 20090128 tpd books/ps/v104quotientfieldcategoryfunctions2.ps removed 20090128 tpd src/algebra/fortpak.spad removed 20090128 tpd books/ps/v104multivariablecalculusfunctions.ps added 20090128 tpd books/ps/v104templateutilities.ps added 20090128 tpd books/ps/v104fortranoutputstackpackage.ps added 20090128 tpd books/ps/v104fortranpackage.ps added 20090128 tpd books/ps/v104naglinksupportpackage.ps added 20090128 tpd books/ps/v104fortrancodepackage1.ps added 20090128 tpd src/algebra/formula.spad removed 20090128 tpd books/ps/v104scriptformulaformat1.ps added 20090128 tpd src/algebra/fnla.spad removed 20090128 tpd books/ps/v104hallbasis.ps added 20090128 tpd src/algebra/ffx.spad removed 20090128 tpd books/ps/v104irredpolyoverfinitefield.ps added 20090128 tpd src/algebra/ffpoly.spad removed 20090128 tpd books/ps/v104finitefieldpolynomialpackage.ps added 20090128 tpd src/algebra/ffpoly2.spad removed 20090128 tpd books/ps/v104finitefieldpolynomialpackage2.ps added 20090128 tpd src/algebra/ffnb.spad removed 20090128 tpd books/ps/v104innernormalbasisfieldfunctions.ps added 20090128 tpd ps/v104innernormalbasisfieldfunctions.ps added 20090128 tpd src/algebra/ffhom.spad removed 20090128 tpd books/ps/v104finitefieldhomomorphisms.ps added 20090128 tpd src/algebra/fff.spad removed 20090128 tpd books/ps/v104finitefieldfunctions.ps added 20090128 tpd src/algebra/fffg.spad removed 20090128 tpd books/ps/v104newtoninterpolation.ps added 20090128 tpd books/ps/v104fractionfreefastgaussianfractions.ps added 20090128 tpd books/ps/v104fractionfreefastgaussian.ps added 20090128 tpd books/ps/v104finiteabelianmonoidringfunctions2.ps added 20090128 tpd src/algebra/ffcat.spad removed 20090128 tpd books/ps/v104finitefieldsolvelinearpolynomialequation.ps added 20090128 tpd books/ps/v104discretelogarithmpackage.ps added 20090128 tpd src/algebra/facutil.spad removed 20090128 tpd books/ps/v104pushvariables.ps added 20090128 tpd books/ps/v104factoringutilities.ps added 20080128 tpd src/algebra/f07.spad removed 20090128 tpd books/ps/v104naglapack.ps added 20090128 tpd src/algebra/f04.spad removed 20090128 tpd books/ps/v104naglinearequationsolvingpackage.ps added 20090128 tpd src/algebra/f02.spad removed 20090128 tpd books/ps/v104nageigenpackage.ps added 20090128 tpd src/algebra/f01.spad removed 20090128 tpd books/ps/v104nagmatrixoperationspackage.ps added Modified Paths: -------------- trunk/axiom/books/bookvol10.4.pamphlet trunk/axiom/changelog trunk/axiom/src/algebra/Makefile.pamphlet trunk/axiom/src/axiom-website/patches.html Added Paths: ----------- trunk/axiom/books/ps/v104FactoredFunctions2.ps trunk/axiom/books/ps/v104discretelogarithmpackage.ps trunk/axiom/books/ps/v104expressionspacefunctions1.ps trunk/axiom/books/ps/v104expressionspacefunctions2.ps trunk/axiom/books/ps/v104factoredfunctionutilities.ps trunk/axiom/books/ps/v104factoringutilities.ps trunk/axiom/books/ps/v104finiteabelianmonoidringfunctions2.ps trunk/axiom/books/ps/v104finitefieldfunctions.ps trunk/axiom/books/ps/v104finitefieldhomomorphisms.ps trunk/axiom/books/ps/v104finitefieldpolynomialpackage.ps trunk/axiom/books/ps/v104finitefieldpolynomialpackage2.ps trunk/axiom/books/ps/v104finitefieldsolvelinearpolynomialequation.ps trunk/axiom/books/ps/v104fortrancodepackage1.ps trunk/axiom/books/ps/v104fortranoutputstackpackage.ps trunk/axiom/books/ps/v104fortranpackage.ps trunk/axiom/books/ps/v104fractionfreefastgaussian.ps trunk/axiom/books/ps/v104fractionfreefastgaussianfractions.ps trunk/axiom/books/ps/v104fractionfunctions2.ps trunk/axiom/books/ps/v104functionspacefunctions2.ps trunk/axiom/books/ps/v104functionspacetoexponentialexpansion.ps trunk/axiom/books/ps/v104functionspacetounivariatepowerseries.ps trunk/axiom/books/ps/v104functionspaceunivariatepolynomialfactor.ps trunk/axiom/books/ps/v104hallbasis.ps trunk/axiom/books/ps/v104innernormalbasisfieldfunctions.ps trunk/axiom/books/ps/v104irredpolyoverfinitefield.ps trunk/axiom/books/ps/v104linearpolynomialequationbyfractions.ps trunk/axiom/books/ps/v104multivariablecalculusfunctions.ps trunk/axiom/books/ps/v104nageigenpackage.ps trunk/axiom/books/ps/v104naglapack.ps trunk/axiom/books/ps/v104naglinearequationsolvingpackage.ps trunk/axiom/books/ps/v104naglinksupportpackage.ps trunk/axiom/books/ps/v104nagmatrixoperationspackage.ps trunk/axiom/books/ps/v104newtoninterpolation.ps trunk/axiom/books/ps/v104pushvariables.ps trunk/axiom/books/ps/v104quotientfieldcategoryfunctions2.ps trunk/axiom/books/ps/v104scriptformulaformat1.ps trunk/axiom/books/ps/v104templateutilities.ps Removed Paths: ------------- trunk/axiom/src/algebra/f01.spad.pamphlet trunk/axiom/src/algebra/f02.spad.pamphlet trunk/axiom/src/algebra/f04.spad.pamphlet trunk/axiom/src/algebra/f07.spad.pamphlet trunk/axiom/src/algebra/facutil.spad.pamphlet trunk/axiom/src/algebra/ffcat.spad.pamphlet trunk/axiom/src/algebra/fff.spad.pamphlet trunk/axiom/src/algebra/fffg.spad.pamphlet trunk/axiom/src/algebra/ffhom.spad.pamphlet trunk/axiom/src/algebra/ffnb.spad.pamphlet trunk/axiom/src/algebra/ffpoly.spad.pamphlet trunk/axiom/src/algebra/ffpoly2.spad.pamphlet trunk/axiom/src/algebra/ffx.spad.pamphlet trunk/axiom/src/algebra/fnla.spad.pamphlet trunk/axiom/src/algebra/formula.spad.pamphlet trunk/axiom/src/algebra/fortpak.spad.pamphlet trunk/axiom/src/algebra/fr.spad.pamphlet trunk/axiom/src/algebra/fraction.spad.pamphlet trunk/axiom/src/algebra/fs2expxp.spad.pamphlet trunk/axiom/src/algebra/fs2ups.spad.pamphlet trunk/axiom/src/algebra/fspace.spad.pamphlet trunk/axiom/src/algebra/funcpkgs.spad.pamphlet Modified: trunk/axiom/books/bookvol10.4.pamphlet =================================================================== --- trunk/axiom/books/bookvol10.4.pamphlet 2009-01-28 11:29:26 UTC (rev 1094) +++ trunk/axiom/books/bookvol10.4.pamphlet 2009-01-29 11:35:03 UTC (rev 1095) @@ -6975,6 +6975,102 @@ @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{package DLP DiscreteLogarithmPackage} +\pagehead{DiscreteLogarithmPackage}{DLP} +\pagepic{ps/v104discretelogarithmpackage.ps}{DLP}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\end{tabular} + +<<package DLP DiscreteLogarithmPackage>>= +)abbrev package DLP DiscreteLogarithmPackage +++ Author: J. Grabmeier, A. Scheerhorn +++ Date Created: 12 March 1991 +++ Date Last Updated: 31 March 1991 +++ Basic Operations: +++ Related Constructors: +++ Also See: +++ AMS Classifications: +++ Keywords: discrete logarithm +++ References: +++ J. Grabmeier, A. Scheerhorn: Finite Fields in AXIOM. +++ AXIOM Technical Report Series, ATR/5 NP2522. +++ Description: +++ DiscreteLogarithmPackage implements help functions for discrete logarithms +++ in monoids using small cyclic groups. + +DiscreteLogarithmPackage(M): public == private where + M : Join(Monoid,Finite) with + "**": (M,Integer) -> M + ++ x ** n returns x raised to the integer power n + public ==> with + shanksDiscLogAlgorithm:(M,M,NonNegativeInteger)-> _ + Union(NonNegativeInteger,"failed") + ++ shanksDiscLogAlgorithm(b,a,p) computes s with \spad{b**s = a} for + ++ assuming that \spad{a} and b are elements in a 'small' cyclic group of + ++ order p by Shank's algorithm. + ++ Note: this is a subroutine of the function \spadfun{discreteLog}. + I ==> Integer + PI ==> PositiveInteger + NNI ==> NonNegativeInteger + SUP ==> SparseUnivariatePolynomial + DLP ==> DiscreteLogarithmPackage + + private ==> add + shanksDiscLogAlgorithm(logbase,c,p) == + limit:Integer:= 30 + -- for logarithms up to cyclic groups of order limit a full + -- logarithm table is computed + p < limit => + a:M:=1 + disclog:Integer:=0 + found:Boolean:=false + for i in 0..p-1 while not found repeat + a = c => + disclog:=i + found:=true + a:=a*logbase + not found => + messagePrint("discreteLog: second argument not in cyclic group_ + generated by first argument")$OutputForm + "failed" + disclog pretend NonNegativeInteger + l:Integer:=length(p)$Integer + if odd?(l)$Integer then n:Integer:= shift(p,-(l quo 2)) + else n:Integer:= shift(1,(l quo 2)) + a:M:=1 + exptable : Table(PI,NNI) :=table()$Table(PI,NNI) + for i in (0::NNI)..(n-1)::NNI repeat + insert_!([lookup(a),i::NNI]$Record(key:PI,entry:NNI),_ + exptable)$Table(PI,NNI) + a:=a*logbase + found := false + end := (p-1) quo n + disclog:Integer:=0 + a := c + b := logbase ** (-n) + for i in 0..end while not found repeat + rho:= search(lookup(a),exptable)_ + $Table(PositiveInteger,NNI) + rho case NNI => + found := true + disclog:= n * i + rho pretend Integer + a := a * b + not found => + messagePrint("discreteLog: second argument not in cyclic group_ + generated by first argument")$OutputForm + "failed" + disclog pretend NonNegativeInteger + +@ +<<DLP.dotabb>>= +"DLP" [color="#FF4488",href="bookvol10.4.pdf#nameddest=DLP"] +"OAMONS" [color="#4488FF",href="bookvol10.2.pdf#nameddest=OAMONS"] +"DLP" -> "OAMONS" + +@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{package DDFACT DistinctDegreeFactorize} \pagehead{DistinctDegreeFactorize}{DDFACT} \pagepic{ps/v104distinctdegreefactorize.ps}{DDFACT}{1.00} @@ -11651,6 +11747,81 @@ @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{package ES1 ExpressionSpaceFunctions1} +\pagehead{ExpressionSpaceFunctions1}{ES1} +\pagepic{ps/v104expressionspacefunctions1.ps}{ES1}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\end{tabular} + +<<package ES1 ExpressionSpaceFunctions1>>= +)abbrev package ES1 ExpressionSpaceFunctions1 +++ Lifting of maps from expression spaces to kernels over them +++ Author: Manuel Bronstein +++ Date Created: 23 March 1988 +++ Date Last Updated: 19 April 1991 +++ Description: +++ This package allows a map from any expression space into any object +++ to be lifted to a kernel over the expression set, using a given +++ property of the operator of the kernel. +-- should not be exposed +ExpressionSpaceFunctions1(F:ExpressionSpace, S:Type): with + map: (F -> S, String, Kernel F) -> S + ++ map(f, p, k) uses the property p of the operator + ++ of k, in order to lift f and apply it to k. + + == add + -- prop contains an evaluation function List S -> S + map(F2S, prop, k) == + args := [F2S x for x in argument k]$List(S) + (p := property(operator k, prop)) case None => + ((p::None) pretend (List S -> S)) args + error "Operator does not have required property" + +@ +<<ES1.dotabb>>= +"ES1" [color="#FF4488",href="bookvol10.4.pdf#nameddest=ES1"] +"EVALAB" [color="#4488FF",href="bookvol10.2.pdf#nameddest=EVALAB"] +"ES1" -> "EVALAB" + +@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{package ES2 ExpressionSpaceFunctions2} +\pagehead{ExpressionSpaceFunctions2}{ES2} +\pagepic{ps/v104expressionspacefunctions2.ps}{ES2}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\end{tabular} + +<<package ES2 ExpressionSpaceFunctions2>>= +)abbrev package ES2 ExpressionSpaceFunctions2 +++ Lifting of maps from expression spaces to kernels over them +++ Author: Manuel Bronstein +++ Date Created: 23 March 1988 +++ Date Last Updated: 19 April 1991 +++ Description: +++ This package allows a mapping E -> F to be lifted to a kernel over E; +++ This lifting can fail if the operator of the kernel cannot be applied +++ in F; Do not use this package with E = F, since this may +++ drop some properties of the operators. +ExpressionSpaceFunctions2(E:ExpressionSpace, F:ExpressionSpace): with + map: (E -> F, Kernel E) -> F + ++ map(f, k) returns \spad{g = op(f(a1),...,f(an))} where + ++ \spad{k = op(a1,...,an)}. + == add + map(f, k) == + (operator(operator k)$F) [f x for x in argument k]$List(F) + +@ +<<ES2.dotabb>>= +"ES2" [color="#FF4488",href="bookvol10.4.pdf#nameddest=ES2"] +"EVALAB" [color="#4488FF",href="bookvol10.2.pdf#nameddest=EVALAB"] +"ES2" -> "EVALAB" + +@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{package EXPRODE ExpressionSpaceODESolver} \pagehead{ExpressionSpaceODESolver}{EXPRODE} \pagepic{ps/v104expressionspaceodesolver.ps}{EXPRODE}{1.00} @@ -12484,6 +12655,397 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \chapter{Chapter F} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{package FR2 FactoredFunctions2} +\pagehead{FactoredFunctions2}{FR2} +\pagepic{ps/v104FactoredFunctions2.ps}{FR2}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\end{tabular} + +<<FR2.dotabb>>= +"FR2" [color="#FF4488",href="bookvol10.4.pdf#nameddest=FR2"] + +@ +<<FactoredFunctions2.input>>= +-- fr.spad.pamphlet FactoredFunctions2.input +)spool FactoredFunctions2.output +)set message test on +)set message auto off +)clear all +--S 1 of 6 +double(x) == x + x +--R +--R Type: Void +--E 1 + +--S 2 of 6 +f := factor(720) +--R +--R +--R 4 2 +--R (2) 2 3 5 +--R Type: Factored Integer +--E 2 + +--S 3 of 6 +map(double,f) +--R +--R Compiling function double with type Integer -> Integer +--R +--R 4 2 +--R (3) 2 4 6 10 +--R Type: Factored Integer +--E 3 + +--S 4 of 6 +makePoly(b) == x + b +--R +--R Type: Void +--E 4 + +--S 5 of 6 +g := map(makePoly,f) +--R +--R Compiling function makePoly with type Integer -> Polynomial Integer +--R +--R 4 2 +--R (5) (x + 1)(x + 2) (x + 3) (x + 5) +--R Type: Factored Polynomial Integer +--E 5 + +--S 6 of 6 +nthFlag(g,1) +--R +--R +--R (6) "nil" +--R Type: Union("nil",...) +--E 6 +)spool +)lisp (bye) +@ + +<<FactoredFunctions2.help>>= +==================================================================== +FactoredFunctions2 examples +==================================================================== + +The FactoredFunctions2 package implements one operation, map, for +applying an operation to every base in a factored object and to the unit. + + double(x) == x + x + Type: Void + + f := factor(720) + 4 2 + 2 3 5 + Type: Factored Integer + +Actually, the map operation used in this example comes from Factored +itself, since double takes an integer argument and returns an integer +result. + + map(double,f) + 4 2 + 2 4 6 10 + Type: Factored Integer + +If we want to use an operation that returns an object that has a type +different from the operation's argument, the map in Factored cannot be +used and we use the one in FactoredFunctions2. + + makePoly(b) == x + b + 4 2 + (x + 1)(x + 2) (x + 3) (x + 5) + Type: Factored Polynomial Integer + +In fact, the "2" in the name of the package means that we might +be using factored objects of two different types. + + g := map(makePoly,f) + +It is important to note that both versions of map destroy any information +known about the bases (the fact that they are prime, for instance). + +The flags for each base are set to "nil" in the object returned by map. + + nthFlag(g,1) + "nil" + Type: Union("nil",...) + +See Also: +o )help Factored +o )show FactoredFunctions2 +o $AXIOM/doc/src/algebra/fr.spad.dvi + +@ +<<package FR2 FactoredFunctions2>>= +)abbrev package FR2 FactoredFunctions2 +++ Author: Robert S. Sutor +++ Date Created: 1987 +++ Change History: +++ Basic Operations: map +++ Related Constructors: Factored +++ Also See: +++ AMS Classifications: 11A51, 11Y05 +++ Keywords: map, factor +++ References: +++ Description: +++ \spadtype{FactoredFunctions2} contains functions that involve +++ factored objects whose underlying domains may not be the same. +++ For example, \spadfun{map} might be used to coerce an object of +++ type \spadtype{Factored(Integer)} to +++ \spadtype{Factored(Complex(Integer))}. +FactoredFunctions2(R, S): Exports == Implementation where + R: IntegralDomain + S: IntegralDomain + + Exports ==> with + map: (R -> S, Factored R) -> Factored S + ++ map(fn,u) is used to apply the function \userfun{fn} to every + ++ factor of \spadvar{u}. The new factored object will have all its + ++ information flags set to "nil". This function is used, for + ++ example, to coerce every factor base to another type. + + Implementation ==> add + map(func, f) == + func(unit f) * + _*/[nilFactor(func(g.factor), g.exponent) for g in factors f] + +@ +<<FR2.dotabb>>= +"FR2" [color="#FF4488",href="bookvol10.4.pdf#nameddest=FR2"] +"ALGEBRA" [color="#4488FF",href="bookvol10.2.pdf#nameddest=ALGEBRA"] +"FR2" -> "ALGEBRA" + +@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{package FRUTIL FactoredFunctionUtilities} +\pagehead{FactoredFunctionUtilities}{FRUTIL} +\pagepic{ps/v104factoredfunctionutilities.ps}{FRUTIL}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\end{tabular} + +<<package FRUTIL FactoredFunctionUtilities>>= +)abbrev package FRUTIL FactoredFunctionUtilities +++ Author: +++ Date Created: +++ Change History: +++ Basic Operations: refine, mergeFactors +++ Related Constructors: Factored +++ Also See: +++ AMS Classifications: 11A51, 11Y05 +++ Keywords: factor +++ References: +++ Description: +++ \spadtype{FactoredFunctionUtilities} implements some utility +++ functions for manipulating factored objects. +FactoredFunctionUtilities(R): Exports == Implementation where + R: IntegralDomain + FR ==> Factored R + + Exports ==> with + refine: (FR, R-> FR) -> FR + ++ refine(u,fn) is used to apply the function \userfun{fn} to + ++ each factor of \spadvar{u} and then build a new factored + ++ object from the results. For example, if \spadvar{u} were + ++ created by calling \spad{nilFactor(10,2)} then + ++ \spad{refine(u,factor)} would create a factored object equal + ++ to that created by \spad{factor(100)} or + ++ \spad{primeFactor(2,2) * primeFactor(5,2)}. + + mergeFactors: (FR,FR) -> FR + ++ mergeFactors(u,v) is used when the factorizations of \spadvar{u} + ++ and \spadvar{v} are known to be disjoint, e.g. resulting from a + ++ content/primitive part split. Essentially, it creates a new + ++ factored object by multiplying the units together and appending + ++ the lists of factors. + + Implementation ==> add + fg: FR + func: R -> FR + fUnion ==> Union("nil", "sqfr", "irred", "prime") + FF ==> Record(flg: fUnion, fctr: R, xpnt: Integer) + + mergeFactors(f,g) == + makeFR(unit(f)*unit(g),append(factorList f,factorList g)) + + refine(f, func) == + u := unit(f) + l: List FF := empty() + for item in factorList f repeat + fitem := func item.fctr + u := u*unit(fitem) ** (item.xpnt :: NonNegativeInteger) + if item.xpnt = 1 then + l := concat(factorList fitem,l) + else l := concat([[v.flg,v.fctr,v.xpnt*item.xpnt] + for v in factorList fitem],l) + makeFR(u,l) + +@ +<<FRUTIL.dotabb>>= +"FRUTIL" [color="#FF4488",href="bookvol10.4.pdf#nameddest=FRUTIL"] +"ALGEBRA" [color="#4488FF",href="bookvol10.2.pdf#nameddest=ALGEBRA"] +"FRUTIL" -> "ALGEBRA" + +@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{package FACUTIL FactoringUtilities} +\pagehead{FactoringUtilities}{FACUTIL} +\pagepic{ps/v104factoringutilities.ps}{FACUTIL}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\end{tabular} + +<<package FACUTIL FactoringUtilities>>= +)abbrev package FACUTIL FactoringUtilities +++ Author: Barry Trager +++ Date Created: March 12, 1992 +++ Date Last Updated: +++ Basic Functions: +++ Related Constructors: +++ Also See: +++ AMS Classifications: +++ Keywords: +++ References: +++ Description: +++ This package provides utilities used by the factorizers +++ which operate on polynomials represented as univariate polynomials +++ with multivariate coefficients. + +FactoringUtilities(E,OV,R,P) : C == T where + E : OrderedAbelianMonoidSup + OV : OrderedSet + R : Ring + P : PolynomialCategory(R,E,OV) + + SUP ==> SparseUnivariatePolynomial + NNI ==> NonNegativeInteger + Z ==> Integer + + C == with + completeEval : (SUP P,List OV,List R) -> SUP R + ++ completeEval(upoly, lvar, lval) evaluates the polynomial upoly + ++ with each variable in lvar replaced by the corresponding value + ++ in lval. Substitutions are done for all variables in upoly + ++ producing a univariate polynomial over R. + degree : (SUP P,List OV) -> List NNI + ++ degree(upoly, lvar) returns a list containing the maximum + ++ degree for each variable in lvar. + variables : SUP P -> List OV + ++ variables(upoly) returns the list of variables for the coefficients + ++ of upoly. + lowerPolynomial: SUP P -> SUP R + ++ lowerPolynomial(upoly) converts upoly to be a univariate polynomial + ++ over R. An error if the coefficients contain variables. + raisePolynomial: SUP R -> SUP P + ++ raisePolynomial(rpoly) converts rpoly from a univariate polynomial + ++ over r to be a univariate polynomial with polynomial coefficients. + normalDeriv : (SUP P,Z) -> SUP P + ++ normalDeriv(poly,i) computes the ith derivative of poly divided + ++ by i!. + ran : Z -> R + ++ ran(k) computes a random integer between -k and k as a member of R. + + T == add + + lowerPolynomial(f:SUP P) : SUP R == + zero? f => 0$SUP(R) + monomial(ground leadingCoefficient f, degree f)$SUP(R) + + lowerPolynomial(reductum f) + + raisePolynomial(u:SUP R) : SUP P == + zero? u => 0$SUP(P) + monomial(leadingCoefficient(u)::P, degree u)$SUP(P) + + raisePolynomial(reductum u) + + completeEval(f:SUP P,lvar:List OV,lval:List R) : SUP R == + zero? f => 0$SUP(R) + monomial(ground eval(leadingCoefficient f,lvar,lval),degree f)$SUP(R) + + completeEval(reductum f,lvar,lval) + + degree(f:SUP P,lvar:List OV) : List NNI == + coefs := coefficients f + ldeg:= ["max"/[degree(fc,xx) for fc in coefs] for xx in lvar] + + variables(f:SUP P) : List OV == + "setUnion"/[variables cf for cf in coefficients f] + + if R has FiniteFieldCategory then + ran(k:Z):R == random()$R + else + ran(k:Z):R == (random(2*k+1)$Z -k)::R + + -- Compute the normalized m derivative + normalDeriv(f:SUP P,m:Z) : SUP P== + (n1:Z:=degree f) < m => 0$SUP(P) + n1=m => (leadingCoefficient f)::SUP(P) + k:=binomial(n1,m) + ris:SUP:=0$SUP(P) + n:Z:=n1 + while n>= m repeat + while n1>n repeat + k:=(k*(n1-m)) quo n1 + n1:=n1-1 + ris:=ris+monomial(k*leadingCoefficient f,(n-m)::NNI) + f:=reductum f + n:=degree f + ris + +@ +<<FACUTIL.dotabb>>= +"FACUTIL" [color="#FF4488",href="bookvol10.4.pdf#nameddest=FACUTIL"] +"PFECAT" [color="#4488FF",href="bookvol10.2.pdf#nameddest=PFECAT"] +"FACUTIL" -> "PFECAT" + +@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{package FAMR2 FiniteAbelianMonoidRingFunctions2} +\pagehead{FiniteAbelianMonoidRingFunctions2}{FAMR2} +\pagepic{ps/v104finiteabelianmonoidringfunctions2.ps}{FAMR2}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\end{tabular} + +<<package FAMR2 FiniteAbelianMonoidRingFunctions2>>= +)abbrev package FAMR2 FiniteAbelianMonoidRingFunctions2 +++ Author: Martin Rubey +++ Description: +++ This package provides a mapping function for +++ \spadtype{FiniteAbelianMonoidRing} +++ The packages defined in this file provide fast fraction free rational +++ interpolation algorithms. (see FAMR2, FFFG, FFFGF, NEWTON) +FiniteAbelianMonoidRingFunctions2(E: OrderedAbelianMonoid, + R1: Ring, + A1: FiniteAbelianMonoidRing(R1, E), + R2: Ring, + A2: FiniteAbelianMonoidRing(R2, E)) _ + : Exports == Implementation where + Exports == with + + map: (R1 -> R2, A1) -> A2 + ++ \spad{map}(f, a) applies the map f to each coefficient in a. It is + ++ assumed that f maps 0 to 0 + + Implementation == add + + map(f: R1 -> R2, a: A1): A2 == + if zero? a then 0$A2 + else + monomial(f leadingCoefficient a, degree a)$A2 + map(f, reductum a) + +@ +<<FAMR2.dotabb>>= +"FAMR2" [color="#FF4488",href="bookvol10.4.pdf#nameddest=FAMR2"] +"FAMR" [color="#4488FF",href="bookvol10.2.pdf#nameddest=FAMR"] +"FAMR2" -> "FAMR" + +@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{package FDIV2 FiniteDivisorFunctions2} \pagehead{FiniteDivisorFunctions2}{FDIV2} \pagepic{ps/v104finitedivisorfunctions2.ps}{FDIV2}{1.00} @@ -12532,6 +13094,1829 @@ @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{package FFF FiniteFieldFunctions} +\pagehead{FiniteFieldFunctions}{FFF} +\pagepic{ps/v104finitefieldfunctions.ps}{FFF}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\end{tabular} + +<<package FFF FiniteFieldFunctions>>= +)abbrev package FFF FiniteFieldFunctions +++ Author: J. Grabmeier, A. Scheerhorn +++ Date Created: 21 March 1991 +++ Date Last Updated: 31 March 1991 +++ Basic Operations: +++ Related Constructors: +++ Also See: +++ AMS Classifications: +++ References: +++ Lidl, R. & Niederreiter, H., "Finite Fields", +++ Encycl. of Math. 20, Addison-Wesley, 1983 +++ J. Grabmeier, A. Scheerhorn: Finite Fields in AXIOM. +++ AXIOM Technical Report Series, ATR/5 NP2522. +++ Description: +++ FiniteFieldFunctions(GF) is a package with functions +++ concerning finite extension fields of the finite ground field {\em GF}, +++ e.g. Zech logarithms. +++ Keywords: finite field, Zech logarithm, Jacobi logarithm, normal basis + +FiniteFieldFunctions(GF): Exports == Implementation where + GF : FiniteFieldCategory -- the ground field + + PI ==> PositiveInteger + NNI ==> NonNegativeInteger + I ==> Integer + SI ==> SingleInteger + SUP ==> SparseUnivariatePolynomial GF + V ==> Vector + M ==> Matrix + L ==> List + OUT ==> OutputForm + SAE ==> SimpleAlgebraicExtension + ARR ==> PrimitiveArray(SI) + TERM ==> Record(value:GF,index:SI) + MM ==> ModMonic(GF,SUP) + PF ==> PrimeField + + Exports ==> with + + createZechTable: SUP -> ARR + ++ createZechTable(f) generates a Zech logarithm table for the cyclic + ++ group representation of a extension of the ground field by the + ++ primitive polynomial {\em f(x)}, i.e. \spad{Z(i)}, + ++ defined by {\em x**Z(i) = 1+x**i} is stored at index i. + ++ This is needed in particular + ++ to perform addition of field elements in finite fields represented + ++ in this way. See \spadtype{FFCGP}, \spadtype{FFCGX}. + createMultiplicationTable: SUP -> V L TERM + ++ createMultiplicationTable(f) generates a multiplication + ++ table for the normal basis of the field extension determined + ++ by {\em f}. This is needed to perform multiplications + ++ between elements represented as coordinate vectors to this basis. + ++ See \spadtype{FFNBP}, \spadtype{FFNBX}. + createMultiplicationMatrix: V L TERM -> M GF + ++ createMultiplicationMatrix(m) forms the multiplication table + ++ {\em m} into a matrix over the ground field. + -- only useful for the user to visualise the multiplication table + -- in a nice form + sizeMultiplication: V L TERM -> NNI + ++ sizeMultiplication(m) returns the number of entries + ++ of the multiplication table {\em m}. + -- the time of the multiplication of field elements depends + -- on this size + createLowComplexityTable: PI -> Union(Vector List TERM,"failed") + ++ createLowComplexityTable(n) tries to find + ++ a low complexity normal basis of degree {\em n} over {\em GF} + ++ and returns its multiplication matrix + ++ Fails, if it does not find a low complexity basis + createLowComplexityNormalBasis: PI -> Union(SUP, V L TERM) + ++ createLowComplexityNormalBasis(n) tries to find a + ++ a low complexity normal basis of degree {\em n} over {\em GF} + ++ and returns its multiplication matrix + ++ If no low complexity basis is found it calls + ++ \axiomFunFrom{createNormalPoly}{FiniteFieldPolynomialPackage}(n) + ++ to produce a normal + ++ polynomial of degree {\em n} over {\em GF} + + Implementation ==> add + + + createLowComplexityNormalBasis(n) == + (u:=createLowComplexityTable(n)) case "failed" => + createNormalPoly(n)$FiniteFieldPolynomialPackage(GF) + u::(V L TERM) + +-- try to find a low complexity normal basis multiplication table +-- of the field of extension degree n +-- the algorithm is from: +-- Wassermann A., Konstruktion von Normalbasen, +-- Bayreuther Mathematische Schriften 31 (1989),1-9. + + createLowComplexityTable(n) == + q:=size()$GF + -- this algorithm works only for prime fields + p:=characteristic()$GF + -- search of a suitable parameter k + k:NNI:=0 + for i in 1..n-1 while (k=0) repeat + if prime?(i*n+1) and not(p = (i*n+1)) then + primitive?(q::PF(i*n+1))$PF(i*n+1) => + a:NNI:=1 + k:=i + t1:PF(k*n+1):=(q::PF(k*n+1))**n + gcd(n,a:=discreteLog(q::PF(n*i+1))$PF(n*i+1))$I = 1 => + k:=i + t1:=primitiveElement()$PF(k*n+1)**n + k = 0 => "failed" + -- initialize some start values + multmat:M PF(p):=zero(n,n) + p1:=(k*n+1) + pkn:=q::PF(p1) + t:=t1 pretend PF(p1) + if odd?(k) then + jt:I:=(n quo 2)+1 + vt:I:=positiveRemainder((k-a) quo 2,k)+1 + else + jt:I:=1 + vt:I:=(k quo 2)+1 + -- compute matrix + vec:Vector I:=zero(p1 pretend NNI) + for x in 1..k repeat + for l in 1..n repeat + vec.((t**(x-1) * pkn**(l-1)) pretend Integer+1):=_ + positiveRemainder(l,p1) + lvj:M I:=zero(k::NNI,n) + for v in 1..k repeat + for j in 1..n repeat + if (j^=jt) or (v^=vt) then + help:PF(p1):=t**(v-1)*pkn**(j-1)+1@PF(p1) + setelt(lvj,v,j,vec.(help pretend I +1)) + for j in 1..n repeat + if j^=jt then + for v in 1..k repeat + lvjh:=elt(lvj,v,j) + setelt(multmat,j,lvjh,elt(multmat,j,lvjh)+1) + for i in 1..n repeat + setelt(multmat,jt,i,positiveRemainder(-k,p)::PF(p)) + for v in 1..k repeat + if v^=vt then + lvjh:=elt(lvj,v,jt) + setelt(multmat,jt,lvjh,elt(multmat,jt,lvjh)+1) + -- multmat + m:=nrows(multmat)$(M PF(p)) + multtable:V L TERM:=new(m,nil()$(L TERM))$(V L TERM) + for i in 1..m repeat + l:L TERM:=nil()$(L TERM) + v:V PF(p):=row(multmat,i) + for j in (1::I)..(m::I) repeat + if (v.j ^= 0) then + -- take -v.j to get trace 1 instead of -1 + term:TERM:=[(convert(-v.j)@I)::GF,(j-2) pretend SI]$TERM + l:=cons(term,l)$(L TERM) + qsetelt_!(multtable,i,copy l)$(V L TERM) + multtable + + sizeMultiplication(m) == + s:NNI:=0 + for i in 1..#m repeat + s := s + #(m.i) + s + + createMultiplicationTable(f:SUP) == + sizeGF:NNI:=size()$GF -- the size of the ground field + m:PI:=degree(f)$SUP pretend PI + m=1 => + [[[-coefficient(f,0)$SUP,(-1)::SI]$TERM]$(L TERM)]::(V L TERM) + m1:I:=m-1 + -- initialize basis change matrices + setPoly(f)$MM + e:=reduce(monomial(1,1)$SUP)$MM ** sizeGF + w:=1$MM + qpow:PrimitiveArray(MM):=new(m,0) + qpow.0:=1$MM + for i in 1..m1 repeat + qpow.i:=(w:=w*e) + -- qpow.i = x**(i*q) + qexp:PrimitiveArray(MM):=new(m,0) + qexp.0:=reduce(monomial(1,1)$SUP)$MM + mat:M GF:=zero(m,m)$(M GF) + qsetelt_!(mat,2,1,1$GF)$(M GF) + h:=qpow.1 + qexp.1:=h + setColumn_!(mat,2,Vectorise(h)$MM)$(M GF) + for i in 2..m1 repeat + g:=0$MM + while h ^= 0 repeat + g:=g + leadingCoefficient(h) * qpow.degree(h)$MM + h:=reductum(h)$MM + qexp.i:=g + setColumn_!(mat,i+1,Vectorise(h:=g)$MM)$(M GF) + -- loop invariant: qexp.i = x**(q**i) + mat1:=inverse(mat)$(M GF) + mat1 = "failed" => + error "createMultiplicationTable: polynomial must be normal" + mat:=mat1 :: (M GF) + -- initialize multiplication table + multtable:V L TERM:=new(m,nil()$(L TERM))$(V L TERM) + for i in 1..m repeat + l:L TERM:=nil()$(L TERM) + v:V GF:=mat *$(M GF) Vectorise(qexp.(i-1) *$MM qexp.0)$MM + for j in (1::SI)..(m::SI) repeat + if (v.j ^= 0$GF) then + term:TERM:=[(v.j),j-(2::SI)]$TERM + l:=cons(term,l)$(L TERM) + qsetelt_!(multtable,i,copy l)$(V L TERM) + multtable + + + createZechTable(f:SUP) == + sizeGF:NNI:=size()$GF -- the size of the ground field + m:=degree(f)$SUP::PI + qm1:SI:=(sizeGF ** m -1) pretend SI + zechlog:ARR:=new(((sizeGF ** m + 1) quo 2)::NNI,-1::SI)$ARR + helparr:ARR:=new(sizeGF ** m::NNI,0$SI)$ARR + primElement:=reduce(monomial(1,1)$SUP)$SAE(GF,SUP,f) + a:=primElement + for i in 1..qm1-1 repeat + helparr.(lookup(a -$SAE(GF,SUP,f) 1$SAE(GF,SUP,f)_ + )$SAE(GF,SUP,f)):=i::SI + a:=a * primElement + characteristic() = 2 => + a:=primElement + for i in 1..(qm1 quo 2) repeat + zechlog.i:=helparr.lookup(a)$SAE(GF,SUP,f) + a:=a * primElement + zechlog + a:=1$SAE(GF,SUP,f) + for i in 0..((qm1-2) quo 2) repeat + zechlog.i:=helparr.lookup(a)$SAE(GF,SUP,f) + a:=a * primElement + zechlog + + createMultiplicationMatrix(m) == + n:NNI:=#m + mat:M GF:=zero(n,n)$(M GF) + for i in 1..n repeat + for t in m.i repeat + qsetelt_!(mat,i,t.index+2,t.value) + mat + +@ +<<FFF.dotabb>>= +"FFF" [color="#FF4488",href="bookvol10.4.pdf#nameddest=FFF"] +"PFECAT" [color="#4488FF",href="bookvol10.2.pdf#nameddest=PFECAT"] +"FFF" -> "PFECAT" + +@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{package FFHOM FiniteFieldHomomorphisms} +\pagehead{FiniteFieldHomomorphisms}{FFHOM} +\pagepic{ps/v104finitefieldhomomorphisms.ps}{FFHOM}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\end{tabular} + +<<package FFHOM FiniteFieldHomomorphisms>>= +)abbrev package FFHOM FiniteFieldHomomorphisms +++ Authors: J.Grabmeier, A.Scheerhorn +++ Date Created: 26.03.1991 +++ Date Last Updated: +++ Basic Operations: +++ Related Constructors: FiniteFieldCategory, FiniteAlgebraicExtensionField +++ Also See: +++ AMS Classifications: +++ Keywords: finite field, homomorphism, isomorphism +++ References: +++ R.Lidl, H.Niederreiter: Finite Field, Encycoldia of Mathematics and +++ Its Applications, Vol. 20, Cambridge Univ. Press, 1983, ISBN 0 521 30240 4 +++ J. Grabmeier, A. Scheerhorn: Finite Fields in AXIOM. +++ AXIOM Technical Report Series, ATR/5 NP2522. +++ Description: +++ FiniteFieldHomomorphisms(F1,GF,F2) exports coercion functions of +++ elements between the fields {\em F1} and {\em F2}, which both must be +++ finite simple algebraic extensions of the finite ground field {\em GF}. +FiniteFieldHomomorphisms(F1,GF,F2): Exports == Implementation where + F1: FiniteAlgebraicExtensionField(GF) + GF: FiniteFieldCategory + F2: FiniteAlgebraicExtensionField(GF) + -- the homorphism can only convert elements w.r.t. the last extension . + -- Adding a function 'groundField()' which returns the groundfield of GF + -- as a variable of type FiniteFieldCategory in the new compiler, one + -- could build up 'convert' recursively to get an homomorphism w.r.t + -- the whole extension. + + I ==> Integer + NNI ==> NonNegativeInteger + SI ==> SingleInteger + PI ==> PositiveInteger + SUP ==> SparseUnivariatePolynomial + M ==> Matrix GF + FFP ==> FiniteFieldExtensionByPolynomial + FFPOL2 ==> FiniteFieldPolynomialPackage2 + FFPOLY ==> FiniteFieldPolynomialPackage + OUT ==> OutputForm + + Exports ==> with + + coerce: F1 -> F2 + ++ coerce(x) is the homomorphic image of x from + ++ {\em F1} in {\em F2}. Thus {\em coerce} is a + ++ field homomorphism between the fields extensions + ++ {\em F1} and {\em F2} both over ground field {\em GF} + ++ (the second argument to the package). + ++ Error: if the extension degree of {\em F1} doesn't divide + ++ the extension degree of {\em F2}. + ++ Note that the other coercion function in the + ++ \spadtype{FiniteFieldHomomorphisms} is a left inverse. + + coerce: F2 -> F1 + ++ coerce(x) is the homomorphic image of x from + ++ {\em F2} in {\em F1}, where {\em coerce} is a + ++ field homomorphism between the fields extensions + ++ {\em F2} and {\em F1} both over ground field {\em GF} + ++ (the second argument to the package). + ++ Error: if the extension degree of {\em F2} doesn't divide + ++ the extension degree of {\em F1}. + ++ Note that the other coercion function in the + ++ \spadtype{FiniteFieldHomomorphisms} is a left inverse. + -- coerce(coerce(x:F1)@F2)@F1 = x and coerce(coerce(y:F2)@F1)@F2 = y + + Implementation ==> add + +-- global variables =================================================== + + degree1:NNI:= extensionDegree()$F1 + degree2:NNI:= extensionDegree()$F2 + -- the degrees of the last extension + + -- a necessary condition for the one field being an subfield of + -- the other one is, that the respective extension degrees are + -- multiples + if max(degree1,degree2) rem min(degree1,degree2) ^= 0 then + error "FFHOM: one extension degree must divide the other one" + + conMat1to2:M:= zero(degree2,degree1)$M + -- conversion Matix for the conversion direction F1 -> F2 + conMat2to1:M:= zero(degree1,degree2)$M + -- conversion Matix for the conversion direction F2 -> F1 + + repType1:=representationType()$F1 + repType2:=representationType()$F2 + -- the representation types of the fields + + init?:Boolean:=true + -- gets false after initialization + + defPol1:=definingPolynomial()$F1 + defPol2:=definingPolynomial()$F2 + -- the defining polynomials of the fields + + +-- functions ========================================================== + + + compare: (SUP GF,SUP GF) -> Boolean + -- compares two polynomials + + convertWRTsameDefPol12: F1 -> F2 + convertWRTsameDefPol21: F2 -> F1 + -- homomorphism if the last extension of F1 and F2 was build up + -- using the same defining polynomials + + convertWRTdifferentDefPol12: F1 -> F2 + convertWRTdifferentDefPol21: F2 -> F1 + -- homomorphism if the last extension of F1 and F2 was build up + -- with different defining polynomials + + initialize: () -> Void + -- computes the conversion matrices + + compare(g:(SUP GF),f:(SUP GF)) == + degree(f)$(SUP GF) >$NNI degree(g)$(SUP GF) => true + degree(f)$(SUP GF) <$NNI degree(g)$(SUP GF) => false + equal:Integer:=0 + for i in degree(f)$(SUP GF)..0 by -1 while equal=0 repeat + not zero?(coefficient(f,i)$(SUP GF))$GF and _ + zero?(coefficient(g,i)$(SUP GF))$GF => equal:=1 + not zero?(coefficient(g,i)$(SUP GF))$GF and _ + zero?(coefficient(f,i)$(SUP GF))$GF => equal:=(-1) + (f1:=lookup(coefficient(f,i)$(SUP GF))$GF) >$PositiveInteger _ + (g1:=lookup(coefficient(g,i)$(SUP GF))$GF) => equal:=1 + f1 <$PositiveInteger g1 => equal:=(-1) + equal=1 => true + false + + initialize() == + -- 1) in the case of equal def. polynomials initialize is called only + -- if one of the rep. types is "normal" and the other one is "polynomial" + -- we have to compute the basis change matrix 'mat', which i-th + -- column are the coordinates of a**(q**i), the i-th component of + -- the normal basis ('a' the root of the def. polynomial and q the + -- size of the groundfield) + defPol1 =$(SUP GF) defPol2 => + -- new code using reducedQPowers + mat:=zero(degree1,degree1)$M + arr:=reducedQPowers(defPol1)$FFPOLY(GF) + for i in 1..degree1 repeat + setColumn_!(mat,i,vectorise(arr.(i-1),degree1)$SUP(GF))$M + -- old code + -- here one of the representation types must be "normal" + --a:=basis()$FFP(GF,defPol1).2 -- the root of the def. polynomial + --setColumn_!(mat,1,coordinates(a)$FFP(GF,defPol1))$M + --for i in 2..degree1 repeat + -- a:= a **$FFP(GF,defPol1) size()$GF + -- setColumn_!(mat,i,coordinates(a)$FFP(GF,defPol1))$M + --for the direction "normal" -> "polynomial" we have to multiply the + -- coordinate vector of an element of the normal basis field with + -- the matrix 'mat'. In this case 'mat' is the correct conversion + -- matrix for the conversion of F1 to F2, its inverse the correct + -- inversion matrix for the conversion of F2 to F1 + repType1 = "normal" => -- repType2 = "polynomial" + conMat1to2:=copy(mat) + conMat2to1:=copy(inverse(mat)$M :: M) + --we finish the function for one case, hence reset initialization flag + init? := false + void()$Void + -- print("'normal' <=> 'polynomial' matrices initialized"::OUT) + -- in the other case we have to change the matrices + -- repType2 = "normal" and repType1 = "polynomial" + conMat2to1:=copy(mat) + conMat1to2:=copy(inverse(mat)$M :: M) + -- print("'normal' <=> 'polynomial' matrices initialized"::OUT) + --we finish the function for one case, hence reset initialization flag + init? := false + void()$Void + -- 2) in the case of different def. polynomials we have to order the + -- fields to get the same isomorphism, if the package is called with + -- the fields F1 and F2 swapped. + dPbig:= defPol2 + rTbig:= repType2 + dPsmall:= defPol1 + rTsmall:= repType1 + degbig:=degree2 + degsmall:=degree1 + if compare(defPol2,defPol1) then + degsmall:=degree2 + degbig:=degree1 + dPbig:= defPol1 + rTbig:= repType1 + dPsmall:= defPol2 + rTsmall:= repType2 + -- 3) in every case we need a conversion between the polynomial + -- represented fields. Therefore we compute 'root' as a root of the + -- 'smaller' def. polynomial in the 'bigger' field. + -- We compute the matrix 'matsb', which i-th column are the coordinates + -- of the (i-1)-th power of root, i=1..degsmall. Multiplying a + -- coordinate vector of an element of the 'smaller' field by this + -- matrix, we got the coordinates of the corresponding element in the + -- 'bigger' field. + -- compute the root of dPsmall in the 'big' field + root:=rootOfIrreduciblePoly(dPsmall)$FFPOL2(FFP(GF,dPbig),GF) + -- set up matrix for polynomial conversion + matsb:=zero(degbig,degsmall)$M + qsetelt_!(matsb,1,1,1$GF)$M + a:=root + for i in 2..degsmall repeat + setColumn_!(matsb,i,coordinates(a)$FFP(GF,dPbig))$M + a := a *$FFP(GF,dPbig) root + -- the conversion from 'big' to 'small': we can't invert matsb + -- directly, because it has degbig rows and degsmall columns and + -- may be no square matrix. Therfore we construct a square matrix + -- mat from degsmall linear independent rows of matsb and invert it. + -- Now we get the conversion matrix 'matbs' for the conversion from + -- 'big' to 'small' by putting the columns of mat at the indices + -- of the linear independent rows of matsb to columns of matbs. + ra:I:=1 -- the rank + mat:M:=transpose(row(matsb,1))$M -- has already rank 1 + rowind:I:=2 + iVec:Vector I:=new(degsmall,1$I)$(Vector I) + while ra < degsmall repeat + if rank(vertConcat(mat,transpose(row(matsb,rowind))$M)$M)$M > ra then + mat:=vertConcat(mat,transpose(row(matsb,rowind))$M)$M + ra:=ra+1 + iVec.ra := rowind + rowind:=rowind + 1 + mat:=inverse(mat)$M :: M + matbs:=zero(degsmall,degbig)$M + for i in 1..degsmall repeat + setColumn_!(matbs,iVec.i,column(mat,i)$M)$M + -- print(matsb::OUT) + -- print(matbs::OUT) + -- 4) if the 'bigger' field is "normal" we have to compose the + -- polynomial conversion with a conversion from polynomial to normal + -- between the FFP(GF,dPbig) and FFNBP(GF,dPbig) the 'bigger' + -- field. Therefore we compute a conversion matrix 'mat' as in 1) + -- Multiplying with the inverse of 'mat' yields the desired + -- conversion from polynomial to normal. Multiplying this matrix by + -- the above computed 'matsb' we got the matrix for converting form + -- 'small polynomial' to 'big normal'. + -- set up matrix 'mat' for polynomial to normal + if rTbig = "normal" then + arr:=reducedQPowers(dPbig)$FFPOLY(GF) + mat:=zero(degbig,degbig)$M + for i in 1..degbig repeat + setColumn_!(mat,i,vectorise(arr.(i-1),degbig)$SUP(GF))$M + -- old code + --a:=basis()$FFP(GF,dPbig).2 -- the root of the def.Polynomial + --setColumn_!(mat,1,coordinates(a)$FFP(GF,dPbig))$M + --for i in 2..degbig repeat + -- a:= a **$FFP(GF,dPbig) size()$GF + -- setColumn_!(mat,i,coordinates(a)$FFP(GF,dPbig))$M + -- print(inverse(mat)$M::OUT) + matsb:= (inverse(mat)$M :: M) * matsb + -- print("inv *.."::OUT) + matbs:=matbs * mat + -- 5) if the 'smaller' field is "normal" we have first to convert + -- from 'small normal' to 'small polynomial', that is from + -- FFNBP(GF,dPsmall) to FFP(GF,dPsmall). Therefore we compute a + -- conversion matrix 'mat' as in 1). Multiplying with 'mat' + -- yields the desired conversion from normal to polynomial. + -- Multiplying the above computed 'matsb' with 'mat' we got the + -- matrix for converting form 'small normal' to 'big normal'. + -- set up matrix 'mat' for normal to polynomial + if rTsmall = "normal" then + arr:=reducedQPowers(dPsmall)$FFPOLY(GF) + mat:=zero(degsmall,degsmall)$M + for i in 1..degsmall repeat + setColumn_!(mat,i,vectorise(arr.(i-1),degsmall)$SUP(GF))$M + -- old code + --b:FFP(GF,dPsmall):=basis()$FFP(GF,dPsmall).2 + --setColumn_!(mat,1,coordinates(b)$FFP(GF,dPsmall))$M + --for i in 2..degsmall repeat + -- b:= b **$FFP(GF,dPsmall) size()$GF + -- setColumn_!(mat,i,coordinates(b)$FFP(GF,dPsmall))$M + -- print(mat::OUT) + matsb:= matsb * mat + matbs:= (inverse(mat) :: M) * matbs + -- now 'matsb' is the corret conversion matrix for 'small' to 'big' + -- and 'matbs' the corret one for 'big' to 'small'. + -- depending on the above ordering the conversion matrices are + -- initialized + dPbig =$(SUP GF) defPol2 => + conMat1to2 :=matsb + conMat2to1 :=matbs + -- print(conMat1to2::OUT) + -- print(conMat2to1::OUT) + -- print("conversion matrices initialized"::OUT) + --we finish the function for one case, hence reset initialization flag + init? := false + void()$Void + conMat1to2 :=matbs + conMat2to1 :=matsb + -- print(conMat1to2::OUT) + -- print(conMat2to1::OUT) + -- print("conversion matrices initialized"::OUT) + --we finish the function for one case, hence reset initialization flag + init? := false + void()$Void + + + coerce(x:F1) == + inGroundField?(x)$F1 => retract(x)$F1 :: F2 + -- if x is already in GF then we can use a simple coercion + defPol1 =$(SUP GF) defPol2 => convertWRTsameDefPol12(x) + convertWRTdifferentDefPol12(x) + + convertWRTsameDefPol12(x:F1) == + repType1 = repType2 => x pretend F2 + -- same groundfields, same defining polynomials, same + -- representation types --> F1 = F2, x is already in F2 + repType1 = "cyclic" => + x = 0$F1 => 0$F2 + -- the SI corresponding to the cyclic representation is the exponent of + -- the primitiveElement, therefore we exponentiate the primitiveElement + -- of F2 by it. + primitiveElement()$F2 **$F2 (x pretend SI) + repType2 = "cyclic" => + x = 0$F1 => 0$F2 + -- to get the exponent, we have to take the discrete logarithm of the + -- element in the given field. + (discreteLog(x)$F1 pretend SI) pretend F2 + -- here one of the representation types is "normal" + if init? then initialize() + -- here a conversion matrix is necessary, (see initialize()) + represents(conMat1to2 *$(Matrix GF) coordinates(x)$F1)$F2 + + convertWRTdifferentDefPol12(x:F1) == + if init? then initialize() + -- if we want to convert into a 'smaller' field, we have to test, + -- whether the element is in the subfield of the 'bigger' field, which + -- corresponds to the 'smaller' field + if degree1 > degree2 then + if positiveRemainder(degree2,degree(x)$F1)^= 0 then + error "coerce: element doesn't belong to smaller field" + represents(conMat1to2 *$(Matrix GF) coordinates(x)$F1)$F2 + +-- the three functions below equal the three functions above up to +-- '1' exchanged by '2' in all domain and variable names + + + coerce(x:F2) == + inGroundField?(x)$F2 => retract(x)$F2 :: F1 + -- if x is already in GF then we can use a simple coercion + defPol1 =$(SUP GF) defPol2 => convertWRTsameDefPol21(x) + convertWRTdifferentDefPol21(x) + + convertWRTsameDefPol21(x:F2) == + repType1 = repType2 => x pretend F1 + -- same groundfields, same defining polynomials, + -- same representation types --> F1 = F2, that is: + -- x is already in F1 + repType2 = "cyclic" => + x = 0$F2 => 0$F1 + primitiveElement()$F1 **$F1 (x pretend SI) + repType1 = "cyclic" => + x = 0$F2 => 0$F1 + (discreteLog(x)$F2 pretend SI) pretend F1 + -- here one of the representation types is "normal" + if init? then initialize() + represents(conMat2to1 *$(Matrix GF) coordinates(x)$F2)$F1 + + convertWRTdifferentDefPol21(x:F2) == + if init? then initialize() + if degree2 > degree1 then + if positiveRemainder(degree1,degree(x)$F2)^= 0 then + error "coerce: element doesn't belong to smaller field" + represents(conMat2to1 *$(Matrix GF) coordinates(x)$F2)$F1 + +@ +<<FFHOM.dotabb>>= +"FFHOM" [color="#FF4488",href="bookvol10.4.pdf#nameddest=FFHOM"] +"FAXF" [color="#4488FF",href="bookvol10.2.pdf#nameddest=FAXF"] +"FFHOM" -> "FAXF" + +@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{package FFPOLY FiniteFieldPolynomialPackage} +\pagehead{FiniteFieldPolynomialPackage}{FFPOLY} +\pagepic{ps/v104finitefieldpolynomialpackage.ps}{FFPOLY}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\end{tabular} + +<<package FFPOLY FiniteFieldPolynomialPackage>>= +)abbrev package FFPOLY FiniteFieldPolynomialPackage +++ Author: A. Bouyer, J. Grabmeier, A. Scheerhorn, R. Sutor, B. Trager +++ Date Created: January 1991 +++ Date Last Updated: 1 June 1994 +++ Basic Operations: +++ Related Constructors: +++ Also See: +++ AMS Classifications: +++ Keywords: finite field, polynomial, irreducible polynomial, normal +++ polynomial, primitive polynomial, random polynomials +++ References: +++ [LS] Lenstra, H. W. & Schoof, R. J., "Primitivive Normal Bases +++ for Finite Fields", Math. Comp. 48, 1987, pp. 217-231 +++ [LN] Lidl, R. & Niederreiter, H., "Finite Fields", +++ Encycl. of Math. 20, Addison-Wesley, 1983 +++ J. Grabmeier, A. Scheerhorn: Finite Fields in Axiom. +++ Axiom Technical Report Series, to appear. +++ Description: +++ This package provides a number of functions for generating, counting +++ and testing irreducible, normal, primitive, random polynomials +++ over finite fields. + +FiniteFieldPolynomialPackage GF : Exports == Implementation where + + GF : FiniteFieldCategory + + I ==> Integer + L ==> List + NNI ==> NonNegativeInteger + PI ==> PositiveInteger + Rec ==> Record(expnt:NNI, coeff:GF) + Repr ==> L Rec + SUP ==> SparseUnivariatePolynomial GF + + Exports ==> with + -- qEulerPhiCyclotomic : PI -> PI +-- ++ qEulerPhiCyclotomic(n)$FFPOLY(GF) yields the q-Euler's function +-- ++ of the n-th cyclotomic polynomial over the field {\em GF} of +-- ++ order q (cf. [LN] p.122); +-- ++ error if n is a multiple of the field characteristic. + primitive? : SUP -> Boolean + ++ primitive?(f) tests whether the polynomial f over a finite + ++ field is primitive, i.e. all its roots are primitive. + normal? : SUP -> Boolean + ++ normal?(f) tests whether the polynomial f over a finite field is + ++ normal, i.e. its roots are linearly independent over the field. + numberOfIrreduciblePoly : PI -> PI + ++ numberOfIrreduciblePoly(n)$FFPOLY(GF) yields the number of + ++ monic irreducible univariate polynomials of degree n + ++ over the finite field {\em GF}. + numberOfPrimitivePoly : PI -> PI + ++ numberOfPrimitivePoly(n)$FFPOLY(GF) yields the number of + ++ primitive polynomials of degree n over the finite field {\em GF}. + numberOfNormalPoly : PI -> PI + ++ numberOfNormalPoly(n)$FFPOLY(GF) yields the number of + ++ normal polynomials of degree n over the finite field {\em GF}. + createIrreduciblePoly : PI -> SUP + ++ createIrreduciblePoly(n)$FFPOLY(GF) generates a monic irreducible + ++ univariate polynomial of degree n over the finite field {\em GF}. + createPrimitivePoly : PI -> SUP + ++ createPrimitivePoly(n)$FFPOLY(GF) generates a primitive polynomial + ++ of degree n over the finite field {\em GF}. + createNormalPoly : PI -> SUP + ++ createNormalPoly(n)$FFPOLY(GF) generates a normal polynomial + ++ of degree n over the finite field {\em GF}. + createNormalPrimitivePoly : PI -> SUP + ++ createNormalPrimitivePoly(n)$FFPOLY(GF) generates a normal and + ++ primitive polynomial of degree n over the field {\em GF}. + ++ Note: this function is equivalent to createPrimitiveNormalPoly(n) + createPrimitiveNormalPoly : PI -> SUP + ++ createPrimitiveNormalPoly(n)$FFPOLY(GF) generates a normal and + ++ primitive polynomial of degree n over the field {\em GF}. + ++ polynomial of degree n over the field {\em GF}. + nextIrreduciblePoly : SUP -> Union(SUP, "failed") + ++ nextIrreduciblePoly(f) yields the next monic irreducible polynomial + ++ over a finite field {\em GF} of the same degree as f in the following + ++ order, or "failed" if there are no greater ones. + ++ Error: if f has degree 0. + ++ Note: the input polynomial f is made monic. + ++ Also, \spad{f < g} if + ++ the number of monomials of f is less + ++ than this number for g. + ++ If f and g have the same number of monomials, + ++ the lists of exponents are compared lexicographically. + ++ If these lists are also equal, the lists of coefficients + ++ are compared according to the lexicographic ordering induced by + ++ the ordering of the elements of {\em GF} given by {\em lookup}. + nextPrimitivePoly : SUP -> Union(SUP, "failed") + ++ nextPrimitivePoly(f) yields the next primitive polynomial over + ++ a finite field {\em GF} of the same degree as f in the following + ++ order, or "failed" if there are no greater ones. + ++ Error: if f has degree 0. + ++ Note: the input polynomial f is made monic. + ++ Also, \spad{f < g} if the {\em lookup} of the constant term + ++ of f is less than + ++ this number for g. + ++ If these values are equal, then \spad{f < g} if + ++ if the number of monomials of f is less than that for g or if + ++ the lists of exponents of f are lexicographically less than the + ++ corresponding list for g. + ++ If these lists are also equal, the lists of coefficients are + ++ compared according to the lexicographic ordering induced by + ++ the ordering of the elements of {\em GF} given by {\em lookup}. + nextNormalPoly : SUP -> Union(SUP, "failed") + ++ nextNormalPoly(f) yields the next normal polynomial over + ++ a finite field {\em GF} of the same degree as f in the following + ++ order, or "failed" if there are no greater ones. + ++ Error: if f has degree 0. + ++ Note: the input polynomial f is made monic. + ++ Also, \spad{f < g} if the {\em lookup} of the coefficient + ++ of the term of degree + ++ {\em n-1} of f is less than that for g. + ++ In case these numbers are equal, \spad{f < g} if + ++ if the number of monomials of f is less that for g or if + ++ the list of exponents of f are lexicographically less than the + ++ corresponding list for g. + ++ If these lists are also equal, the lists of coefficients are + ++ compared according to the lexicographic ordering induced by + ++ the ordering of the elements of {\em GF} given by {\em lookup}. + nextNormalPrimitivePoly : SUP -> Union(SUP, "failed") + ++ nextNormalPrimitivePoly(f) yields the next normal primitive polynomial + ++ over a finite field {\em GF} of the same degree as f in the following + ++ order, or "failed" if there are no greater ones. + ++ Error: if f has degree 0. + ++ Note: the input polynomial f is made monic. + ++ Also, \spad{f < g} if the {\em lookup} of the constant + ++ term of f is... [truncated message content] |
From: <gi...@ax...> - 2009-01-29 11:29:02
|
books/bookvol10.4.pamphlet | 7963 +++++++++++++++++++- books/ps/v104FactoredFunctions2.ps | 281 + books/ps/v104discretelogarithmpackage.ps | 281 + books/ps/v104expressionspacefunctions1.ps | 281 + books/ps/v104expressionspacefunctions2.ps | 281 + books/ps/v104factoredfunctionutilities.ps | 281 + books/ps/v104factoringutilities.ps | 281 + books/ps/v104finiteabelianmonoidringfunctions2.ps | 281 + books/ps/v104finitefieldfunctions.ps | 281 + books/ps/v104finitefieldhomomorphisms.ps | 281 + books/ps/v104finitefieldpolynomialpackage.ps | 281 + books/ps/v104finitefieldpolynomialpackage2.ps | 281 + ...v104finitefieldsolvelinearpolynomialequation.ps | 281 + books/ps/v104fortrancodepackage1.ps | 281 + books/ps/v104fortranoutputstackpackage.ps | 281 + books/ps/v104fortranpackage.ps | 281 + books/ps/v104fractionfreefastgaussian.ps | 281 + books/ps/v104fractionfreefastgaussianfractions.ps | 281 + books/ps/v104fractionfunctions2.ps | 281 + books/ps/v104functionspacefunctions2.ps | 281 + .../ps/v104functionspacetoexponentialexpansion.ps | 281 + .../ps/v104functionspacetounivariatepowerseries.ps | 326 + .../v104functionspaceunivariatepolynomialfactor.ps | 326 + books/ps/v104hallbasis.ps | 281 + books/ps/v104innernormalbasisfieldfunctions.ps | 281 + books/ps/v104irredpolyoverfinitefield.ps | 281 + .../ps/v104linearpolynomialequationbyfractions.ps | 281 + books/ps/v104multivariablecalculusfunctions.ps | 281 + books/ps/v104nageigenpackage.ps | 301 + books/ps/v104naglapack.ps | 281 + books/ps/v104naglinearequationsolvingpackage.ps | 281 + books/ps/v104naglinksupportpackage.ps | 281 + books/ps/v104nagmatrixoperationspackage.ps | 281 + books/ps/v104newtoninterpolation.ps | 281 + books/ps/v104pushvariables.ps | 281 + books/ps/v104quotientfieldcategoryfunctions2.ps | 281 + books/ps/v104scriptformulaformat1.ps | 326 + books/ps/v104templateutilities.ps | 281 + changelog | 62 + src/algebra/Makefile.pamphlet | 88 +- src/algebra/f01.spad.pamphlet | 343 - src/algebra/f02.spad.pamphlet | 565 -- src/algebra/f04.spad.pamphlet | 409 - src/algebra/f07.spad.pamphlet | 182 - src/algebra/facutil.spad.pamphlet | 218 - src/algebra/ffcat.spad.pamphlet | 202 - src/algebra/fff.spad.pamphlet | 304 - src/algebra/fffg.spad.pamphlet | 700 -- src/algebra/ffhom.spad.pamphlet | 431 -- src/algebra/ffnb.spad.pamphlet | 425 -- src/algebra/ffpoly.spad.pamphlet | 1036 --- src/algebra/ffpoly2.spad.pamphlet | 172 - src/algebra/ffx.spad.pamphlet | 120 - src/algebra/fnla.spad.pamphlet | 147 - src/algebra/formula.spad.pamphlet | 89 - src/algebra/fortpak.spad.pamphlet | 659 -- src/algebra/fr.spad.pamphlet | 260 - src/algebra/fraction.spad.pamphlet | 169 - src/algebra/fs2expxp.spad.pamphlet | 598 -- src/algebra/fs2ups.spad.pamphlet | 812 -- src/algebra/fspace.spad.pamphlet | 146 - src/algebra/funcpkgs.spad.pamphlet | 193 - src/axiom-website/patches.html | 2 + 63 files changed, 18353 insertions(+), 8494 deletions(-) New commits: commit d4ab9dc4d8f54b9791a14d7510dbde120877dd4c Author: root <root@chris.localdomain> Date: Wed Jan 28 06:12:47 2009 -0500 20090128 tpd src/axiom-website/patches.html 20090128.01.tpd.patch 20090128 tpd src/algebra/Makefile remove spad files 20090128 tpd src/algebra/funcpkgs.spad removed 20090128 tpd books/ps/v104functionspaceunivariatepolynomialfactor.ps added 20090128 tpd src/algebra/fspace.spad removed 20090128 tpd books/ps/v104functionspacefunctions2.ps added 20090128 tpd books/ps/v104expressionspacefunctions2.ps added 20090128 tpd books/ps/v104expressionspacefunctions1.ps added 20090128 tpd src/algebra/fs2ups.spad removed 20090128 tpd books/ps/v104functionspacetounivariatepowerseries.ps added 20090128 tpd src/algebra/fs2expxp.spad removed 20090128 tpd books/ps/v104functionspacetoexponentialexpansion.ps added 20090128 tpd src/algebra/fr.spad removed 20090128 tpd books/ps/v104FactoredFunctions2.ps added 20090128 tpd books/ps/v104factoredfunctionutilities.ps added 20090128 tpd src/algebra/fraction.spad removed 20090128 tpd books/ps/v104fractionfunctions2.ps added 20090128 tpd books/ps/v104linearpolynomialequationbyfractions.ps added 20090128 tpd books/ps/v104quotientfieldcategoryfunctions2.ps removed 20090128 tpd src/algebra/fortpak.spad removed 20090128 tpd books/ps/v104multivariablecalculusfunctions.ps added 20090128 tpd books/ps/v104templateutilities.ps added 20090128 tpd books/ps/v104fortranoutputstackpackage.ps added 20090128 tpd books/ps/v104fortranpackage.ps added 20090128 tpd books/ps/v104naglinksupportpackage.ps added 20090128 tpd books/ps/v104fortrancodepackage1.ps added 20090128 tpd src/algebra/formula.spad removed 20090128 tpd books/ps/v104scriptformulaformat1.ps added 20090128 tpd src/algebra/fnla.spad removed 20090128 tpd books/ps/v104hallbasis.ps added 20090128 tpd src/algebra/ffx.spad removed 20090128 tpd books/ps/v104irredpolyoverfinitefield.ps added 20090128 tpd src/algebra/ffpoly.spad removed 20090128 tpd books/ps/v104finitefieldpolynomialpackage.ps added 20090128 tpd src/algebra/ffpoly2.spad removed 20090128 tpd books/ps/v104finitefieldpolynomialpackage2.ps added 20090128 tpd src/algebra/ffnb.spad removed 20090128 tpd books/ps/v104innernormalbasisfieldfunctions.ps added 20090128 tpd ps/v104innernormalbasisfieldfunctions.ps added 20090128 tpd src/algebra/ffhom.spad removed 20090128 tpd books/ps/v104finitefieldhomomorphisms.ps added 20090128 tpd src/algebra/fff.spad removed 20090128 tpd books/ps/v104finitefieldfunctions.ps added 20090128 tpd src/algebra/fffg.spad removed 20090128 tpd books/ps/v104newtoninterpolation.ps added 20090128 tpd books/ps/v104fractionfreefastgaussianfractions.ps added 20090128 tpd books/ps/v104fractionfreefastgaussian.ps added 20090128 tpd books/ps/v104finiteabelianmonoidringfunctions2.ps added 20090128 tpd src/algebra/ffcat.spad removed 20090128 tpd books/ps/v104finitefieldsolvelinearpolynomialequation.ps added 20090128 tpd books/ps/v104discretelogarithmpackage.ps added 20090128 tpd src/algebra/facutil.spad removed 20090128 tpd books/ps/v104pushvariables.ps added 20090128 tpd books/ps/v104factoringutilities.ps added 20080128 tpd src/algebra/f07.spad removed 20090128 tpd books/ps/v104naglapack.ps added 20090128 tpd src/algebra/f04.spad removed 20090128 tpd books/ps/v104naglinearequationsolvingpackage.ps added 20090128 tpd src/algebra/f02.spad removed 20090128 tpd books/ps/v104nageigenpackage.ps added 20090128 tpd src/algebra/f01.spad removed 20090128 tpd books/ps/v104nagmatrixoperationspackage.ps added |
From: <da...@us...> - 2009-01-28 11:29:30
|
Revision: 1094 http://axiom.svn.sourceforge.net/axiom/?rev=1094&view=rev Author: daly Date: 2009-01-28 11:29:26 +0000 (Wed, 28 Jan 2009) Log Message: ----------- 20090127 tpd src/axiom-website/patches.html 20090127.01.tpd.patch 20090127 tpd books/bookvol10.4 add packages 20090127 tpd src/algebra/Makefile remove spad files 20090127 tpd books/ps/v104complextrigonometricmanipulations.ps added 20090127 tpd src/algebra/expr.spad removed 20090127 tpd books/ps/v104picoercions.ps added 20090127 tpd books/ps/v104patternmatchassertions.ps added 20090127 tpd books/ps/v104attachpredicates.ps added 20090127 tpd books/ps/v104functionspaceassertions.ps added 20090127 tpd books/ps/v104functionspaceattachpredicates.ps added 20090127 tpd books/ps/v104ExpressionFunctions2.ps added 20090127 tpd books/ps/v104polynomialan2expression.ps added 20090127 tpd src/algebra/exprode.spad removed 20090127 tpd books/ps/v104expressionspaceodesolver.ps added 20090127 tpd src/algebra/expr2ups.spad removed 20090127 tpd books/ps/v104expressiontounivariatepowerseries.ps added 20090127 tpd src/algebra/error.spad removed 20090127 tpd books/ps/v104errorfunctions.ps added 20090127 tpd src/algebra/equation2.spad removed 20090127 tpd books/ps/v104equationfunctions2.ps added 20090127 tpd src/algebra/elfuts.spad removed 20090127 tpd books/ps/v104ellipticfunctionsunivariatetaylorseries.ps added 20090127 tpd src/algebra/elemntry.spad removed 20090127 tpd books/ps/v104elementaryfunction.ps added 20090127 tpd src/algebra/eigen.spad removed 20090127 tpd books/ps/v104characteristicpolynomialpackage.ps added 20090127 tpd books/ps/v104eigenpackage.ps added 20090127 tpd src/algebra/efupxs.spad removed 20090127 tpd books/ps/v104elementaryfunctionsunivariatepuiseuxseries.ps 20090127 tpd src/algebra/efuls.spad removed 20090127 tpd books/ps/v104elementaryfunctionsunivariatelaurentseries.ps 20090127 tpd src/algebra/efstruc.spad removed 20090127 tpd books/ps/v104trigonometricmanipulations.ps add 20090127 tpd books/ps/v104innertrigonometricmanipulations.ps added 20090127 tpd books/ps/v104tangentexpansions.ps added 20090127 tpd books/ps/v104symmetricfunctions.ps added 20090127 tpd src/algebra/e04.spad removed 20090127 tpd books/ps/v104nagoptimisationpackage.ps added 20090127 tpd src/algebra/e04package.spad removed 20090127 tpd books/ps/v104annanumericaloptimizationpackage.ps added 20090127 tpd src/algebra/e04agents.spad removed 20090127 tpd books/ps/v104e04agentspackage.ps added 20090127 tpd src/algebra/e02.spad removed 20090127 tpd books/ps/v104nagfittingpackage.ps added 20090127 tpd src/algebra/e01.spad removed 20090127 tpd books/ps/v104naginterpolationpackage.ps added 20090127 tpd src/algebra/draw.spad removed 20090127 tpd books/ps/v104topleveldrawfunctionsforpoints.ps added 20090127 tpd books/ps/v104topleveldrawfunctionsforalgebraiccurves.ps added 20090127 tpd books/ps/v104topleveldrawfunctions.ps added 20090127 tpd books/ps/v104topleveldrawfunctionsforcompiledfunctions.ps added 20090127 tpd src/algebra/drawpak.spad removed 20090127 tpd books/ps/v104drawcomplex.ps added 20090127 tpd src/algebra/drawopt.spad removed 20090127 tpd books/ps/v104drawoptionfunctions0.ps added 20090127 tpd books/ps/v104drawoptionfunctions1.ps added 20090127 tpd src/algebra/divisor.spad removed 20090127 tpd books/ps/v104finitedivisorfunctions2.ps added 20090127 tpd books/ps/v104modularhermitianrowreduction.ps added 20090127 tpd books/ps/v104fractionalidealfunctions2.ps added 20090127 tpd src/algebra/degred.spad removed 20090127 tpd books/ps/v104degreereductionpackage.ps added 20090127 tpd src/algebra/defintrf.spad removed 20090127 tpd books/ps/v104rationalfunctiondefiniteintegration.ps added 20090127 tpd books/ps/v104definiteintegrationtools.ps added 20090127 tpd src/algebra/defintef.spad removed 20090127 tpd books/ps/v104elementaryfunctiondefiniteintegration.ps added 20090127 tpd src/algebra/defaults.spad removed 20090127 tpd books/ps/v104finitelinearaggregatesort.ps added 20090127 tpd books/ps/v104repeateddoubling.ps added 20090127 tpd books/ps/v104repeatedsquaring.ps added 20090127 tpd src/algebra/d03.spad removed 20090127 tpd books/ps/v104nagpartialdifferentialequationspackage.ps added 20090127 tpd src/algebra/d03package.spad removed 20090127 tpd books/ps/v104annapartialdifferentialequationpackage.ps added 20090127 tpd src/algebra/d03agents.spad removed 20090127 tpd books/ps/v104d03agentspackage.ps added 20090127 tpd src/algebra/d02.spad removed 20090127 tpd books/ps/v104nagordinarydifferentialequationspackage.ps added 20090127 tpd src/algebra/d02package.spad removed 20090127 tpd books/ps/v104annaordinarydifferentialequationpackage.ps added 20090127 tpd src/algebra/d02agents.spad removed 20090127 tpd books/ps/v104d02agentspackage.ps added 20090127 tpd src/algebra/d01weights.spad removed 20090127 tpd books/ps/v104d01weightspackage.ps added 20090127 tpd src/algebra/d01.spad removed 20090127 tpd books/ps/v104nagintegrationpackage.ps added 20090127 tpd src/algebra/d01package.spad removed 20090127 tpd books/ps/v104annanumericalintegrationpackage.ps added 20090127 tpd src/algebra/d01agents.spad removed 20090127 tpd books/ps/v104d01agentspackage.ps added Modified Paths: -------------- trunk/axiom/books/bookvol10.4.pamphlet trunk/axiom/changelog trunk/axiom/src/axiom-website/patches.html Added Paths: ----------- trunk/axiom/books/ps/v104ExpressionFunctions2.ps trunk/axiom/books/ps/v104annanumericalintegrationpackage.ps trunk/axiom/books/ps/v104annanumericaloptimizationpackage.ps trunk/axiom/books/ps/v104annaordinarydifferentialequationpackage.ps trunk/axiom/books/ps/v104annapartialdifferentialequationpackage.ps trunk/axiom/books/ps/v104attachpredicates.ps trunk/axiom/books/ps/v104characteristicpolynomialpackage.ps trunk/axiom/books/ps/v104complextrigonometricmanipulations.ps trunk/axiom/books/ps/v104d01agentspackage.ps trunk/axiom/books/ps/v104d01weightspackage.ps trunk/axiom/books/ps/v104d02agentspackage.ps trunk/axiom/books/ps/v104d03agentspackage.ps trunk/axiom/books/ps/v104definiteintegrationtools.ps trunk/axiom/books/ps/v104degreereductionpackage.ps trunk/axiom/books/ps/v104distinctdegreefactorize.ps trunk/axiom/books/ps/v104drawcomplex.ps trunk/axiom/books/ps/v104drawoptionfunctions0.ps trunk/axiom/books/ps/v104drawoptionfunctions1.ps trunk/axiom/books/ps/v104e04agentspackage.ps trunk/axiom/books/ps/v104eigenpackage.ps trunk/axiom/books/ps/v104elementaryfunction.ps trunk/axiom/books/ps/v104elementaryfunctiondefiniteintegration.ps trunk/axiom/books/ps/v104elementaryfunctionsunivariatelaurentseries.ps trunk/axiom/books/ps/v104elementaryfunctionsunivariatepuiseuxseries.ps trunk/axiom/books/ps/v104ellipticfunctionsunivariatetaylorseries.ps trunk/axiom/books/ps/v104equationfunctions2.ps trunk/axiom/books/ps/v104errorfunctions.ps trunk/axiom/books/ps/v104expressionspaceodesolver.ps trunk/axiom/books/ps/v104expressiontounivariatepowerseries.ps trunk/axiom/books/ps/v104finitedivisorfunctions2.ps trunk/axiom/books/ps/v104finitelinearaggregatesort.ps trunk/axiom/books/ps/v104fractionalidealfunctions2.ps trunk/axiom/books/ps/v104functionspaceassertions.ps trunk/axiom/books/ps/v104functionspaceattachpredicates.ps trunk/axiom/books/ps/v104innertrigonometricmanipulations.ps trunk/axiom/books/ps/v104modularhermitianrowreduction.ps trunk/axiom/books/ps/v104nagfittingpackage.ps trunk/axiom/books/ps/v104nagintegrationpackage.ps trunk/axiom/books/ps/v104naginterpolationpackage.ps trunk/axiom/books/ps/v104nagoptimisationpackage.ps trunk/axiom/books/ps/v104nagordinarydifferentialequationspackage.ps trunk/axiom/books/ps/v104nagpartialdifferentialequationspackage.ps trunk/axiom/books/ps/v104patternmatchassertions.ps trunk/axiom/books/ps/v104picoercions.ps trunk/axiom/books/ps/v104polynomialan2expression.ps trunk/axiom/books/ps/v104rationalfunctiondefiniteintegration.ps trunk/axiom/books/ps/v104repeateddoubling.ps trunk/axiom/books/ps/v104repeatedsquaring.ps trunk/axiom/books/ps/v104symmetricfunctions.ps trunk/axiom/books/ps/v104tangentexpansions.ps trunk/axiom/books/ps/v104topleveldrawfunctions.ps trunk/axiom/books/ps/v104topleveldrawfunctionsforalgebraiccurves.ps trunk/axiom/books/ps/v104topleveldrawfunctionsforcompiledfunctions.ps trunk/axiom/books/ps/v104topleveldrawfunctionsforpoints.ps trunk/axiom/books/ps/v104trigonometricmanipulations.ps Removed Paths: ------------- trunk/axiom/src/algebra/d01.spad.pamphlet trunk/axiom/src/algebra/d01agents.spad.pamphlet trunk/axiom/src/algebra/d01package.spad.pamphlet trunk/axiom/src/algebra/d01weights.spad.pamphlet trunk/axiom/src/algebra/d02.spad.pamphlet trunk/axiom/src/algebra/d02agents.spad.pamphlet trunk/axiom/src/algebra/d02package.spad.pamphlet trunk/axiom/src/algebra/d03.spad.pamphlet trunk/axiom/src/algebra/d03agents.spad.pamphlet trunk/axiom/src/algebra/d03package.spad.pamphlet trunk/axiom/src/algebra/ddfact.spad.pamphlet trunk/axiom/src/algebra/defaults.spad.pamphlet trunk/axiom/src/algebra/defintef.spad.pamphlet trunk/axiom/src/algebra/defintrf.spad.pamphlet trunk/axiom/src/algebra/degred.spad.pamphlet trunk/axiom/src/algebra/divisor.spad.pamphlet trunk/axiom/src/algebra/draw.spad.pamphlet trunk/axiom/src/algebra/drawopt.spad.pamphlet trunk/axiom/src/algebra/drawpak.spad.pamphlet trunk/axiom/src/algebra/e01.spad.pamphlet trunk/axiom/src/algebra/e02.spad.pamphlet trunk/axiom/src/algebra/e04.spad.pamphlet trunk/axiom/src/algebra/e04agents.spad.pamphlet trunk/axiom/src/algebra/e04package.spad.pamphlet trunk/axiom/src/algebra/efstruc.spad.pamphlet trunk/axiom/src/algebra/efuls.spad.pamphlet trunk/axiom/src/algebra/efupxs.spad.pamphlet trunk/axiom/src/algebra/eigen.spad.pamphlet trunk/axiom/src/algebra/elemntry.spad.pamphlet trunk/axiom/src/algebra/elfuts.spad.pamphlet trunk/axiom/src/algebra/equation2.spad.pamphlet trunk/axiom/src/algebra/error.spad.pamphlet trunk/axiom/src/algebra/expr.spad.pamphlet trunk/axiom/src/algebra/expr2ups.spad.pamphlet trunk/axiom/src/algebra/exprode.spad.pamphlet Modified: trunk/axiom/books/bookvol10.4.pamphlet =================================================================== --- trunk/axiom/books/bookvol10.4.pamphlet 2009-01-27 11:32:18 UTC (rev 1093) +++ trunk/axiom/books/bookvol10.4.pamphlet 2009-01-28 11:29:26 UTC (rev 1094) @@ -634,6 +634,1618 @@ @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{package INTPACK AnnaNumericalIntegrationPackage} +\pagehead{AnnaNumericalIntegrationPackage}{INTPACK} +\pagepic{ps/v104annanumericalintegrationpackage.ps}{INTPACK}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\end{tabular} + +<<package INTPACK AnnaNumericalIntegrationPackage>>= +)abbrev package INTPACK AnnaNumericalIntegrationPackage +++ Author: Brian Dupee +++ Date Created: August 1994 +++ Date Last Updated: December 1997 +++ Basic Operations: integrate, measure +++ Related Constructors: Result, RoutinesTable +++ Also See: +++ AMS Classifications: +++ Keywords: +++ References: +++ Description: +++ \axiomType{AnnaNumericalIntegrationPackage} is a \axiom{package} +++ of functions for the \axiom{category} +++ \axiomType{NumericalIntegrationCategory} +++ with \axiom{measure}, and \axiom{integrate}. +EDF ==> Expression DoubleFloat +DF ==> DoubleFloat +EF ==> Expression Float +F ==> Float +INT ==> Integer +SOCDF ==> Segment OrderedCompletion DoubleFloat +OCDF ==> OrderedCompletion DoubleFloat +SBOCF ==> SegmentBinding OrderedCompletion Float +LSOCF ==> List Segment OrderedCompletion Float +SOCF ==> Segment OrderedCompletion Float +OCF ==> OrderedCompletion Float +LS ==> List Symbol +S ==> Symbol +LST ==> List String +ST ==> String +RT ==> RoutinesTable +NIA ==> Record(var:S, fn:EDF, range:SOCDF, abserr:DF, relerr:DF) +MDNIA ==> Record(fn:EDF,range:List SOCDF,abserr:DF,relerr:DF) +IFL ==> List(Record(ifail:Integer,instruction:String)) +Entry ==> Record(chapter:String, type:String, domainName: String, + defaultMin:F, measure:F, failList:IFL, explList:List String) +Measure ==> Record(measure:F, name:ST, explanations:LST, extra:Result) + + +AnnaNumericalIntegrationPackage(): with + + integrate: (EF,SOCF,F,F,RT) -> Result + ++ integrate(exp, a..b, epsrel, routines) is a top level ANNA function + ++ to integrate an expression, {\tt exp}, over a given range {\tt a} + ++ to {\tt b} to the required absolute and relative accuracy using + ++ the routines available in the RoutinesTable provided. + ++ + ++ It iterates over the \axiom{domains} of + ++ \axiomType{NumericalIntegrationCategory} + ++ to get the name and other + ++ relevant information of the the (domain of the) numerical + ++ routine likely to be the most appropriate, + ++ i.e. have the best \axiom{measure}. + ++ + ++ It then performs the integration of the given expression + ++ on that \axiom{domain}. + integrate: NumericalIntegrationProblem -> Result + ++ integrate(IntegrationProblem) is a top level ANNA function + ++ to integrate an expression over a given range or ranges + ++ to the required absolute and relative accuracy. + ++ + ++ It iterates over the \axiom{domains} of + ++ \axiomType{NumericalIntegrationCategory} to get the name and other + ++ relevant information of the the (domain of the) numerical + ++ routine likely to be the most appropriate, + ++ i.e. have the best \axiom{measure}. + ++ + ++ It then performs the integration of the given expression + ++ on that \axiom{domain}. + + integrate: (EF,SOCF,F,F) -> Result + ++ integrate(exp, a..b, epsabs, epsrel) is a top level ANNA function + ++ to integrate an expression, {\tt exp}, over a given range {\tt a} + ++ to {\tt b} to the required absolute and relative accuracy. + ++ + ++ It iterates over the \axiom{domains} of + ++ \axiomType{NumericalIntegrationCategory} to get the name and other + ++ relevant information of the the (domain of the) numerical + ++ routine likely to be the most appropriate, + ++ i.e. have the best \axiom{measure}. + ++ + ++ It then performs the integration of the given expression + ++ on that \axiom{domain}. + + integrate: (EF,SOCF,F) -> Result + ++ integrate(exp, a..b, epsrel) is a top level ANNA + ++ function to integrate an expression, {\tt exp}, over a given + ++ range {\tt a} to {\tt b} to the required relative accuracy. + ++ + ++ It iterates over the \axiom{domains} of + ++ \axiomType{NumericalIntegrationCategory} to get the name and other + ++ relevant information of the the (domain of the) numerical + ++ routine likely to be the most appropriate, + ++ i.e. have the best \axiom{measure}. + ++ + ++ It then performs the integration of the given expression + ++ on that \axiom{domain}. + ++ + ++ If epsrel = 0, a default absolute accuracy is used. + + integrate: (EF,SOCF) -> Result + ++ integrate(exp, a..b) is a top + ++ level ANNA function to integrate an expression, {\tt exp}, + ++ over a given range {\tt a} to {\tt b}. + ++ + ++ It iterates over the \axiom{domains} of + ++ \axiomType{NumericalIntegrationCategory} to get the name and other + ++ relevant information of the the (domain of the) numerical + ++ routine likely to be the most appropriate, + ++ i.e. have the best \axiom{measure}. + ++ + ++ It then performs the integration of the given expression + ++ on that \axiom{domain}. + ++ + ++ Default values for the absolute and relative error are used. + + integrate:(EF,LSOCF) -> Result + ++ integrate(exp, [a..b,c..d,...]) is a top + ++ level ANNA function to integrate a multivariate expression, {\tt exp}, + ++ over a given set of ranges. + ++ + ++ It iterates over the \axiom{domains} of + ++ \axiomType{NumericalIntegrationCategory} to get the name and other + ++ relevant information of the the (domain of the) numerical + ++ routine likely to be the most appropriate, + ++ i.e. have the best \axiom{measure}. + ++ + ++ It then performs the integration of the given expression + ++ on that \axiom{domain}. + ++ + ++ Default values for the absolute and relative error are used. + + integrate:(EF,LSOCF,F) -> Result + ++ integrate(exp, [a..b,c..d,...], epsrel) is a top + ++ level ANNA function to integrate a multivariate expression, {\tt exp}, + ++ over a given set of ranges to the required relative + ++ accuracy. + ++ + ++ It iterates over the \axiom{domains} of + ++ \axiomType{NumericalIntegrationCategory} to get the name and other + ++ relevant information of the the (domain of the) numerical + ++ routine likely to be the most appropriate, + ++ i.e. have the best \axiom{measure}. + ++ + ++ It then performs the integration of the given expression + ++ on that \axiom{domain}. + ++ + ++ If epsrel = 0, a default absolute accuracy is used. + + integrate:(EF,LSOCF,F,F) -> Result + ++ integrate(exp, [a..b,c..d,...], epsabs, epsrel) is a top + ++ level ANNA function to integrate a multivariate expression, {\tt exp}, + ++ over a given set of ranges to the required absolute and relative + ++ accuracy. + ++ + ++ It iterates over the \axiom{domains} of + ++ \axiomType{NumericalIntegrationCategory} to get the name and other + ++ relevant information of the the (domain of the) numerical + ++ routine likely to be the most appropriate, + ++ i.e. have the best \axiom{measure}. + ++ + ++ It then performs the integration of the given expression + ++ on that \axiom{domain}. + + integrate:(EF,LSOCF,F,F,RT) -> Result + ++ integrate(exp, [a..b,c..d,...], epsabs, epsrel, routines) is a top + ++ level ANNA function to integrate a multivariate expression, {\tt exp}, + ++ over a given set of ranges to the required absolute and relative + ++ accuracy, using the routines available in the RoutinesTable provided. + ++ + ++ It iterates over the \axiom{domains} of + ++ \axiomType{NumericalIntegrationCategory} to get the name and other + ++ relevant information of the the (domain of the) numerical + ++ routine likely to be the most appropriate, + ++ i.e. have the best \axiom{measure}. + ++ + ++ It then performs the integration of the given expression + ++ on that \axiom{domain}. + + measure:NumericalIntegrationProblem -> Measure + ++ measure(prob) is a top level ANNA function for identifying the most + ++ appropriate numerical routine for solving the numerical integration + ++ problem defined by \axiom{prob}. + ++ + ++ It calls each \axiom{domain} of \axiom{category} + ++ \axiomType{NumericalIntegrationCategory} in turn to calculate all measures + ++ and returns the best + ++ i.e. the name of the most appropriate domain and any other relevant + ++ information. + measure:(NumericalIntegrationProblem,RT) -> Measure + ++ measure(prob,R) is a top level ANNA function for identifying the most + ++ appropriate numerical routine from those in the routines table + ++ provided for solving the numerical integration + ++ problem defined by \axiom{prob}. + ++ + ++ It calls each \axiom{domain} listed in \axiom{R} of \axiom{category} + ++ \axiomType{NumericalIntegrationCategory} in turn to calculate all measures + ++ and returns the best + ++ i.e. the name of the most appropriate domain and any other relevant + ++ information. + integrate:(EF,SBOCF,ST) -> Union(Result,"failed") + ++ integrate(exp, x = a..b, "numerical") is a top level ANNA function to + ++ integrate an expression, {\tt exp}, over a given range, {\tt a} + ++ to {\tt b}. + ++ + ++ It iterates over the \axiom{domains} of + ++ \axiomType{NumericalIntegrationCategory} to get the name and other + ++ relevant information of the the (domain of the) numerical + ++ routine likely to be the most appropriate, + ++ i.e. have the best \axiom{measure}. + ++ + ++ It then performs the integration of the given expression + ++ on that \axiom{domain}.\newline + ++ + ++ Default values for the absolute and relative error are used. + ++ + ++ It is an error of the last argument is not {\tt "numerical"}. + integrate:(EF,SBOCF,S) -> Union(Result,"failed") + ++ integrate(exp, x = a..b, numerical) is a top level ANNA function to + ++ integrate an expression, {\tt exp}, over a given range, {\tt a} + ++ to {\tt b}. + ++ + ++ It iterates over the \axiom{domains} of + ++ \axiomType{NumericalIntegrationCategory} to get the name and other + ++ relevant information of the the (domain of the) numerical + ++ routine likely to be the most appropriate, + ++ i.e. have the best \axiom{measure}. + ++ + ++ It then performs the integration of the given expression + ++ on that \axiom{domain}.\newline + ++ + ++ Default values for the absolute and relative error are used. + ++ + ++ It is an error if the last argument is not {\tt numerical}. + + == add + + zeroMeasure: Measure -> Result + scriptedVariables?: MDNIA -> Boolean + preAnalysis:(Union(nia:NIA,mdnia:MDNIA),RT) -> RT + measureSpecific:(ST,RT,Union(nia:NIA,mdnia:MDNIA)) -> Record(measure:F,explanations:LST,extra:Result) + changeName:(Result,ST) -> Result + recoverAfterFail:(Union(nia:NIA,mdnia:MDNIA),RT,Measure,INT,Result) -> Record(a:Result,b:Measure) + better?:(Result,Result) -> Boolean + integrateConstant:(EF,SOCF) -> Result + integrateConstantList: (EF,LSOCF) -> Result + integrateArgs:(NumericalIntegrationProblem,RT) -> Result + integrateSpecific:(Union(nia:NIA,mdnia:MDNIA),ST,Result) -> Result + + import ExpertSystemToolsPackage + + integrateConstantList(exp:EF,ras:LSOCF):Result == + c:OCF := ((retract(exp)@F)$EF)::OCF + b := [hi(j)-lo(j) for j in ras] + c := c*reduce((#1)*(#2),b) + a := coerce(c)$AnyFunctions1(OCF) + text := coerce("Constant Function")$AnyFunctions1(ST) + construct([[result@S,a],[method@S,text]])$Result + + integrateConstant(exp:EF,ra:SOCF):Result == + c := (retract(exp)@F)$EF + r:OCF := (c::OCF)*(hi(ra)-lo(ra)) + a := coerce(r)$AnyFunctions1(OCF) + text := coerce("Constant Function")$AnyFunctions1(ST) + construct([[result@S,a],[method@S,text]])$Result + + zeroMeasure(m:Measure):Result == + a := coerce(0$DF)$AnyFunctions1(DF) + text := coerce("Constant Function")$AnyFunctions1(String) + r := construct([[result@Symbol,a],[method@Symbol,text]])$Result + concat(measure2Result m,r)$ExpertSystemToolsPackage + + scriptedVariables?(mdnia:MDNIA):Boolean == + vars:List Symbol := variables(mdnia.fn)$EDF + var1 := first(vars)$(List Symbol) + not scripted?(var1) => false + name1 := name(var1)$Symbol + for i in 2..# vars repeat + not ((scripted?(vars.i)$Symbol) and (name1 = name(vars.i)$Symbol)) => + return false + true + + preAnalysis(args:Union(nia:NIA,mdnia:MDNIA),t:RT):RT == + import RT + r:RT := selectIntegrationRoutines t + args case nia => + arg:NIA := args.nia + rangeIsFinite(arg)$d01AgentsPackage case finite => + selectFiniteRoutines r + selectNonFiniteRoutines r + selectMultiDimensionalRoutines r + + changeName(ans:Result,name:ST):Result == + sy:S := coerce(name "Answer")$S + anyAns:Any := coerce(ans)$AnyFunctions1(Result) + construct([[sy,anyAns]])$Result + + measureSpecific(name:ST,R:RT,args:Union(nia:NIA,mdnia:MDNIA)): + Record(measure:F,explanations:ST,extra:Result) == + args case nia => + arg:NIA := args.nia + name = "d01ajfAnnaType" => measure(R,arg)$d01ajfAnnaType + name = "d01akfAnnaType" => measure(R,arg)$d01akfAnnaType + name = "d01alfAnnaType" => measure(R,arg)$d01alfAnnaType + name = "d01amfAnnaType" => measure(R,arg)$d01amfAnnaType + name = "d01anfAnnaType" => measure(R,arg)$d01anfAnnaType + name = "d01apfAnnaType" => measure(R,arg)$d01apfAnnaType + name = "d01aqfAnnaType" => measure(R,arg)$d01aqfAnnaType + name = "d01asfAnnaType" => measure(R,arg)$d01asfAnnaType + name = "d01TransformFunctionType" => + measure(R,arg)$d01TransformFunctionType + error("measureSpecific","invalid type name: " name)$ErrorFunctions + args case mdnia => + arg2:MDNIA := args.mdnia + name = "d01gbfAnnaType" => measure(R,arg2)$d01gbfAnnaType + name = "d01fcfAnnaType" => measure(R,arg2)$d01fcfAnnaType + error("measureSpecific","invalid type name: " name)$ErrorFunctions + error("measureSpecific","invalid type name")$ErrorFunctions + + measure(a:NumericalIntegrationProblem,R:RT):Measure == + args:Union(nia:NIA,mdnia:MDNIA) := retract(a)$NumericalIntegrationProblem + sofar := 0$F + best := "none" :: ST + routs := copy R + routs := preAnalysis(args,routs) + empty?(routs)$RT => + error("measure", "no routines found")$ErrorFunctions + rout := inspect(routs)$RT + e := retract(rout.entry)$AnyFunctions1(Entry) + meth:LST := ["Trying " e.type " integration routines"] + ext := empty()$Result + for i in 1..# routs repeat + rout := extract!(routs)$RT + e := retract(rout.entry)$AnyFunctions1(Entry) + n := e.domainName + if e.defaultMin > sofar then + m := measureSpecific(n,R,args) + if m.measure > sofar then + sofar := m.measure + best := n + ext := concat(m.extra,ext)$ExpertSystemToolsPackage + str:LST := [string(rout.key)$S "measure: " outputMeasure(m.measure) + " - " m.explanations] + else + str:LST := [string(rout.key)$S " is no better than other routines"] + meth := append(meth,str)$LST + [sofar,best,meth,ext] + + measure(a:NumericalIntegrationProblem):Measure == + measure(a,routines()$RT) + + integrateSpecific(args:Union(nia:NIA,mdnia:MDNIA),n:ST,ex:Result):Result == + args case nia => + arg:NIA := args.nia + n = "d01ajfAnnaType" => numericalIntegration(arg,ex)$d01ajfAnnaType + n = "d01TransformFunctionType" => + numericalIntegration(arg,ex)$d01TransformFunctionType + n = "d01amfAnnaType" => numericalIntegration(arg,ex)$d01amfAnnaType + n = "d01apfAnnaType" => numericalIntegration(arg,ex)$d01apfAnnaType + n = "d01aqfAnnaType" => numericalIntegration(arg,ex)$d01aqfAnnaType + n = "d01alfAnnaType" => numericalIntegration(arg,ex)$d01alfAnnaType + n = "d01akfAnnaType" => numericalIntegration(arg,ex)$d01akfAnnaType + n = "d01anfAnnaType" => numericalIntegration(arg,ex)$d01anfAnnaType + n = "d01asfAnnaType" => numericalIntegration(arg,ex)$d01asfAnnaType + error("integrateSpecific","invalid type name: " n)$ErrorFunctions + args case mdnia => + arg2:MDNIA := args.mdnia + n = "d01gbfAnnaType" => numericalIntegration(arg2,ex)$d01gbfAnnaType + n = "d01fcfAnnaType" => numericalIntegration(arg2,ex)$d01fcfAnnaType + error("integrateSpecific","invalid type name: " n)$ErrorFunctions + error("integrateSpecific","invalid type name: " n)$ErrorFunctions + + better?(r:Result,s:Result):Boolean == + a1 := search("abserr"::S,r)$Result + a1 case "failed" => false + abserr1 := retract(a1)$AnyFunctions1(DF) + negative?(abserr1) => false + a2 := search("abserr"::S,s)$Result + a2 case "failed" => true + abserr2 := retract(a2)$AnyFunctions1(DF) + negative?(abserr2) => true + (abserr1 < abserr2) -- true if r.abserr better than s.abserr + + recoverAfterFail(n:Union(nia:NIA,mdnia:MDNIA),routs:RT,m:Measure,iint:INT, + r:Result):Record(a:Result,b:Measure) == + bestName := m.name + while positive?(iint) repeat + routineName := m.name + s := recoverAfterFail(routs,routineName(1..6),iint)$RoutinesTable + s case "failed" => iint := 0 + if s = "changeEps" then + nn := n.nia + zero?(nn.abserr) => + nn.abserr := 1.0e-8 :: DF + m := measure(n::NumericalIntegrationProblem,routs) + zero?(m.measure) => iint := 0 + r := integrateSpecific(n,m.name,m.extra) + iint := 0 + rn := routineName(1..6) + buttVal := getButtonValue(rn,"functionEvaluations")$AttributeButtons + if (s = "incrFunEvals") and (buttVal < 0.8) then + increase(rn,"functionEvaluations")$AttributeButtons + if s = "increase tolerance" then + (n.nia).relerr := (n.nia).relerr*(10.0::DF) + if s = "decrease tolerance" then + (n.nia).relerr := (n.nia).relerr/(10.0::DF) + fl := coerce(s)$AnyFunctions1(ST) + flrec:Record(key:S,entry:Any):=[failure@S,fl] + m2 := measure(n::NumericalIntegrationProblem,routs) + zero?(m2.measure) => iint := 0 + r2:Result := integrateSpecific(n,m2.name,m2.extra) + better?(r,r2) => + m.name := m2.name + insert!(flrec,r)$Result + bestName := m2.name + m := m2 + insert!(flrec,r2)$Result + r := concat(r2,changeName(r,routineName))$ExpertSystemToolsPackage + iany := search(ifail@S,r2)$Result + iany case "failed" => iint := 0 + iint := retract(iany)$AnyFunctions1(INT) + m.name := bestName + [r,m] + + integrateArgs(prob:NumericalIntegrationProblem,t:RT):Result == + args:Union(nia:NIA,mdnia:MDNIA) := retract(prob)$NumericalIntegrationProblem + routs := copy(t)$RT + if args case mdnia then + arg := args.mdnia + v := (# variables(arg.fn)) + not scriptedVariables?(arg) => + error("MultiDimensionalNumericalIntegrationPackage", + "invalid variable names")$ErrorFunctions + (v ~= # arg.range)@Boolean => + error("MultiDimensionalNumericalIntegrationPackage", + "number of variables do not match number of ranges")$ErrorFunctions + m := measure(prob,routs) + zero?(m.measure) => zeroMeasure m + r := integrateSpecific(args,m.name,m.extra) + iany := search(ifail@S,r)$Result + iint := 0$INT + if (iany case Any) then + iint := retract(iany)$AnyFunctions1(INT) + if positive?(iint) then + tu:Record(a:Result,b:Measure) := recoverAfterFail(args,routs,m,iint,r) + r := tu.a + m := tu.b + r := concat(measure2Result m,r)$ExpertSystemToolsPackage + n := m.name + nn:ST := + (# n > 14) => "d01transform" + n(1..6) + expl := getExplanations(routs,nn)$RoutinesTable + expla := coerce(expl)$AnyFunctions1(LST) + explaa:Record(key:Symbol,entry:Any) := ["explanations"::Symbol,expla] + r := concat(construct([explaa]),r) + args case nia => + att := showAttributes(args.nia)$IntegrationFunctionsTable + att case "failed" => r + concat(att2Result att,r)$ExpertSystemToolsPackage + r + + integrate(args:NumericalIntegrationProblem):Result == + integrateArgs(args,routines()$RT) + + integrate(exp:EF,ra:SOCF,epsabs:F,epsrel:F,r:RT):Result == + Var:LS := variables(exp)$EF + empty?(Var)$LS => integrateConstant(exp,ra) + args:NIA := [first(Var)$LS,ef2edf exp,socf2socdf ra,f2df epsabs,f2df epsrel] + integrateArgs(args::NumericalIntegrationProblem,r) + + integrate(exp:EF,ra:SOCF,epsabs:F,epsrel:F):Result == + integrate(exp,ra,epsabs,epsrel,routines()$RT) + + integrate(exp:EF,ra:SOCF,err:F):Result == + positive?(err)$F => integrate(exp,ra,0$F,err) + integrate(exp,ra,1.0E-5,err) + + integrate(exp:EF,ra:SOCF):Result == integrate(exp,ra,0$F,1.0E-5) + + integrate(exp:EF,sb:SBOCF, st:ST) == + st = "numerical" => integrate(exp,segment sb) + "failed" + + integrate(exp:EF,sb:SBOCF, s:S) == + s = (numerical::Symbol) => integrate(exp,segment sb) + "failed" + + integrate(exp:EF,ra:LSOCF,epsabs:F,epsrel:F,r:RT):Result == + vars := variables(exp)$EF + empty?(vars)$LS => integrateConstantList(exp,ra) + args:MDNIA := [ef2edf exp,convert ra,f2df epsabs,f2df epsrel] + integrateArgs(args::NumericalIntegrationProblem,r) + + integrate(exp:EF,ra:LSOCF,epsabs:F,epsrel:F):Result == + integrate(exp,ra,epsabs,epsrel,routines()$RT) + + integrate(exp:EF,ra:LSOCF,epsrel:F):Result == + zero? epsrel => integrate(exp,ra,1.0e-6,epsrel) + integrate(exp,ra,0$F,epsrel) + + integrate(exp:EF,ra:LSOCF):Result == integrate(exp,ra,1.0e-4) + +@ +<<INTPACK.dotabb>>= +"INTPACK" [color="#FF4488",href="bookvol10.4.pdf#nameddest=INTPACK"] +"TBAGG" [color="#4488FF",href="bookvol10.2.pdf#nameddest=TBAGG"] +"INTPACK" -> "TBAGG" + +@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{package OPTPACK AnnaNumericalOptimizationPackage} +\pagehead{AnnaNumericalOptimizationPackage}{OPTPACK} +\pagepic{ps/v104annanumericaloptimizationpackage.ps}{OPTPACK}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\end{tabular} + +<<package OPTPACK AnnaNumericalOptimizationPackage>>= +)abbrev package OPTPACK AnnaNumericalOptimizationPackage +++ Author: Brian Dupee +++ Date Created: February 1995 +++ Date Last Updated: December 1997 +++ Basic Operations: measure, optimize, goodnessOfFit. +++ Description: +++ \axiomType{AnnaNumericalOptimizationPackage} is a \axiom{package} of +++ functions for the \axiomType{NumericalOptimizationCategory} +++ with \axiom{measure} and \axiom{optimize}. +EDF ==> Expression DoubleFloat +LEDF ==> List Expression DoubleFloat +LDF ==> List DoubleFloat +MDF ==> Matrix DoubleFloat +DF ==> DoubleFloat +LOCDF ==> List OrderedCompletion DoubleFloat +OCDF ==> OrderedCompletion DoubleFloat +LOCF ==> List OrderedCompletion Float +OCF ==> OrderedCompletion Float +LEF ==> List Expression Float +EF ==> Expression Float +LF ==> List Float +F ==> Float +LS ==> List Symbol +LST ==> List String +INT ==> Integer +NOA ==> Record(fn:EDF, init:LDF, lb:LOCDF, cf:LEDF, ub:LOCDF) +LSA ==> Record(lfn:LEDF, init:LDF) +IFL ==> List(Record(ifail:Integer,instruction:String)) +Entry ==> Record(chapter:String, type:String, domainName: String, + defaultMin:F, measure:F, failList:IFL, explList:LST) +Measure ==> Record(measure:F,name:String, explanations:List String) +Measure2 ==> Record(measure:F,explanations:String) +RT ==> RoutinesTable +UNOALSA ==> Union(noa:NOA,lsa:LSA) + +AnnaNumericalOptimizationPackage(): with + measure:NumericalOptimizationProblem -> Measure + ++ measure(prob) is a top level ANNA function for identifying the most + ++ appropriate numerical routine from those in the routines table + ++ provided for solving the numerical optimization problem defined by + ++ \axiom{prob} by checking various attributes of the functions and + ++ calculating a measure of compatibility of each routine to these + ++ attributes. + ++ + ++ It calls each \axiom{domain} of \axiom{category} + ++ \axiomType{NumericalOptimizationCategory} in turn to calculate all + ++ measures and returns the best i.e. the name of the most + ++ appropriate domain and any other relevant information. + + measure:(NumericalOptimizationProblem,RT) -> Measure + ++ measure(prob,R) is a top level ANNA function for identifying the most + ++ appropriate numerical routine from those in the routines table + ++ provided for solving the numerical optimization problem defined by + ++ \axiom{prob} by checking various attributes of the functions and + ++ calculating a measure of compatibility of each routine to these + ++ attributes. + ++ + ++ It calls each \axiom{domain} listed in \axiom{R} of \axiom{category} + ++ \axiomType{NumericalOptimizationCategory} in turn to calculate all + ++ measures and returns the best i.e. the name of the most + ++ appropriate domain and any other relevant information. + + optimize:(NumericalOptimizationProblem,RT) -> Result + ++ optimize(prob,routines) is a top level ANNA function to + ++ minimize a function or a set of functions with any constraints + ++ as defined within \axiom{prob}. + ++ + ++ It iterates over the \axiom{domains} listed in \axiom{routines} of + ++ \axiomType{NumericalOptimizationCategory} + ++ to get the name and other relevant information of the best + ++ \axiom{measure} and then optimize the function on that \axiom{domain}. + + optimize:NumericalOptimizationProblem -> Result + ++ optimize(prob) is a top level ANNA function to + ++ minimize a function or a set of functions with any constraints + ++ as defined within \axiom{prob}. + ++ + ++ It iterates over the \axiom{domains} of + ++ \axiomType{NumericalOptimizationCategory} + ++ to get the name and other relevant information of the best + ++ \axiom{measure} and then optimize the function on that \axiom{domain}. + + goodnessOfFit:NumericalOptimizationProblem -> Result + ++ goodnessOfFit(prob) is a top level ANNA function to + ++ check to goodness of fit of a least squares model + ++ as defined within \axiom{prob}. + ++ + ++ It iterates over the \axiom{domains} of + ++ \axiomType{NumericalOptimizationCategory} + ++ to get the name and other relevant information of the best + ++ \axiom{measure} and then optimize the function on that \axiom{domain}. + ++ It then calls the numerical routine \axiomType{E04YCF} to get estimates + ++ of the variance-covariance matrix of the regression coefficients of + ++ the least-squares problem. + ++ + ++ It thus returns both the results of the optimization and the + ++ variance-covariance calculation. + + optimize:(EF,LF,LOCF,LEF,LOCF) -> Result + ++ optimize(f,start,lower,cons,upper) is a top level ANNA function to + ++ minimize a function, \axiom{f}, of one or more variables with the + ++ given constraints. + ++ + ++ These constraints may be simple constraints on the variables + ++ in which case \axiom{cons} would be an empty list and the bounds on + ++ those variables defined in \axiom{lower} and \axiom{upper}, or a + ++ mixture of simple, linear and non-linear constraints, where + ++ \axiom{cons} contains the linear and non-linear constraints and + ++ the bounds on these are added to \axiom{upper} and \axiom{lower}. + ++ + ++ The parameter \axiom{start} is a list of the initial guesses of the + ++ values of the variables. + ++ + ++ It iterates over the \axiom{domains} of + ++ \axiomType{NumericalOptimizationCategory} + ++ to get the name and other relevant information of the best + ++ \axiom{measure} and then optimize the function on that \axiom{domain}. + + optimize:(EF,LF,LOCF,LOCF) -> Result + ++ optimize(f,start,lower,upper) is a top level ANNA function to + ++ minimize a function, \axiom{f}, of one or more variables with + ++ simple constraints. The bounds on + ++ the variables are defined in \axiom{lower} and \axiom{upper}. + ++ + ++ The parameter \axiom{start} is a list of the initial guesses of the + ++ values of the variables. + ++ + ++ It iterates over the \axiom{domains} of + ++ \axiomType{NumericalOptimizationCategory} + ++ to get the name and other relevant information of the best + ++ \axiom{measure} and then optimize the function on that \axiom{domain}. + + optimize:(EF,LF) -> Result + ++ optimize(f,start) is a top level ANNA function to + ++ minimize a function, \axiom{f}, of one or more variables without + ++ constraints. + ++ + ++ The parameter \axiom{start} is a list of the initial guesses of the + ++ values of the variables. + ++ + ++ It iterates over the \axiom{domains} of + ++ \axiomType{NumericalOptimizationCategory} + ++ to get the name and other relevant information of the best + ++ \axiom{measure} and then optimize the function on that \axiom{domain}. + + optimize:(LEF,LF) -> Result + ++ optimize(lf,start) is a top level ANNA function to + ++ minimize a set of functions, \axiom{lf}, of one or more variables + ++ without constraints i.e. a least-squares problem. + ++ + ++ The parameter \axiom{start} is a list of the initial guesses of the + ++ values of the variables. + ++ + ++ It iterates over the \axiom{domains} of + ++ \axiomType{NumericalOptimizationCategory} + ++ to get the name and other relevant information of the best + ++ \axiom{measure} and then optimize the function on that \axiom{domain}. + + goodnessOfFit:(LEF,LF) -> Result + ++ goodnessOfFit(lf,start) is a top level ANNA function to + ++ check to goodness of fit of a least squares model i.e. the minimization + ++ of a set of functions, \axiom{lf}, of one or more variables without + ++ constraints. + ++ + ++ The parameter \axiom{start} is a list of the initial guesses of the + ++ values of the variables. + ++ + ++ It iterates over the \axiom{domains} of + ++ \axiomType{NumericalOptimizationCategory} + ++ to get the name and other relevant information of the best + ++ \axiom{measure} and then optimize the function on that \axiom{domain}. + ++ It then calls the numerical routine \axiomType{E04YCF} to get estimates + ++ of the variance-covariance matrix of the regression coefficients of + ++ the least-squares problem. + ++ + ++ It thus returns both the results of the optimization and the + ++ variance-covariance calculation. + + ++ goodnessOfFit(lf,start) is a top level function to iterate over + ++ the \axiom{domains} of \axiomType{NumericalOptimizationCategory} + ++ to get the name and other relevant information of the best + ++ \axiom{measure} and then optimize the function on that \axiom{domain}. + ++ It then checks the goodness of fit of the least squares model. + + == add + + preAnalysis:RT -> RT + zeroMeasure:Measure -> Result + optimizeSpecific:(UNOALSA,String) -> Result + measureSpecific:(String,RT,UNOALSA) -> Measure2 + changeName:(Result,String) -> Result + recoverAfterFail:(UNOALSA,RT,Measure,INT,Result) -> Record(a:Result,b:Measure) + constant:UNOALSA -> Union(DF, "failed") + optimizeConstant:DF -> Result + + import ExpertSystemToolsPackage,e04AgentsPackage,NumericalOptimizationProblem + + constant(args:UNOALSA):Union(DF,"failed") == + args case noa => + Args := args.noa + f := Args.fn + retractIfCan(f)@Union(DoubleFloat,"failed") + "failed" + + optimizeConstant(c:DF): Result == + a := coerce(c)$AnyFunctions1(DF) + text := coerce("Constant Function")$AnyFunctions1(String) + construct([[objf@Symbol,a],[method@Symbol,text]])$Result + + preAnalysis(args:UNOALSA,t:RT):RT == + r := selectOptimizationRoutines(t)$RT + args case lsa => + selectSumOfSquaresRoutines(r)$RT + r + + zeroMeasure(m:Measure):Result == + a := coerce(0$F)$AnyFunctions1(F) + text := coerce("Zero Measure")$AnyFunctions1(String) + r := construct([[objf@Symbol,a],[method@Symbol,text]])$Result + concat(measure2Result m,r) + + measureSpecific(name:String,R:RT,args:UNOALSA): Measure2 == + args case noa => + arg:NOA := args.noa + name = "e04dgfAnnaType" => measure(R,arg)$e04dgfAnnaType + name = "e04fdfAnnaType" => measure(R,arg)$e04fdfAnnaType + name = "e04gcfAnnaType" => measure(R,arg)$e04gcfAnnaType + name = "e04jafAnnaType" => measure(R,arg)$e04jafAnnaType + name = "e04mbfAnnaType" => measure(R,arg)$e04mbfAnnaType + name = "e04nafAnnaType" => measure(R,arg)$e04nafAnnaType + name = "e04ucfAnnaType" => measure(R,arg)$e04ucfAnnaType + error("measureSpecific","invalid type name: " name)$ErrorFunctions + args case lsa => + arg2:LSA := args.lsa + name = "e04fdfAnnaType" => measure(R,arg2)$e04fdfAnnaType + name = "e04gcfAnnaType" => measure(R,arg2)$e04gcfAnnaType + error("measureSpecific","invalid type name: " name)$ErrorFunctions + error("measureSpecific","invalid argument type")$ErrorFunctions + + measure(Args:NumericalOptimizationProblem,R:RT):Measure == + args:UNOALSA := retract(Args)$NumericalOptimizationProblem + sofar := 0$F + best := "none" :: String + routs := copy R + routs := preAnalysis(args,routs) + empty?(routs)$RT => + error("measure", "no routines found")$ErrorFunctions + rout := inspect(routs)$RT + e := retract(rout.entry)$AnyFunctions1(Entry) + meth := empty()$(List String) + for i in 1..# routs repeat + rout := extract!(routs)$RT + e := retract(rout.entry)$AnyFunctions1(Entry) + n := e.domainName + if e.defaultMin > sofar then + m := measureSpecific(n,R,args) + if m.measure > sofar then + sofar := m.measure + best := n + str := [concat(concat([string(rout.key)$Symbol,"measure: ", + outputMeasure(m.measure)," - "], + m.explanations)$(List String))$String] + else + str := [concat([string(rout.key)$Symbol + ," is no better than other routines"])$String] + meth := append(meth,str)$(List String) + [sofar,best,meth] + + measure(args:NumericalOptimizationProblem):Measure == measure(args,routines()$RT) + + optimizeSpecific(args:UNOALSA,name:String):Result == + args case noa => + arg:NOA := args.noa + name = "e04dgfAnnaType" => numericalOptimization(arg)$e04dgfAnnaType + name = "e04fdfAnnaType" => numericalOptimization(arg)$e04fdfAnnaType + name = "e04gcfAnnaType" => numericalOptimization(arg)$e04gcfAnnaType + name = "e04jafAnnaType" => numericalOptimization(arg)$e04jafAnnaType + name = "e04mbfAnnaType" => numericalOptimization(arg)$e04mbfAnnaType + name = "e04nafAnnaType" => numericalOptimization(arg)$e04nafAnnaType + name = "e04ucfAnnaType" => numericalOptimization(arg)$e04ucfAnnaType + error("optimizeSpecific","invalid type name: " name)$ErrorFunctions + args case lsa => + arg2:LSA := args.lsa + name = "e04fdfAnnaType" => numericalOptimization(arg2)$e04fdfAnnaType + name = "e04gcfAnnaType" => numericalOptimization(arg2)$e04gcfAnnaType + error("optimizeSpecific","invalid type name: " name)$ErrorFunctions + error("optimizeSpecific","invalid type name: " name)$ErrorFunctions + + changeName(ans:Result,name:String):Result == + st:String := concat([name,"Answer"])$String + sy:Symbol := coerce(st)$Symbol + anyAns:Any := coerce(ans)$AnyFunctions1(Result) + construct([[sy,anyAns]])$Result + + recoverAfterFail(args:UNOALSA,routs:RT,m:Measure, + iint:INT,r:Result):Record(a:Result,b:Measure) == + while positive?(iint) repeat + routineName := m.name + s := recoverAfterFail(routs,routineName(1..6),iint)$RT + s case "failed" => iint := 0 + (s = "no action")@Boolean => iint := 0 + fl := coerce(s)$AnyFunctions1(String) + flrec:Record(key:Symbol,entry:Any):=[failure@Symbol,fl] + m2 := measure(args::NumericalOptimizationProblem,routs) + zero?(m2.measure) => iint := 0 + r2:Result := optimizeSpecific(args,m2.name) + m := m2 + insert!(flrec,r2)$Result + r := concat(r2,changeName(r,routineName)) + iany := search(ifail@Symbol,r2)$Result + iany case "failed" => iint := 0 + iint := retract(iany)$AnyFunctions1(INT) + [r,m] + + optimize(Args:NumericalOptimizationProblem,t:RT):Result == + args:UNOALSA := retract(Args)$NumericalOptimizationProblem + routs := copy(t)$RT + c:Union(DF,"failed") := constant(args) + c case DF => optimizeConstant(c) + m := measure(Args,routs) + zero?(m.measure) => zeroMeasure m + r := optimizeSpecific(args,n := m.name) + iany := search(ifail@Symbol,r)$Result + iint := 0$INT + if (iany case Any) then + iint := retract(iany)$AnyFunctions1(INT) + if positive?(iint) then + tu:Record(a:Result,b:Measure) := recoverAfterFail(args,routs,m,iint,r) + r := tu.a + m := tu.b + r := concat(measure2Result m,r) + expl := getExplanations(routs,n(1..6))$RoutinesTable + expla := coerce(expl)$AnyFunctions1(LST) + explaa:Record(key:Symbol,entry:Any) := ["explanations"::Symbol,expla] + r := concat(construct([explaa]),r) + att:List String := optAttributes(args) + atta := coerce(att)$AnyFunctions1(List String) + attr:Record(key:Symbol,entry:Any) := [attributes@Symbol,atta] + insert!(attr,r)$Result + + optimize(args:NumericalOptimizationProblem):Result == optimize(args,routines()$RT) + + goodnessOfFit(Args:NumericalOptimizationProblem):Result == + r := optimize(Args) + args1:UNOALSA := retract(Args)$NumericalOptimizationProblem + args1 case noa => error("goodnessOfFit","Not an appropriate problem") + args:LSA := args1.lsa + lf := args.lfn + n:INT := #(variables(args)) + m:INT := # lf + me := search(method,r)$Result + me case "failed" => r + meth := retract(me)$AnyFunctions1(Result) + na := search(nameOfRoutine,meth)$Result + na case "failed" => r + name := retract(na)$AnyFunctions1(String) + temp:INT := (n*(n-1)) quo 2 + ns:INT := + name = "e04fdfAnnaType" => 6*n+(2+n)*m+1+max(1,temp) + 8*n+(n+2)*m+temp+1+max(1,temp) + nv:INT := ns+n + ww := search(w,r)$Result + ww case "failed" => r + ws:MDF := retract(ww)$AnyFunctions1(MDF) + fr := search(objf,r)$Result + fr case "failed" => r + f := retract(fr)$AnyFunctions1(DF) + s := subMatrix(ws,1,1,ns,nv-1)$MDF + v := subMatrix(ws,1,1,nv,nv+n*n-1)$MDF + r2 := e04ycf(0,m,n,f,s,n,v,-1)$NagOptimisationPackage + concat(r,r2) + + optimize(f:EF,start:LF,lower:LOCF,cons:LEF,upper:LOCF):Result == + args:NOA := [ef2edf(f),[f2df i for i in start],[ocf2ocdf j for j in lower], + [ef2edf k for k in cons], [ocf2ocdf l for l in upper]] + optimize(args::NumericalOptimizationProblem) + + optimize(f:EF,start:LF,lower:LOCF,upper:LOCF):Result == + optimize(f,start,lower,empty()$LEF,upper) + + optimize(f:EF,start:LF):Result == + optimize(f,start,empty()$LOCF,empty()$LOCF) + + optimize(lf:LEF,start:LF):Result == + args:LSA := [[ef2edf i for i in lf],[f2df j for j in start]] + optimize(args::NumericalOptimizationProblem) + + goodnessOfFit(lf:LEF,start:LF):Result == + args:LSA := [[ef2edf i for i in lf],[f2df j for j in start]] + goodnessOfFit(args::NumericalOptimizationProblem) + +@ +<<OPTPACK.dotabb>>= +"OPTPACK" [color="#FF4488",href="bookvol10.4.pdf#nameddest=OPTPACK"] +"ALIST" [color="#88FF44",href="bookvol10.3.pdf#nameddest=ALIST"] +"OPTPACK" -> "ALIST" + +@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{package ODEPACK AnnaOrdinaryDifferentialEquationPackage} +\pagehead{AnnaOrdinaryDifferentialEquationPackage}{ODEPACK} +\pagepic{ps/v104annaordinarydifferentialequationpackage.ps}{ODEPACK}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\end{tabular} + +<<package ODEPACK AnnaOrdinaryDifferentialEquationPackage>>= +)abbrev package ODEPACK AnnaOrdinaryDifferentialEquationPackage +++ Author: Brian Dupee +++ Date Created: February 1995 +++ Date Last Updated: December 1997 +++ Basic Operations: solve, measure +++ Description: +++ \axiomType{AnnaOrdinaryDifferentialEquationPackage} is a \axiom{package} +++ of functions for the \axiom{category} \axiomType{OrdinaryDifferentialEquationsSolverCategory} +++ with \axiom{measure}, and \axiom{solve}. +++ +EDF ==> Expression DoubleFloat +LDF ==> List DoubleFloat +MDF ==> Matrix DoubleFloat +DF ==> DoubleFloat +FI ==> Fraction Integer +EFI ==> Expression Fraction Integer +SOCDF ==> Segment OrderedCompletion DoubleFloat +VEDF ==> Vector Expression DoubleFloat +VEF ==> Vector Expression Float +EF ==> Expression Float +LF ==> List Float +F ==> Float +VDF ==> Vector DoubleFloat +VMF ==> Vector MachineFloat +MF ==> MachineFloat +LS ==> List Symbol +ST ==> String +LST ==> List String +INT ==> Integer +RT ==> RoutinesTable +ODEA ==> Record(xinit:DF,xend:DF,fn:VEDF,yinit:LDF,intvals:LDF,_ + g:EDF,abserr:DF,relerr:DF) +IFL ==> List(Record(ifail:Integer,instruction:String)) +Entry ==> Record(chapter:String, type:String, domainName: String, + defaultMin:F, measure:F, failList:IFL, explList:LST) +Measure ==> Record(measure:F,name:String, explanations:List String) + +AnnaOrdinaryDifferentialEquationPackage(): with + solve:(NumericalODEProblem) -> Result + ++ solve(odeProblem) is a top level ANNA function to solve numerically a + ++ system of ordinary differential equations i.e. equations for the + ++ derivatives Y[1]'..Y[n]' defined in terms of X,Y[1]..Y[n], together + ++ with starting values for X and Y[1]..Y[n] (called the initial + ++ conditions), a final value of X, an accuracy requirement and any + ++ intermediate points at which the result is required. + ++ + ++ It iterates over the \axiom{domains} of + ++ \axiomType{OrdinaryDifferentialEquationsSolverCategory} + ++ to get the name and other + ++ relevant information of the the (domain of the) numerical + ++ routine likely to be the most appropriate, + ++ i.e. have the best \axiom{measure}. + ++ + ++ The method used to perform the numerical + ++ process will be one of the routines contained in the NAG numerical + ++ Library. The function predicts the likely most effective routine + ++ by checking various attributes of the system of ODE's and calculating + ++ a measure of compatibility of each routine to these attributes. + ++ + ++ It then calls the resulting `best' routine. + solve:(NumericalODEProblem,RT) -> Result + ++ solve(odeProblem,R) is a top level ANNA function to solve numerically a + ++ system of ordinary differential equations i.e. equations for the + ++ derivatives Y[1]'..Y[n]' defined in terms of X,Y[1]..Y[n], together + ++ with starting values for X and Y[1]..Y[n] (called the initial + ++ conditions), a final value of X, an accuracy requirement and any + ++ intermediate points at which the result is required. + ++ + ++ It iterates over the \axiom{domains} of + ++ \axiomType{OrdinaryDifferentialEquationsSolverCategory} contained in + ++ the table of routines \axiom{R} to get the name and other + ++ relevant information of the the (domain of the) numerical + ++ routine likely to be the most appropriate, + ++ i.e. have the best \axiom{measure}. + ++ + ++ The method used to perform the numerical + ++ process will be one of the routines contained in the NAG numerical + ++ Library. The function predicts the likely most effective routine + ++ by checking various attributes of the system of ODE's and calculating + ++ a measure of compatibility of each routine to these attributes. + ++ + ++ It then calls the resulting `best' routine. + solve:(VEF,F,F,LF) -> Result + ++ solve(f,xStart,xEnd,yInitial) is a top level ANNA function to solve numerically a + ++ system of ordinary differential equations i.e. equations for the + ++ derivatives Y[1]'..Y[n]' defined in terms of X,Y[1]..Y[n], together + ++ with a starting value for X and Y[1]..Y[n] (called the initial + ++ conditions) and a final value of X. A default value + ++ is used for the accuracy requirement. + ++ + ++ It iterates over the \axiom{domains} of + ++ \axiomType{OrdinaryDifferentialEquationsSolverCategory} contained in + ++ the table of routines \axiom{R} to get the name and other + ++ relevant information of the the (domain of the) numerical + ++ routine likely to be the most appropriate, + ++ i.e. have the best \axiom{measure}. + ++ + ++ The method used to perform the numerical + ++ process will be one of the routines contained in the NAG numerical + ++ Library. The function predicts the likely most effective routine + ++ by checking various attributes of the system of ODE's and calculating + ++ a measure of compatibility of each routine to these attributes. + ++ + ++ It then calls the resulting `best' routine. + solve:(VEF,F,F,LF,F) -> Result + ++ solve(f,xStart,xEnd,yInitial,tol) is a top level ANNA function to solve + ++ numerically a system of ordinary differential equations, \axiom{f}, i.e. + ++ equations for the derivatives Y[1]'..Y[n]' defined in terms + ++ of X,Y[1]..Y[n] from \axiom{xStart} to \axiom{xEnd} with the initial + ++ values for Y[1]..Y[n] (\axiom{yInitial}) to a tolerance \axiom{tol}. + ++ + ++ It iterates over the \axiom{domains} of + ++ \axiomType{OrdinaryDifferentialEquationsSolverCategory} contained in + ++ the table of routines \axiom{R} to get the name and other + ++ relevant information of the the (domain of the) numerical + ++ routine likely to be the most appropriate, + ++ i.e. have the best \axiom{measure}. + ++ + ++ The method used to perform the numerical + ++ process will be one of the routines contained in the NAG numerical + ++ Library. The function predicts the likely most effective routine + ++ by checking various attributes of the system of ODE's and calculating + ++ a measure of compatibility of each routine to these attributes. + ++ + ++ It then calls the resulting `best' routine. + solve:(VEF,F,F,LF,EF,F) -> Result + ++ solve(f,xStart,xEnd,yInitial,G,tol) is a top level ANNA function to solve + ++ numerically a system of ordinary differential equations, \axiom{f}, i.e. + ++ equations for the derivatives Y[1]'..Y[n]' defined in terms + ++ of X,Y[1]..Y[n] from \axiom{xStart} to \axiom{xEnd} with the initial + ++ values for Y[1]..Y[n] (\axiom{yInitial}) to a tolerance \axiom{tol}. + ++ The calculation will stop if the function G(X,Y[1],..,Y[n]) evaluates to zero before + ++ X = xEnd. + ++ + ++ It iterates over the \axiom{domains} of + ++ \axiomType{OrdinaryDifferentialEquationsSolverCategory} contained in + ++ the table of routines \axiom{R} to get the name and other + ++ relevant information of the the (domain of the) numerical + ++ routine likely to be the most appropriate, + ++ i.e. have the best \axiom{measure}. + ++ + ++ The method used to perform the numerical + ++ process will be one of the routines contained in the NAG numerical + ++ Library. The function predicts the likely most effective routine + ++ by checking various attributes of the system of ODE's and calculating + ++ a measure of compatibility of each routine to these attributes. + ++ + ++ It then calls the resulting `best' routine. + solve:(VEF,F,F,LF,LF,F) -> Result + ++ solve(f,xStart,xEnd,yInitial,intVals,tol) is a top level ANNA function to solve + ++ numerically a system of ordinary differential equations, \axiom{f}, i.e. + ++ equations for the derivatives Y[1]'..Y[n]' defined in terms + ++ of X,Y[1]..Y[n] from \axiom{xStart} to \axiom{xEnd} with the initial + ++ values for Y[1]..Y[n] (\axiom{yInitial}) to a tolerance \axiom{tol}. + ++ The values of Y[1]..Y[n] will be output for the values of X in + ++ \axiom{intVals}. + ++ + ++ It iterates over the \axiom{domains} of + ++ \axiomType{OrdinaryDifferentialEquationsSolverCategory} contained in + ++ the table of routines \axiom{R} to get the name and other + ++ relevant information of the the (domain of the) numerical + ++ routine likely to be the most appropriate, + ++ i.e. have the best \axiom{measure}. + ++ + ++ The method used to perform the numerical + ++ process will be one of the routines contained in the NAG numerical + ++ Library. The function predicts the likely most effective routine + ++ by checking various attributes of the system of ODE's and calculating + ++ a measure of compatibility of each routine to these attributes. + ++ + ++ It then calls the resulting `best' routine. + solve:(VEF,F,F,LF,EF,LF,F) -> Result + ++ solve(f,xStart,xEnd,yInitial,G,intVals,tol) is a top level ANNA function to solve + ++ numerically a system of ordinary differential equations, \axiom{f}, i.e. + ++ equations for the derivatives Y[1]'..Y[n]' defined in terms + ++ of X,Y[1]..Y[n] from \axiom{xStart} to \axiom{xEnd} with the initial + ++ values for Y[1]..Y[n] (\axiom{yInitial}) to a tolerance \axiom{tol}. + ++ The values of Y[1]..Y[n] will be output for the values of X in + ++ \axiom{intVals}. The calculation will stop if the function + ++ G(X,Y[1],..,Y[n]) evaluates to zero before X = xEnd. + ++ + ++ It iterates over the \ax... [truncated message content] |
From: <gi...@ax...> - 2009-01-28 11:26:03
|
books/bookvol10.4.pamphlet |17589 +++++++++++++++++++- books/ps/v104ExpressionFunctions2.ps | 281 + books/ps/v104annanumericalintegrationpackage.ps | 281 + books/ps/v104annanumericaloptimizationpackage.ps | 281 + .../v104annaordinarydifferentialequationpackage.ps | 281 + .../v104annapartialdifferentialequationpackage.ps | 281 + books/ps/v104attachpredicates.ps | 326 + books/ps/v104cartesiantensorfunctions2.ps | 281 + books/ps/v104changeofvariable.ps | 281 + ...characteristicpolynomialinmonogenicalalgebra.ps | 68 +- books/ps/v104characteristicpolynomialpackage.ps | 281 + books/ps/v104combinatorialfunction.ps | 281 + books/ps/v104commondenominator.ps | 281 + books/ps/v104complexrootfindingpackage.ps | 281 + books/ps/v104complexrootpackage.ps | 281 + books/ps/v104complextrigonometricmanipulations.ps | 371 + books/ps/v104coordinatesystems.ps | 281 + books/ps/v104crapackage.ps | 281 + books/ps/v104cycleindicators.ps | 281 + books/ps/v104cyclotomicpolynomialpackage.ps | 281 + books/ps/v104d01agentspackage.ps | 281 + books/ps/v104d01weightspackage.ps | 281 + books/ps/v104d02agentspackage.ps | 281 + books/ps/v104d03agentspackage.ps | 281 + books/ps/v104definiteintegrationtools.ps | 281 + books/ps/v104degreereductionpackage.ps | 326 + books/ps/v104distinctdegreefactorize.ps | 281 + books/ps/v104drawcomplex.ps | 326 + books/ps/v104drawoptionfunctions0.ps | 281 + books/ps/v104drawoptionfunctions1.ps | 281 + books/ps/v104e04agentspackage.ps | 281 + books/ps/v104eigenpackage.ps | 281 + books/ps/v104elementaryfunction.ps | 281 + .../v104elementaryfunctiondefiniteintegration.ps | 281 + ...04elementaryfunctionsunivariatelaurentseries.ps | 281 + ...04elementaryfunctionsunivariatepuiseuxseries.ps | 281 + .../v104ellipticfunctionsunivariatetaylorseries.ps | 281 + books/ps/v104equationfunctions2.ps | 281 + books/ps/v104errorfunctions.ps | 281 + books/ps/v104evaluatecycleindicators.ps | 281 + books/ps/v104expertsystemcontinuitypackage.ps | 281 + books/ps/v104expertsystemcontinuitypackage1.ps | 276 + books/ps/v104expressionspaceodesolver.ps | 281 + books/ps/v104expressiontounivariatepowerseries.ps | 281 + books/ps/v104finitedivisorfunctions2.ps | 281 + books/ps/v104finitelinearaggregatesort.ps | 281 + books/ps/v104fractionalidealfunctions2.ps | 281 + books/ps/v104functionalspecialfunction.ps | 281 + books/ps/v104functionfieldcategoryfunctions2.ps | 281 + books/ps/v104functionspaceassertions.ps | 281 + books/ps/v104functionspaceattachpredicates.ps | 281 + books/ps/v104functionspacesum.ps | 326 + books/ps/v104infinity.ps | 326 + books/ps/v104innercommondenominator.ps | 281 + books/ps/v104innertrigonometricmanipulations.ps | 326 + books/ps/v104integercombinatoricfunctions.ps | 281 + books/ps/v104matrixcommondenominator.ps | 281 + books/ps/v104modularhermitianrowreduction.ps | 281 + books/ps/v104multiplemap.ps | 281 + books/ps/v104nagfittingpackage.ps | 281 + books/ps/v104nagintegrationpackage.ps | 281 + books/ps/v104naginterpolationpackage.ps | 281 + books/ps/v104nagoptimisationpackage.ps | 281 + .../v104nagordinarydifferentialequationspackage.ps | 281 + .../v104nagpartialdifferentialequationspackage.ps | 281 + books/ps/v104nagpolynomialrootspackage.ps | 281 + books/ps/v104nagrootfindingpackage.ps | 281 + books/ps/v104nagseriessummationpackage.ps | 281 + books/ps/v104numericcontinuedfraction.ps | 326 + books/ps/v104onepointcompletionfunctions2.ps | 326 + books/ps/v104orderedcompletionfunctions2.ps | 326 + books/ps/v104patternmatchassertions.ps | 326 + books/ps/v104picoercions.ps | 281 + books/ps/v104polynomialan2expression.ps | 326 + .../ps/v104rationalfunctiondefiniteintegration.ps | 281 + books/ps/v104repeateddoubling.ps | 326 + books/ps/v104repeatedsquaring.ps | 326 + books/ps/v104symmetricfunctions.ps | 281 + books/ps/v104tangentexpansions.ps | 281 + books/ps/v104topleveldrawfunctions.ps | 281 + .../v104topleveldrawfunctionsforalgebraiccurves.ps | 281 + ...104topleveldrawfunctionsforcompiledfunctions.ps | 281 + books/ps/v104topleveldrawfunctionsforpoints.ps | 371 + books/ps/v104trigonometricmanipulations.ps | 371 + books/ps/v104twodimensionalplotclipping.ps | 281 + .../v104univariatepolynomialcommondenominator.ps | 281 + changelog | 142 + src/algebra/c02.spad.pamphlet | 130 - src/algebra/c05.spad.pamphlet | 176 - src/algebra/c06.spad.pamphlet | 339 - src/algebra/carten.spad.pamphlet | 1658 -- src/algebra/cden.spad.pamphlet | 238 - src/algebra/clip.spad.pamphlet | 341 - src/algebra/cmplxrt.spad.pamphlet | 117 - src/algebra/combfunc.spad.pamphlet | 1144 -- src/algebra/combinat.spad.pamphlet | 201 - src/algebra/complet.spad.pamphlet | 153 - src/algebra/cont.spad.pamphlet | 357 - src/algebra/contfrac.spad.pamphlet | 100 - src/algebra/coordsys.spad.pamphlet | 240 - src/algebra/cra.spad.pamphlet | 131 - src/algebra/crfp.spad.pamphlet | 643 - src/algebra/curve.spad.pamphlet | 279 - src/algebra/cycles.spad.pamphlet | 1230 -- src/algebra/cyclotom.spad.pamphlet | 109 - src/algebra/d01.spad.pamphlet | 447 - src/algebra/d01agents.spad.pamphlet | 330 - src/algebra/d01package.spad.pamphlet | 559 - src/algebra/d01weights.spad.pamphlet | 311 - src/algebra/d02.spad.pamphlet | 483 - src/algebra/d02agents.spad.pamphlet | 344 - src/algebra/d02package.spad.pamphlet | 457 - src/algebra/d03.spad.pamphlet | 195 - src/algebra/d03agents.spad.pamphlet | 147 - src/algebra/d03package.spad.pamphlet | 307 - src/algebra/ddfact.spad.pamphlet | 309 - src/algebra/defaults.spad.pamphlet | 221 - src/algebra/defintef.spad.pamphlet | 267 - src/algebra/defintrf.spad.pamphlet | 398 - src/algebra/degred.spad.pamphlet | 99 - src/algebra/divisor.spad.pamphlet | 374 - src/algebra/draw.spad.pamphlet | 1227 -- src/algebra/drawopt.spad.pamphlet | 248 - src/algebra/drawpak.spad.pamphlet | 226 - src/algebra/e01.spad.pamphlet | 329 - src/algebra/e02.spad.pamphlet | 588 - src/algebra/e04.spad.pamphlet | 397 - src/algebra/e04agents.spad.pamphlet | 313 - src/algebra/e04package.spad.pamphlet | 448 - src/algebra/efstruc.spad.pamphlet | 961 -- src/algebra/efuls.spad.pamphlet | 400 - src/algebra/efupxs.spad.pamphlet | 313 - src/algebra/eigen.spad.pamphlet | 340 - src/algebra/elemntry.spad.pamphlet | 914 - src/algebra/elfuts.spad.pamphlet | 110 - src/algebra/equation2.spad.pamphlet | 76 - src/algebra/error.spad.pamphlet | 139 - src/algebra/expr.spad.pamphlet | 327 - src/algebra/expr2ups.spad.pamphlet | 383 - src/algebra/exprode.spad.pamphlet | 255 - src/axiom-website/patches.html | 4 + 141 files changed, 42221 insertions(+), 20864 deletions(-) New commits: commit 921b4b883b3296ba338c4662811410b2e43ce36f Author: root <root@chris.localdomain> Date: Tue Jan 27 06:09:03 2009 -0500 20090127 tpd src/axiom-website/patches.html 20090127.01.tpd.patch 20090127 tpd books/bookvol10.4 add packages 20090127 tpd src/algebra/Makefile remove spad files 20090127 tpd books/ps/v104complextrigonometricmanipulations.ps added 20090127 tpd src/algebra/expr.spad removed 20090127 tpd books/ps/v104picoercions.ps added 20090127 tpd books/ps/v104patternmatchassertions.ps added 20090127 tpd books/ps/v104attachpredicates.ps added 20090127 tpd books/ps/v104functionspaceassertions.ps added 20090127 tpd books/ps/v104functionspaceattachpredicates.ps added 20090127 tpd books/ps/v104ExpressionFunctions2.ps added 20090127 tpd books/ps/v104polynomialan2expression.ps added 20090127 tpd src/algebra/exprode.spad removed 20090127 tpd books/ps/v104expressionspaceodesolver.ps added 20090127 tpd src/algebra/expr2ups.spad removed 20090127 tpd books/ps/v104expressiontounivariatepowerseries.ps added 20090127 tpd src/algebra/error.spad removed 20090127 tpd books/ps/v104errorfunctions.ps added 20090127 tpd src/algebra/equation2.spad removed 20090127 tpd books/ps/v104equationfunctions2.ps added 20090127 tpd src/algebra/elfuts.spad removed 20090127 tpd books/ps/v104ellipticfunctionsunivariatetaylorseries.ps added 20090127 tpd src/algebra/elemntry.spad removed 20090127 tpd books/ps/v104elementaryfunction.ps added 20090127 tpd src/algebra/eigen.spad removed 20090127 tpd books/ps/v104characteristicpolynomialpackage.ps added 20090127 tpd books/ps/v104eigenpackage.ps added 20090127 tpd src/algebra/efupxs.spad removed 20090127 tpd books/ps/v104elementaryfunctionsunivariatepuiseuxseries.ps 20090127 tpd src/algebra/efuls.spad removed 20090127 tpd books/ps/v104elementaryfunctionsunivariatelaurentseries.ps 20090127 tpd src/algebra/efstruc.spad removed 20090127 tpd books/ps/v104trigonometricmanipulations.ps add 20090127 tpd books/ps/v104innertrigonometricmanipulations.ps added 20090127 tpd books/ps/v104tangentexpansions.ps added 20090127 tpd books/ps/v104symmetricfunctions.ps added 20090127 tpd src/algebra/e04.spad removed 20090127 tpd books/ps/v104nagoptimisationpackage.ps added 20090127 tpd src/algebra/e04package.spad removed 20090127 tpd books/ps/v104annanumericaloptimizationpackage.ps added 20090127 tpd src/algebra/e04agents.spad removed 20090127 tpd books/ps/v104e04agentspackage.ps added 20090127 tpd src/algebra/e02.spad removed 20090127 tpd books/ps/v104nagfittingpackage.ps added 20090127 tpd src/algebra/e01.spad removed 20090127 tpd books/ps/v104naginterpolationpackage.ps added 20090127 tpd src/algebra/draw.spad removed 20090127 tpd books/ps/v104topleveldrawfunctionsforpoints.ps added 20090127 tpd books/ps/v104topleveldrawfunctionsforalgebraiccurves.ps added 20090127 tpd books/ps/v104topleveldrawfunctions.ps added 20090127 tpd books/ps/v104topleveldrawfunctionsforcompiledfunctions.ps added 20090127 tpd src/algebra/drawpak.spad removed 20090127 tpd books/ps/v104drawcomplex.ps added 20090127 tpd src/algebra/drawopt.spad removed 20090127 tpd books/ps/v104drawoptionfunctions0.ps added 20090127 tpd books/ps/v104drawoptionfunctions1.ps added 20090127 tpd src/algebra/divisor.spad removed 20090127 tpd books/ps/v104finitedivisorfunctions2.ps added 20090127 tpd books/ps/v104modularhermitianrowreduction.ps added 20090127 tpd books/ps/v104fractionalidealfunctions2.ps added 20090127 tpd src/algebra/degred.spad removed 20090127 tpd books/ps/v104degreereductionpackage.ps added 20090127 tpd src/algebra/defintrf.spad removed 20090127 tpd books/ps/v104rationalfunctiondefiniteintegration.ps added 20090127 tpd books/ps/v104definiteintegrationtools.ps added 20090127 tpd src/algebra/defintef.spad removed 20090127 tpd books/ps/v104elementaryfunctiondefiniteintegration.ps added 20090127 tpd src/algebra/defaults.spad removed 20090127 tpd books/ps/v104finitelinearaggregatesort.ps added 20090127 tpd books/ps/v104repeateddoubling.ps added 20090127 tpd books/ps/v104repeatedsquaring.ps added 20090127 tpd src/algebra/d03.spad removed 20090127 tpd books/ps/v104nagpartialdifferentialequationspackage.ps added 20090127 tpd src/algebra/d03package.spad removed 20090127 tpd books/ps/v104annapartialdifferentialequationpackage.ps added 20090127 tpd src/algebra/d03agents.spad removed 20090127 tpd books/ps/v104d03agentspackage.ps added 20090127 tpd src/algebra/d02.spad removed 20090127 tpd books/ps/v104nagordinarydifferentialequationspackage.ps added 20090127 tpd src/algebra/d02package.spad removed 20090127 tpd books/ps/v104annaordinarydifferentialequationpackage.ps added 20090127 tpd src/algebra/d02agents.spad removed 20090127 tpd books/ps/v104d02agentspackage.ps added 20090127 tpd src/algebra/d01weights.spad removed 20090127 tpd books/ps/v104d01weightspackage.ps added 20090127 tpd src/algebra/d01.spad removed 20090127 tpd books/ps/v104nagintegrationpackage.ps added 20090127 tpd src/algebra/d01package.spad removed 20090127 tpd books/ps/v104annanumericalintegrationpackage.ps added 20090127 tpd src/algebra/d01agents.spad removed 20090127 tpd books/ps/v104d01agentspackage.ps added commit e5d590b2868aeb7e70b5255d468c58e1d3d1e00a Author: root <root@chris.localdomain> Date: Mon Jan 26 09:57:49 2009 -0500 20090126 tpd src/axiom-website/patches.html 20090126.02.tpd.patch 20090126 tpd books/bookvol10.4 add packages 20090126 tpd src/algebra/Makefile remove spad files 20090126 tpd src/algebra/cyclotom.spad removed 20090126 tpd books/ps/v104cyclotomicpolynomialpackage.ps added 20090126 tpd src/algebra/cycles.spad removed 20090126 tpd books/ps/v104evaluatecycleindicators.ps added 20090126 tpd books/ps/v104cycleindicators.ps added 20090126 tpd src/algebra/curve.spad removed 20090126 tpd books/ps/v104changeofvariable.ps added 20090126 tpd books/ps/v104functionfieldcategoryfunctions2.ps added 20090126 tpd books/ps/v104multiplemap.ps added 20090126 tpd src/algebra/crfp.spad removed 20090126 tpd books/ps/v104complexrootfindingpackage.ps added 20090126 tpd src/algebra/cra.spad removed 20090126 tpd books/ps/v104crapackage.ps added 20090126 tpd src/algebra/coordsys.spad removed 20090126 tpd books/ps/v104coordinatesystems.ps added 20090126 tpd src/algebra/cont.spad removed 20090126 tpd books/ps/v104expertsystemcontinuitypackage.ps added 20090126 tpd books/ps/v104expertsystemcontinuitypackage1.ps added 20090126 tpd src/algebra/contfrac.spad removed 20090126 tpd books/ps/v104numericcontinuedfraction.ps added 20090126 tpd src/algebra/complet.spad removed 20090126 tpd books/ps/v104infinity.ps added 20090126 tpd books/ps/v104onepointcompletionfunctions2.ps added 20090126 tpd books/ps/v104orderedcompletionfunctions2.ps added 20090126 tpd src/algebra/combinat.spad removed 20090126 tpd books/ps/v104integercombinatoricfunctions.ps added 20090126 tpd src/algebra/combfunc.spad removed 20090126 tpd books/ps/v104functionspacesum.ps added 20090126 tpd books/ps/v104functionalspecialfunction.ps added 20090126 tpd books/ps/v104characteristicpolynomialinmonogenicalalgebra.ps 20090126 tpd books/ps/v104combinatorialfunction.ps 20090126 tpd src/algebra/cmplxrt.spad removed 20090126 tpd books/ps/v104complexrootpackage.ps added 20090126 tpd src/algebra/clip.spad removed 20090126 tpd books/ps/v104twodimensionalplotclipping.ps added 20090126 tpd src/algebra/cden.spad removed 20090126 tpd books/ps/v104matrixcommondenominator.ps added 20090126 tpd books/ps/v104univariatepolynomialcommondenominator.ps 20090126 tpd books/ps/v104commondenominator.ps added 20090126 tpd books/ps/v104innercommondenominator.ps added 20090126 tpd src/algebra/carten.spad removed 20090126 tpd ps/v104cartesiantensorfunctions2.ps added 20090126 tpd src/algebra/c06.spad removed 20090126 tpd books/ps/v104nagseriessummationpackage.ps added 20090126 tpd src/algebra/c05.spad removed 20090126 tpd books/ps/v104nagrootfindingpackage.ps added 20090126 tpd src/algebra/c02.spad removed 20090126 tpd books/ps/v104nagpolynomialrootspackage.ps added |
From: <da...@us...> - 2009-01-27 13:22:18
|
Revision: 1093 http://axiom.svn.sourceforge.net/axiom/?rev=1093&view=rev Author: daly Date: 2009-01-27 11:32:18 +0000 (Tue, 27 Jan 2009) Log Message: ----------- 20090126 tpd src/axiom-website/patches.html 20090126.02.tpd.patch 20090126 tpd books/bookvol10.4 add packages 20090126 tpd src/algebra/Makefile remove spad files 20090126 tpd src/algebra/cyclotom.spad removed 20090126 tpd books/ps/v104cyclotomicpolynomialpackage.ps added 20090126 tpd src/algebra/cycles.spad removed 20090126 tpd books/ps/v104evaluatecycleindicators.ps added 20090126 tpd books/ps/v104cycleindicators.ps added 20090126 tpd src/algebra/curve.spad removed 20090126 tpd books/ps/v104changeofvariable.ps added 20090126 tpd books/ps/v104functionfieldcategoryfunctions2.ps added 20090126 tpd books/ps/v104multiplemap.ps added 20090126 tpd src/algebra/crfp.spad removed 20090126 tpd books/ps/v104complexrootfindingpackage.ps added 20090126 tpd src/algebra/cra.spad removed 20090126 tpd books/ps/v104crapackage.ps added 20090126 tpd src/algebra/coordsys.spad removed 20090126 tpd books/ps/v104coordinatesystems.ps added 20090126 tpd src/algebra/cont.spad removed 20090126 tpd books/ps/v104expertsystemcontinuitypackage.ps added 20090126 tpd books/ps/v104expertsystemcontinuitypackage1.ps added 20090126 tpd src/algebra/contfrac.spad removed 20090126 tpd books/ps/v104numericcontinuedfraction.ps added 20090126 tpd src/algebra/complet.spad removed 20090126 tpd books/ps/v104infinity.ps added 20090126 tpd books/ps/v104onepointcompletionfunctions2.ps added 20090126 tpd books/ps/v104orderedcompletionfunctions2.ps added 20090126 tpd src/algebra/combinat.spad removed 20090126 tpd books/ps/v104integercombinatoricfunctions.ps added 20090126 tpd src/algebra/combfunc.spad removed 20090126 tpd books/ps/v104functionspacesum.ps added 20090126 tpd books/ps/v104functionalspecialfunction.ps added 20090126 tpd books/ps/v104characteristicpolynomialinmonogenicalalgebra.ps 20090126 tpd books/ps/v104combinatorialfunction.ps 20090126 tpd src/algebra/cmplxrt.spad removed 20090126 tpd books/ps/v104complexrootpackage.ps added 20090126 tpd src/algebra/clip.spad removed 20090126 tpd books/ps/v104twodimensionalplotclipping.ps added 20090126 tpd src/algebra/cden.spad removed 20090126 tpd books/ps/v104matrixcommondenominator.ps added 20090126 tpd books/ps/v104univariatepolynomialcommondenominator.ps 20090126 tpd books/ps/v104commondenominator.ps added 20090126 tpd books/ps/v104innercommondenominator.ps added 20090126 tpd src/algebra/carten.spad removed 20090126 tpd ps/v104cartesiantensorfunctions2.ps added 20090126 tpd src/algebra/c06.spad removed 20090126 tpd books/ps/v104nagseriessummationpackage.ps added 20090126 tpd src/algebra/c05.spad removed 20090126 tpd books/ps/v104nagrootfindingpackage.ps added 20090126 tpd src/algebra/c02.spad removed 20090126 tpd books/ps/v104nagpolynomialrootspackage.ps added Modified Paths: -------------- trunk/axiom/books/bookvol10.4.pamphlet trunk/axiom/books/ps/v104characteristicpolynomialinmonogenicalalgebra.ps Added Paths: ----------- trunk/axiom/books/ps/v104cartesiantensorfunctions2.ps trunk/axiom/books/ps/v104changeofvariable.ps trunk/axiom/books/ps/v104combinatorialfunction.ps trunk/axiom/books/ps/v104commondenominator.ps trunk/axiom/books/ps/v104complexrootfindingpackage.ps trunk/axiom/books/ps/v104complexrootpackage.ps trunk/axiom/books/ps/v104coordinatesystems.ps trunk/axiom/books/ps/v104crapackage.ps trunk/axiom/books/ps/v104cycleindicators.ps trunk/axiom/books/ps/v104cyclotomicpolynomialpackage.ps trunk/axiom/books/ps/v104evaluatecycleindicators.ps trunk/axiom/books/ps/v104expertsystemcontinuitypackage.ps trunk/axiom/books/ps/v104expertsystemcontinuitypackage1.ps trunk/axiom/books/ps/v104functionalspecialfunction.ps trunk/axiom/books/ps/v104functionfieldcategoryfunctions2.ps trunk/axiom/books/ps/v104functionspacesum.ps trunk/axiom/books/ps/v104infinity.ps trunk/axiom/books/ps/v104innercommondenominator.ps trunk/axiom/books/ps/v104integercombinatoricfunctions.ps trunk/axiom/books/ps/v104matrixcommondenominator.ps trunk/axiom/books/ps/v104multiplemap.ps trunk/axiom/books/ps/v104nagpolynomialrootspackage.ps trunk/axiom/books/ps/v104nagrootfindingpackage.ps trunk/axiom/books/ps/v104nagseriessummationpackage.ps trunk/axiom/books/ps/v104numericcontinuedfraction.ps trunk/axiom/books/ps/v104onepointcompletionfunctions2.ps trunk/axiom/books/ps/v104orderedcompletionfunctions2.ps trunk/axiom/books/ps/v104twodimensionalplotclipping.ps trunk/axiom/books/ps/v104univariatepolynomialcommondenominator.ps Removed Paths: ------------- trunk/axiom/src/algebra/c02.spad.pamphlet trunk/axiom/src/algebra/c05.spad.pamphlet trunk/axiom/src/algebra/c06.spad.pamphlet trunk/axiom/src/algebra/carten.spad.pamphlet trunk/axiom/src/algebra/cden.spad.pamphlet trunk/axiom/src/algebra/clip.spad.pamphlet trunk/axiom/src/algebra/cmplxrt.spad.pamphlet trunk/axiom/src/algebra/combfunc.spad.pamphlet trunk/axiom/src/algebra/combinat.spad.pamphlet trunk/axiom/src/algebra/complet.spad.pamphlet trunk/axiom/src/algebra/cont.spad.pamphlet trunk/axiom/src/algebra/contfrac.spad.pamphlet trunk/axiom/src/algebra/coordsys.spad.pamphlet trunk/axiom/src/algebra/cra.spad.pamphlet trunk/axiom/src/algebra/crfp.spad.pamphlet trunk/axiom/src/algebra/curve.spad.pamphlet trunk/axiom/src/algebra/cycles.spad.pamphlet trunk/axiom/src/algebra/cyclotom.spad.pamphlet Modified: trunk/axiom/books/bookvol10.4.pamphlet =================================================================== --- trunk/axiom/books/bookvol10.4.pamphlet 2009-01-27 02:20:50 UTC (rev 1092) +++ trunk/axiom/books/bookvol10.4.pamphlet 2009-01-27 11:32:18 UTC (rev 1093) @@ -1689,6 +1689,201 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \chapter{Chapter C} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{package CARTEN2 CartesianTensorFunctions2} +\pagehead{CartesianTensorFunctions2}{CARTEN2} +\pagepic{ps/v104cartesiantensorfunctions2.ps}{CARTEN2}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\end{tabular} + +<<package CARTEN2 CartesianTensorFunctions2>>= +)abbrev package CARTEN2 CartesianTensorFunctions2 +++ Author: Stephen M. Watt +++ Date Created: December 1986 +++ Date Last Updated: May 30, 1991 +++ Basic Operations: reshape, map +++ Related Domains: CartesianTensor +++ Also See: +++ AMS Classifications: +++ Keywords: tensor +++ Examples: +++ References: +++ Description: +++ This package provides functions to enable conversion of tensors +++ given conversion of the components. + +CartesianTensorFunctions2(minix, dim, S, T): CTPcat == CTPdef where + minix: Integer + dim: NonNegativeInteger + S, T: CommutativeRing + CS ==> CartesianTensor(minix, dim, S) + CT ==> CartesianTensor(minix, dim, T) + + CTPcat == with + reshape: (List T, CS) -> CT + ++ reshape(lt,ts) organizes the list of components lt into + ++ a tensor with the same shape as ts. + map: (S->T, CS) -> CT + ++ map(f,ts) does a componentwise conversion of the tensor ts + ++ to a tensor with components of type T. + CTPdef == add + reshape(l, s) == unravel l + map(f, s) == unravel [f e for e in ravel s] + +@ +<<CARTEN2.dotabb>>= +"CARTEN2" [color="#FF4488",href="bookvol10.4.pdf#nameddest=CARTEN2"] +"BMODULE" [color="#4488FF",href="bookvol10.2.pdf#nameddest=BMODULE"] +"CARTEN2" -> "BMODULE" + +@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{package CHVAR ChangeOfVariable} +\pagehead{ChangeOfVariable}{CHVAR} +\pagepic{ps/v104changeofvariable.ps}{CHVAR}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\end{tabular} + +<<package CHVAR ChangeOfVariable>>= +)abbrev package CHVAR ChangeOfVariable +++ Sends a point to infinity +++ Author: Manuel Bronstein +++ Date Created: 1988 +++ Date Last Updated: 22 Feb 1990 +++ Description: +++ Tools to send a point to infinity on an algebraic curve. +ChangeOfVariable(F, UP, UPUP): Exports == Implementation where + F : UniqueFactorizationDomain + UP : UnivariatePolynomialCategory F + UPUP: UnivariatePolynomialCategory Fraction UP + + N ==> NonNegativeInteger + Z ==> Integer + Q ==> Fraction Z + RF ==> Fraction UP + + Exports ==> with + mkIntegral: UPUP -> Record(coef:RF, poly:UPUP) + ++ mkIntegral(p(x,y)) returns \spad{[c(x), q(x,z)]} such that + ++ \spad{z = c * y} is integral. + ++ The algebraic relation between x and y is \spad{p(x, y) = 0}. + ++ The algebraic relation between x and z is \spad{q(x, z) = 0}. + radPoly : UPUP -> Union(Record(radicand:RF, deg:N), "failed") + ++ radPoly(p(x, y)) returns \spad{[c(x), n]} if p is of the form + ++ \spad{y**n - c(x)}, "failed" otherwise. + rootPoly : (RF, N) -> Record(exponent: N, coef:RF, radicand:UP) + ++ rootPoly(g, n) returns \spad{[m, c, P]} such that + ++ \spad{c * g ** (1/n) = P ** (1/m)} + ++ thus if \spad{y**n = g}, then \spad{z**m = P} + ++ where \spad{z = c * y}. + goodPoint : (UPUP,UPUP) -> F + ++ goodPoint(p, q) returns an integer a such that a is neither + ++ a pole of \spad{p(x,y)} nor a branch point of \spad{q(x,y) = 0}. + eval : (UPUP, RF, RF) -> UPUP + ++ eval(p(x,y), f(x), g(x)) returns \spad{p(f(x), y * g(x))}. + chvar : (UPUP,UPUP) -> Record(func:UPUP,poly:UPUP,c1:RF,c2:RF,deg:N) + ++ chvar(f(x,y), p(x,y)) returns + ++ \spad{[g(z,t), q(z,t), c1(z), c2(z), n]} + ++ such that under the change of variable + ++ \spad{x = c1(z)}, \spad{y = t * c2(z)}, + ++ one gets \spad{f(x,y) = g(z,t)}. + ++ The algebraic relation between x and y is \spad{p(x, y) = 0}. + ++ The algebraic relation between z and t is \spad{q(z, t) = 0}. + + Implementation ==> add + import UnivariatePolynomialCommonDenominator(UP, RF, UPUP) + + algPoly : UPUP -> Record(coef:RF, poly:UPUP) + RPrim : (UP, UP, UPUP) -> Record(coef:RF, poly:UPUP) + good? : (F, UP, UP) -> Boolean + infIntegral?: (UPUP, UPUP) -> Boolean + + eval(p, x, y) == map(#1 x, p) monomial(y, 1) + good?(a, p, q) == p(a) ^= 0 and q(a) ^= 0 + + algPoly p == + ground?(a:= retract(leadingCoefficient(q:=clearDenominator p))@UP) + => RPrim(1, a, q) + c := d := squareFreePart a + q := clearDenominator q monomial(inv(d::RF), 1) + while not ground?(a := retract(leadingCoefficient q)@UP) repeat + c := c * (d := gcd(a, d)) + q := clearDenominator q monomial(inv(d::RF), 1) + RPrim(c, a, q) + + RPrim(c, a, q) == +-- one? a => [c::RF, q] + (a = 1) => [c::RF, q] + [(a * c)::RF, clearDenominator q monomial(inv(a::RF), 1)] + +-- always makes the algebraic integral, but does not send a point to infinity +-- if the integrand does not have a pole there (in the case of an nth-root) + chvar(f, modulus) == + r1 := mkIntegral modulus + f1 := f monomial(r1inv := inv(r1.coef), 1) + infIntegral?(f1, r1.poly) => + [f1, r1.poly, monomial(1,1)$UP :: RF,r1inv,degree(retract(r1.coef)@UP)] + x := (a:= goodPoint(f1,r1.poly))::UP::RF + inv(monomial(1,1)::RF) + r2c:= retract((r2 := mkIntegral map(#1 x, r1.poly)).coef)@UP + t := inv((monomial(1, 1)$UP - a::UP)::RF) + [- inv(monomial(1, 2)$UP :: RF) * eval(f1, x, inv(r2.coef)), + r2.poly, t, r1.coef * r2c t, degree r2c] + +-- returns true if y is an n-th root, and it can be guaranteed that p(x,y)dx +-- is integral at infinity +-- expects y to be integral. + infIntegral?(p, modulus) == + (r := radPoly modulus) case "failed" => false + ninv := inv(r.deg::Q) + degy:Q := degree(retract(r.radicand)@UP) * ninv + degp:Q := 0 + while p ^= 0 repeat + c := leadingCoefficient p + degp := max(degp, + (2 + degree(numer c)::Z - degree(denom c)::Z)::Q + degree(p) * degy) + p := reductum p + degp <= ninv + + mkIntegral p == + (r := radPoly p) case "failed" => algPoly p + rp := rootPoly(r.radicand, r.deg) + [rp.coef, monomial(1, rp.exponent)$UPUP - rp.radicand::RF::UPUP] + + goodPoint(p, modulus) == + q := + (r := radPoly modulus) case "failed" => + retract(resultant(modulus, differentiate modulus))@UP + retract(r.radicand)@UP + d := commonDenominator p + for i in 0.. repeat + good?(a := i::F, q, d) => return a + good?(-a, q, d) => return -a + + radPoly p == + (r := retractIfCan(reductum p)@Union(RF, "failed")) case "failed" + => "failed" + [- (r::RF), degree p] + +-- we have y**m = g(x) = n(x)/d(x), so if we can write +-- (n(x) * d(x)**(m-1)) ** (1/m) = c(x) * P(x) ** (1/n) +-- then z**q = P(x) where z = (d(x) / c(x)) * y + rootPoly(g, m) == + zero? g => error "Should not happen" + pr := nthRoot(squareFree((numer g) * (d := denom g) ** (m-1)::N), + m)$FactoredFunctions(UP) + [pr.exponent, d / pr.coef, */(pr.radicand)] + +@ +<<CHVAR.dotabb>>= +"CHVAR" [color="#FF4488",href="bookvol10.4.pdf#nameddest=CHVAR"] +"PFECAT" [color="#4488FF",href="bookvol10.2.pdf#nameddest=PFECAT"] +"CHVAR" -> "PFECAT" + +@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{package CPIMA CharacteristicPolynomialInMonogenicalAlgebra} \pagehead{CharacteristicPolynomialInMonogenicalAlgebra}{CPIMA} \pagepic{ps/v104characteristicpolynomialinmonogenicalalgebra.ps}{CPIMA}{1.00} @@ -1735,15 +1930,3289 @@ @ <<CPIMA.dotabb>>= "CPIMA" [color="#FF4488",href="bookvol10.4.pdf#nameddest=CPIMA"] +"MONOGEN" [color="#4488FF",href="bookvol10.2.pdf#nameddest=MONOGEN"] +"CPIMA" -> "MONOGEN" @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{package COMBF CombinatorialFunction} +\pagehead{CombinatorialFunction}{COMBF} +\pagepic{ps/v104combinatorialfunction.ps}{COMBF}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\end{tabular} + +<<package COMBF CombinatorialFunction>>= +)abbrev package COMBF CombinatorialFunction +++ Provides the usual combinatorial functions +++ Author: Manuel Bronstein, Martin Rubey +++ Date Created: 2 Aug 1988 +++ Date Last Updated: 30 October 2005 +++ Description: +++ Provides combinatorial functions over an integral domain. +++ Keywords: combinatorial, function, factorial. +++ Examples: )r COMBF INPUT + +CombinatorialFunction(R, F): Exports == Implementation where + R: Join(OrderedSet, IntegralDomain) + F: FunctionSpace R + + OP ==> BasicOperator + K ==> Kernel F + SE ==> Symbol + O ==> OutputForm + SMP ==> SparseMultivariatePolynomial(R, K) + Z ==> Integer + + POWER ==> "%power"::Symbol + OPEXP ==> "exp"::Symbol + SPECIALDIFF ==> "%specialDiff" + SPECIALDISP ==> "%specialDisp" + SPECIALEQUAL ==> "%specialEqual" + + Exports ==> with + belong? : OP -> Boolean + ++ belong?(op) is true if op is a combinatorial operator; + operator : OP -> OP + ++ operator(op) returns a copy of op with the domain-dependent + ++ properties appropriate for F; + ++ error if op is not a combinatorial operator; + "**" : (F, F) -> F + ++ a ** b is the formal exponential a**b; + binomial : (F, F) -> F + ++ binomial(n, r) returns the number of subsets of r objects + ++ taken among n objects, i.e. n!/(r! * (n-r)!); +@ + +We currently simplify binomial coefficients only for non-negative integral +second argument, using the formula +$$ \binom{n}{k}=\frac{1}{k!}\prod_{i=0..k-1} (n-i),$$ +except if the second argument is symbolic: in this case [[binomial(n,n)]] is +simplified to one. + +Note that there are at least two different ways to define binomial coefficients +for negative integral second argument. One way, particular suitable for +combinatorics, is to set the binomial coefficient equal to zero for negative +second argument. This is, partially, also the approach taken in +[[combinat.spad]], where we find + +\begin{verbatim} + binomial(n, m) == + n < 0 or m < 0 or m > n => 0 + m = 0 => 1 +\end{verbatim} + +Of course, here [[n]] and [[m]] are integers. This definition agrees with the +recurrence + +$$\binom{n}{k}+\binom{n}{k+1}=\binom{n+1}{k+1}.$$ + +Alternatively, one can use the formula +$$ \binom{n}{k}=\frac{\Gamma(n+1)}{\Gamma(k+1)\Gamma(n-k+1)}, $$ +and leave the case where $k\in {\bf Z}$, $n\in {\bf Z}$ and $k \leq n < 0$ +undefined, since the limit does not exist in this case: + +Since we then have that $n-k+1\geq 1$, $\Gamma(n-k+1)$ is finite. So it is +sufficient to consider $\frac{\Gamma(n+1)}{\Gamma(k+1)}$. On the one hand, we +have +$$\lim_{n_0\to n} \lim_{k_0\to k}\frac{\Gamma(n_0+1)}{\Gamma(k_0+1)} = 0,$$ +since for any non-integral $n_0$, $\Gamma(n_0+1)$ is finite. On the other +hand, +$$\lim_{k_0\to k} \lim_{n_0\to n}\frac{\Gamma(n_0+1)}{\Gamma(k_0+1)}$$ +does not exist, since for non-integral $k_0$, $\Gamma(k_0+1)$ is finite while +$\Gamma(n_0+1)$ is unbounded. + +However, since for $k\in {\bf Z}$, $n\in {\bf Z}$ and $0 < k < n$ both +definitions agree, one could also combine them. This is what, for example, +Mathematica does. It seems that MuPAD sets [[binomial(n,n)=1]] for all +arguments [[n]], and returns [[binomial(-2, n)]] unevaluated. Provisos may help +here. + +<<package COMBF CombinatorialFunction>>= + permutation: (F, F) -> F + ++ permutation(n, r) returns the number of permutations of + ++ n objects taken r at a time, i.e. n!/(n-r)!; + factorial : F -> F + ++ factorial(n) returns the factorial of n, i.e. n!; + factorials : F -> F + ++ factorials(f) rewrites the permutations and binomials in f + ++ in terms of factorials; + factorials : (F, SE) -> F + ++ factorials(f, x) rewrites the permutations and binomials in f + ++ involving x in terms of factorials; + summation : (F, SE) -> F + ++ summation(f(n), n) returns the formal sum S(n) which verifies + ++ S(n+1) - S(n) = f(n); + summation : (F, SegmentBinding F) -> F + ++ summation(f(n), n = a..b) returns f(a) + ... + f(b) as a + ++ formal sum; + product : (F, SE) -> F + ++ product(f(n), n) returns the formal product P(n) which verifies + ++ P(n+1)/P(n) = f(n); + product : (F, SegmentBinding F) -> F + ++ product(f(n), n = a..b) returns f(a) * ... * f(b) as a + ++ formal product; + iifact : F -> F + ++ iifact(x) should be local but conditional; + iibinom : List F -> F + ++ iibinom(l) should be local but conditional; + iiperm : List F -> F + ++ iiperm(l) should be local but conditional; + iipow : List F -> F + ++ iipow(l) should be local but conditional; + iidsum : List F -> F + ++ iidsum(l) should be local but conditional; + iidprod : List F -> F + ++ iidprod(l) should be local but conditional; + ipow : List F -> F + ++ ipow(l) should be local but conditional; + + Implementation ==> add + ifact : F -> F + iiipow : List F -> F + iperm : List F -> F + ibinom : List F -> F + isum : List F -> F + idsum : List F -> F + iprod : List F -> F + idprod : List F -> F + dsum : List F -> O + ddsum : List F -> O + dprod : List F -> O + ddprod : List F -> O + equalsumprod : (K, K) -> Boolean + equaldsumprod : (K, K) -> Boolean + fourth : List F -> F + dvpow1 : List F -> F + dvpow2 : List F -> F + summand : List F -> F + dvsum : (List F, SE) -> F + dvdsum : (List F, SE) -> F + dvprod : (List F, SE) -> F + dvdprod : (List F, SE) -> F + facts : (F, List SE) -> F + K2fact : (K, List SE) -> F + smpfact : (SMP, List SE) -> F + + dummy == new()$SE :: F +@ +This macro will be used in [[product]] and [[summation]], both the $5$ and $3$ +argument forms. It is used to introduce a dummy variable in place of the +summation index within the summands. This in turn is necessary to keep the +indexing variable local, circumventing problems, for example, with +differentiation. + +This works if we don't accidently use such a symbol as a bound of summation or +product. + +Note that up to [[patch--25]] this used to read +\begin{verbatim} + dummy := new()$SE :: F +\end{verbatim} +thus introducing the same dummy variable for all products and summations, which +caused nested products and summations to fail. (Issue~\#72) + +<<package COMBF CombinatorialFunction>>= + opfact := operator("factorial"::Symbol)$CommonOperators + opperm := operator("permutation"::Symbol)$CommonOperators + opbinom := operator("binomial"::Symbol)$CommonOperators + opsum := operator("summation"::Symbol)$CommonOperators + opdsum := operator("%defsum"::Symbol)$CommonOperators + opprod := operator("product"::Symbol)$CommonOperators + opdprod := operator("%defprod"::Symbol)$CommonOperators + oppow := operator(POWER::Symbol)$CommonOperators + + factorial x == opfact x + binomial(x, y) == opbinom [x, y] + permutation(x, y) == opperm [x, y] + + import F + import Kernel F + + number?(x:F):Boolean == + if R has RetractableTo(Z) then + ground?(x) or + ((retractIfCan(x)@Union(Fraction(Z),"failed")) case Fraction(Z)) + else + ground?(x) + + x ** y == + -- Do some basic simplifications + is?(x,POWER) => + args : List F := argument first kernels x + not(#args = 2) => error "Too many arguments to **" + number?(first args) and number?(y) => + oppow [first(args)**y, second args] + oppow [first args, (second args)* y] + -- Generic case + exp : Union(Record(val:F,exponent:Z),"failed") := isPower x + exp case Record(val:F,exponent:Z) => + expr := exp::Record(val:F,exponent:Z) + oppow [expr.val, (expr.exponent)*y] + oppow [x, y] + + belong? op == has?(op, "comb") + fourth l == third rest l + dvpow1 l == second(l) * first(l) ** (second l - 1) + factorials x == facts(x, variables x) + factorials(x, v) == facts(x, [v]) + facts(x, l) == smpfact(numer x, l) / smpfact(denom x, l) + summand l == eval(first l, retract(second l)@K, third l) + + product(x:F, i:SE) == + dm := dummy + opprod [eval(x, k := kernel(i)$K, dm), dm, k::F] + + summation(x:F, i:SE) == + dm := dummy + opsum [eval(x, k := kernel(i)$K, dm), dm, k::F] + +@ +These two operations return the product or the sum as unevaluated operators. A +dummy variable is introduced to make the indexing variable \lq local\rq. + +<<package COMBF CombinatorialFunction>>= + dvsum(l, x) == + opsum [differentiate(first l, x), second l, third l] + + dvdsum(l, x) == + x = retract(y := third l)@SE => 0 + if member?(x, variables(h := third rest rest l)) or + member?(x, variables(g := third rest l)) then + error "a sum cannot be differentiated with respect to a bound" + else + opdsum [differentiate(first l, x), second l, y, g, h] + +@ +The above two operations implement differentiation of sums with and without +bounds. Note that the function +$$n\mapsto\sum_{k=1}^n f(k,n)$$ +is well defined only for integral values of $n$ greater than or equal to zero. +There is not even consensus how to define this function for $n<0$. Thus, it is +not differentiable. Therefore, we need to check whether we erroneously are +differentiating with respect to the upper bound or the lower bound, where the +same reasoning holds. + +Differentiating a sum with respect to its indexing variable correctly gives +zero. This is due to the introduction of dummy variables in the internal +representation of a sum: the operator [[%defsum]] takes 5 arguments, namely + +\begin{enumerate} +\item the summands, where each occurrence of the indexing variable is replaced + by +\item the dummy variable, +\item the indexing variable, +\item the lower bound, and +\item the upper bound. +\end{enumerate} + +Note that up to [[patch--40]] the following incorrect code was used, which +tried to parallel the known rules for integration: (Issue~\#180) + +\begin{verbatim} + dvdsum(l, x) == + x = retract(y := third l)@SE => 0 + k := retract(d := second l)@K + differentiate(h := third rest rest l,x) * eval(f := first l, k, h) + - differentiate(g := third rest l, x) * eval(f, k, g) + + opdsum [differentiate(f, x), d, y, g, h] +\end{verbatim} + +Up to [[patch--45]] a similar mistake could be found in the code for +differentiation of formal sums, which read +\begin{verbatim} + dvsum(l, x) == + k := retract(second l)@K + differentiate(third l, x) * summand l + + opsum [differentiate(first l, x), second l, third l] +\end{verbatim} + +<<package COMBF CombinatorialFunction>>= + dvprod(l, x) == + dm := retract(dummy)@SE + f := eval(first l, retract(second l)@K, dm::F) + p := product(f, dm) + + opsum [differentiate(first l, x)/first l * p, second l, third l] + + + dvdprod(l, x) == + x = retract(y := third l)@SE => 0 + if member?(x, variables(h := third rest rest l)) or + member?(x, variables(g := third rest l)) then + error "a product cannot be differentiated with respect to a bound" + else + opdsum cons(differentiate(first l, x)/first l, rest l) * opdprod l + +@ +The above two operations implement differentiation of products with and without +bounds. Note again, that we cannot even properly define products with bounds +that are not integral. + +To differentiate the product, we use Leibniz rule: +$$\frac{d}{dx}\prod_{i=a}^b f(i,x) = + \sum_{i=a}^b \frac{\frac{d}{dx} f(i,x)}{f(i,x)}\prod_{i=a}^b f(i,x) +$$ + +There is one situation where this definition might produce wrong results, +namely when the product is zero, but axiom failed to recognize it: in this +case, +$$ + \frac{d}{dx} f(i,x)/f(i,x) +$$ +is undefined for some $i$. However, I was not able to come up with an +example. The alternative definition +$$ + \frac{d}{dx}\prod_{i=a}^b f(i,x) = + \sum_{i=a}^b \left(\frac{d}{dx} f(i,x)\right)\prod_{j=a,j\neq i}^b f(j,x) +$$ +has the slight (display) problem that we would have to come up with a new index +variable, which looks very ugly. Furthermore, it seems to me that more +simplifications will occur with the first definition. + +<<TEST COMBF>>= + f := operator 'f + D(product(f(i,x),i=1..m),x) +@ + +Note that up to [[patch--45]] these functions did not exist and products were +differentiated according to the usual chain rule, which gave incorrect +results. (Issue~\#211) + +<<package COMBF CombinatorialFunction>>= + dprod l == + prod(summand(l)::O, third(l)::O) + + ddprod l == + prod(summand(l)::O, third(l)::O = fourth(l)::O, fourth(rest l)::O) + + dsum l == + sum(summand(l)::O, third(l)::O) + + ddsum l == + sum(summand(l)::O, third(l)::O = fourth(l)::O, fourth(rest l)::O) + +@ +These four operations handle the conversion of sums and products to +[[OutputForm]]. Note that up to [[patch--45]] the definitions for sums and +products without bounds were missing and output was illegible. + +<<package COMBF CombinatorialFunction>>= + equalsumprod(s1, s2) == + l1 := argument s1 + l2 := argument s2 + + (eval(first l1, retract(second l1)@K, second l2) = first l2) + + equaldsumprod(s1, s2) == + l1 := argument s1 + l2 := argument s2 + + ((third rest l1 = third rest l2) and + (third rest rest l1 = third rest rest l2) and + (eval(first l1, retract(second l1)@K, second l2) = first l2)) + +@ +The preceding two operations handle the testing for equality of sums and +products. This functionality was missing up to [[patch--45]]. (Issue~\#213) The +corresponding property [[%specialEqual]] set below is checked in +[[Kernel]]. Note that we can assume that the operators are equal, since this is +checked in [[Kernel]] itself. +<<package COMBF CombinatorialFunction>>= + product(x:F, s:SegmentBinding F) == + k := kernel(variable s)$K + dm := dummy + opdprod [eval(x,k,dm), dm, k::F, lo segment s, hi segment s] + + summation(x:F, s:SegmentBinding F) == + k := kernel(variable s)$K + dm := dummy + opdsum [eval(x,k,dm), dm, k::F, lo segment s, hi segment s] + +@ +These two operations return the product or the sum as unevaluated operators. A +dummy variable is introduced to make the indexing variable \lq local\rq. + +<<package COMBF CombinatorialFunction>>= + smpfact(p, l) == + map(K2fact(#1, l), #1::F, p)$PolynomialCategoryLifting( + IndexedExponents K, K, R, SMP, F) + + K2fact(k, l) == + empty? [v for v in variables(kf := k::F) | member?(v, l)] => kf + empty?(args:List F := [facts(a, l) for a in argument k]) => kf + is?(k, opperm) => + factorial(n := first args) / factorial(n - second args) + is?(k, opbinom) => + n := first args + p := second args + factorial(n) / (factorial(p) * factorial(n-p)) + (operator k) args + + operator op == + is?(op, "factorial"::Symbol) => opfact + is?(op, "permutation"::Symbol) => opperm + is?(op, "binomial"::Symbol) => opbinom + is?(op, "summation"::Symbol) => opsum + is?(op, "%defsum"::Symbol) => opdsum + is?(op, "product"::Symbol) => opprod + is?(op, "%defprod"::Symbol) => opdprod + is?(op, POWER) => oppow + error "Not a combinatorial operator" + + iprod l == + zero? first l => 0 +-- one? first l => 1 + (first l = 1) => 1 + kernel(opprod, l) + + isum l == + zero? first l => 0 + kernel(opsum, l) + + idprod l == + member?(retract(second l)@SE, variables first l) => + kernel(opdprod, l) + first(l) ** (fourth rest l - fourth l + 1) + + idsum l == + member?(retract(second l)@SE, variables first l) => + kernel(opdsum, l) + first(l) * (fourth rest l - fourth l + 1) + + ifact x == +-- zero? x or one? x => 1 + zero? x or (x = 1) => 1 + kernel(opfact, x) + + ibinom l == + n := first l + ((p := second l) = 0) or (p = n) => 1 +-- one? p or (p = n - 1) => n + (p = 1) or (p = n - 1) => n + kernel(opbinom, l) + + iperm l == + zero? second l => 1 + kernel(opperm, l) + + if R has RetractableTo Z then + iidsum l == + (r1:=retractIfCan(fourth l)@Union(Z,"failed")) + case "failed" or + (r2:=retractIfCan(fourth rest l)@Union(Z,"failed")) + case "failed" or + (k:=retractIfCan(second l)@Union(K,"failed")) case "failed" + => idsum l + +/[eval(first l,k::K,i::F) for i in r1::Z .. r2::Z] + + iidprod l == + (r1:=retractIfCan(fourth l)@Union(Z,"failed")) + case "failed" or + (r2:=retractIfCan(fourth rest l)@Union(Z,"failed")) + case "failed" or + (k:=retractIfCan(second l)@Union(K,"failed")) case "failed" + => idprod l + */[eval(first l,k::K,i::F) for i in r1::Z .. r2::Z] + + iiipow l == + (u := isExpt(x := first l, OPEXP)) case "failed" => kernel(oppow, l) + rec := u::Record(var: K, exponent: Z) + y := first argument(rec.var) + (r := retractIfCan(y)@Union(Fraction Z, "failed")) case + "failed" => kernel(oppow, l) + (operator(rec.var)) (rec.exponent * y * second l) + + if F has RadicalCategory then + ipow l == + (r := retractIfCan(second l)@Union(Fraction Z,"failed")) + case "failed" => iiipow l + first(l) ** (r::Fraction(Z)) + else + ipow l == + (r := retractIfCan(second l)@Union(Z, "failed")) + case "failed" => iiipow l + first(l) ** (r::Z) + + else + ipow l == + zero?(x := first l) => + zero? second l => error "0 ** 0" + 0 +-- one? x or zero?(n := second l) => 1 + (x = 1) or zero?(n: F := second l) => 1 +-- one? n => x + (n = 1) => x + (u := isExpt(x, OPEXP)) case "failed" => kernel(oppow, l) + rec := u::Record(var: K, exponent: Z) +-- one?(y := first argument(rec.var)) or y = -1 => + ((y := first argument(rec.var))=1) or y = -1 => + (operator(rec.var)) (rec.exponent * y * n) + kernel(oppow, l) + + if R has CombinatorialFunctionCategory then + iifact x == + (r:=retractIfCan(x)@Union(R,"failed")) case "failed" => ifact x + factorial(r::R)::F + + iiperm l == + (r1 := retractIfCan(first l)@Union(R,"failed")) case "failed" or + (r2 := retractIfCan(second l)@Union(R,"failed")) case "failed" + => iperm l + permutation(r1::R, r2::R)::F + + if R has RetractableTo(Z) and F has Algebra(Fraction(Z)) then + iibinom l == + (s:=retractIfCan(second l)@Union(R,"failed")) case R and + (t:=retractIfCan(s)@Union(Z,"failed")) case Z and t>0 => + ans:=1::F + for i in 0..t-1 repeat + ans:=ans*(first l - i::R::F) + (1/factorial t) * ans + (s:=retractIfCan(first l-second l)@Union(R,"failed")) case R and + (t:=retractIfCan(s)@Union(Z,"failed")) case Z and t>0 => + ans:=1::F + for i in 1..t repeat + ans:=ans*(second l+i::R::F) + (1/factorial t) * ans + (r1 := retractIfCan(first l)@Union(R,"failed")) case "failed" or + (r2 := retractIfCan(second l)@Union(R,"failed")) case "failed" + => ibinom l + binomial(r1::R, r2::R)::F + +@ + +[[iibinom]] checks those cases in which the binomial coefficient may be +evaluated explicitly. Note that up to [[patch--51]], the case where the second +argument is a positive integer was not checked.(Issue~\#336) Currently, the +naive iterative algorithm is used to calculate the coefficient, there is room +for improvement here. + +<<package COMBF CombinatorialFunction>>= + + else + iibinom l == + (r1 := retractIfCan(first l)@Union(R,"failed")) case "failed" or + (r2 := retractIfCan(second l)@Union(R,"failed")) case "failed" + => ibinom l + binomial(r1::R, r2::R)::F + + else + iifact x == ifact x + iibinom l == ibinom l + iiperm l == iperm l + + if R has ElementaryFunctionCategory then + iipow l == + (r1:=retractIfCan(first l)@Union(R,"failed")) case "failed" or + (r2:=retractIfCan(second l)@Union(R,"failed")) case "failed" + => ipow l + (r1::R ** r2::R)::F + else + iipow l == ipow l + + if F has ElementaryFunctionCategory then + dvpow2 l == if zero?(first l) then + 0 + else + log(first l) * first(l) ** second(l) + +@ +This operation implements the differentiation of the power operator [[%power]] +with respect to its second argument, i.e., the exponent. It uses the formula +$$\frac{d}{dx} g(y)^x = \frac{d}{dx} e^{x\log g(y)} = \log g(y) g(y)^x.$$ + +If $g(y)$ equals zero, this formula is not valid, since the logarithm is not +defined there. Although strictly speaking $0^x$ is not differentiable at zero, +we return zero for convenience. + +Note that up to [[patch--25]] this used to read +\begin{verbatim} + if F has ElementaryFunctionCategory then + dvpow2 l == log(first l) * first(l) ** second(l) +\end{verbatim} +which caused differentiating $0^x$ to fail. (Issue~\#19) + +<<package COMBF CombinatorialFunction>>= + evaluate(opfact, iifact)$BasicOperatorFunctions1(F) + evaluate(oppow, iipow) + evaluate(opperm, iiperm) + evaluate(opbinom, iibinom) + evaluate(opsum, isum) + evaluate(opdsum, iidsum) + evaluate(opprod, iprod) + evaluate(opdprod, iidprod) + derivative(oppow, [dvpow1, dvpow2]) + setProperty(opsum, SPECIALDIFF, dvsum@((List F, SE) -> F) pretend None) + setProperty(opdsum, SPECIALDIFF, dvdsum@((List F, SE)->F) pretend None) + setProperty(opprod, SPECIALDIFF, dvprod@((List F, SE)->F) pretend None) + setProperty(opdprod, SPECIALDIFF, dvdprod@((List F, SE)->F) pretend None) +@ +The last four properties define special differentiation rules for sums and +products. Note that up to [[patch--45]] the rules for products were missing. +Thus products were differentiated according the usual chain-rule, which gave +incorrect results. + +<<package COMBF CombinatorialFunction>>= + setProperty(opsum, SPECIALDISP, dsum@(List F -> O) pretend None) + setProperty(opdsum, SPECIALDISP, ddsum@(List F -> O) pretend None) + setProperty(opprod, SPECIALDISP, dprod@(List F -> O) pretend None) + setProperty(opdprod, SPECIALDISP, ddprod@(List F -> O) pretend None) + setProperty(opsum, SPECIALEQUAL, equalsumprod@((K,K) -> Boolean) pretend None) + setProperty(opdsum, SPECIALEQUAL, equaldsumprod@((K,K) -> Boolean) pretend None) + setProperty(opprod, SPECIALEQUAL, equalsumprod@((K,K) -> Boolean) pretend None) + setProperty(opdprod, SPECIALEQUAL, equaldsumprod@((K,K) -> Boolean) pretend None) + +@ +Finally, we set the properties for displaying sums and products and testing for +equality. + + +<<COMBF.dotabb>>= +"COMBF" [color="#FF4488",href="bookvol10.4.pdf#nameddest=COMBF"] +"FS" [color="#4488FF",href="bookvol10.2.pdf#nameddest=FS"] +"COMBF" -> "FS" + +@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{package CDEN CommonDenominator} +\pagehead{CommonDenominator}{CDEN} +\pagepic{ps/v104commondenominator.ps}{CDEN}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\end{tabular} + +<<package CDEN CommonDenominator>>= +)abbrev package CDEN CommonDenominator +--% CommonDenominator +++ Author: Manuel Bronstein +++ Date Created: 2 May 1988 +++ Date Last Updated: 22 Nov 1989 +++ Description: CommonDenominator provides functions to compute the +++ common denominator of a finite linear aggregate of elements of +++ the quotient field of an integral domain. +++ Keywords: gcd, quotient, common, denominator. +CommonDenominator(R, Q, A): Exports == Implementation where + R: IntegralDomain + Q: QuotientFieldCategory R + A: FiniteLinearAggregate Q + + Exports ==> with + commonDenominator: A -> R + ++ commonDenominator([q1,...,qn]) returns a common denominator + ++ d for q1,...,qn. + clearDenominator : A -> A + ++ clearDenominator([q1,...,qn]) returns \spad{[p1,...,pn]} such that + ++ \spad{qi = pi/d} where d is a common denominator for the qi's. + splitDenominator : A -> Record(num: A, den: R) + ++ splitDenominator([q1,...,qn]) returns + ++ \spad{[[p1,...,pn], d]} such that + ++ \spad{qi = pi/d} and d is a common denominator for the qi's. + + Implementation ==> add + clearDenominator l == + d := commonDenominator l + map(numer(d * #1)::Q, l) + + splitDenominator l == + d := commonDenominator l + [map(numer(d * #1)::Q, l), d] + + if R has GcdDomain then + qlcm: (Q, Q) -> Q + + qlcm(a, b) == lcm(numer a, numer b)::Q + commonDenominator l == numer reduce(qlcm, map(denom(#1)::Q, l), 1) + else + commonDenominator l == numer reduce("*", map(denom(#1)::Q, l), 1) + +@ +<<CDEN.dotabb>>= +"CDEN" [color="#FF4488",href="bookvol10.4.pdf#nameddest=CDEN"] +"PFECAT" [color="#4488FF",href="bookvol10.2.pdf#nameddest=PFECAT"] +"CDEN" -> "PFECAT" + +@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{package CRFP ComplexRootFindingPackage} +\pagehead{ComplexRootFindingPackage}{CRFP} +\pagepic{ps/v104complexrootfindingpackage.ps}{CRFP}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\end{tabular} + +<<package CRFP ComplexRootFindingPackage>>= +)abbrev package CRFP ComplexRootFindingPackage +++ Author: J. Grabmeier +++ Date Created: 31 January 1991 +++ Date Last Updated: 12 April 1991 +++ Basic Operations: factor, pleskenSplit +++ Related Constructors: +++ Also See: +++ AMS Classifications: +++ Keywords: complex zeros, roots +++ References: J. Grabmeier: On Plesken's root finding algorithm, +++ in preparation +++ A. Schoenhage: The fundamental theorem of algebra in terms of computational +++ complexity, preliminary report, Univ. Tuebingen, 1982 +++ Description: +++ \spadtype{ComplexRootFindingPackage} provides functions to +++ find all roots of a polynomial p over the complex number by +++ using Plesken's idea to calculate in the polynomial ring +++ modulo f and employing the Chinese Remainder Theorem. +++ In this first version, the precision (see \spadfunFrom{digits}{Float}) +++ is not increased when this is necessary to +++ avoid rounding errors. Hence it is the user's responsibility to +++ increase the precision if necessary. +++ Note also, if this package is called with e.g. \spadtype{Fraction Integer}, +++ the precise calculations could require a lot of time. +++ Also note that evaluating the zeros is not necessarily a good check +++ whether the result is correct: already evaluation can cause +++ rounding errors. +ComplexRootFindingPackage(R, UP): public == private where + -- R : Join(Field, OrderedRing, CharacteristicZero) + -- Float not in CharacteristicZero !| + R : Join(Field, OrderedRing) + UP : UnivariatePolynomialCategory Complex R + + C ==> Complex R + FR ==> Factored + I ==> Integer + L ==> List + FAE ==> Record(factors : L UP, error : R) + NNI ==> NonNegativeInteger + OF ==> OutputForm + ICF ==> IntegerCombinatoricFunctions(I) + + public ==> with + complexZeros : UP -> L C + ++ complexZeros(p) tries to determine all complex zeros + ++ of the polynomial p with accuracy given by the package + ++ constant {\em globalEps} which you may change by + ++ {\em setErrorBound}. + complexZeros : (UP, R) -> L C + ++ complexZeros(p, eps) tries to determine all complex zeros + ++ of the polynomial p with accuracy given by {\em eps}. + divisorCascade : (UP,UP, Boolean) -> L FAE + ++ divisorCascade(p,tp) assumes that degree of polynomial {\em tp} + ++ is smaller than degree of polynomial p, both monic. + ++ A sequence of divisions are calculated + ++ using the remainder, made monic, as divisor + ++ for the the next division. The result contains also the error of the + ++ factorizations, i.e. the norm of the remainder polynomial. + ++ If {\em info} is {\em true}, then information messages are issued. + divisorCascade : (UP,UP) -> L FAE + ++ divisorCascade(p,tp) assumes that degree of polynomial {\em tp} + ++ is smaller than degree of polynomial p, both monic. + ++ A sequence of divisions is calculated + ++ using the remainder, made monic, as divisor + ++ for the the next division. The result contains also the error of the + ++ factorizations, i.e. the norm of the remainder polynomial. + factor: (UP,R,Boolean) -> FR UP + ++ factor(p, eps, info) tries to factor p into linear factors + ++ with error atmost {\em eps}. An overall error bound + ++ {\em eps0} is determined and iterated tree-like calls + ++ to {\em pleskenSplit} are used to get the factorization. + ++ If {\em info} is {\em true}, then information messages are given. + factor: (UP,R) -> FR UP + ++ factor(p, eps) tries to factor p into linear factors + ++ with error atmost {\em eps}. An overall error bound + ++ {\em eps0} is determined and iterated tree-like calls + ++ to {\em pleskenSplit} are used to get the factorization. + factor: UP -> FR UP + ++ factor(p) tries to factor p into linear factors + ++ with error atmost {\em globalEps}, the internal error bound, + ++ which can be set by {\em setErrorBound}. An overall error bound + ++ {\em eps0} is determined and iterated tree-like calls + ++ to {\em pleskenSplit} are used to get the factorization. + graeffe : UP -> UP + ++ graeffe p determines q such that \spad{q(-z**2) = p(z)*p(-z)}. + ++ Note that the roots of q are the squares of the roots of p. + norm : UP -> R + ++ norm(p) determines sum of absolute values of coefficients + ++ Note: this function depends on \spadfunFrom{abs}{Complex}. + pleskenSplit: (UP, R, Boolean) -> FR UP + ++ pleskenSplit(poly,eps,info) determines a start polynomial {\em start} + ++ by using "startPolynomial then it increases the exponent + ++ n of {\em start ** n mod poly} to get an approximate factor of + ++ {\em poly}, in general of degree "degree poly -1". Then a divisor + ++ cascade is calculated and the best splitting is chosen, as soon + ++ as the error is small enough. + --++ In a later version we plan + --++ to use the whole information to get a split into more than 2 + --++ factors. + ++ If {\em info} is {\em true}, then information messages are issued. + pleskenSplit: (UP, R) -> FR UP + ++ pleskenSplit(poly, eps) determines a start polynomial {\em start}\ + ++ by using "startPolynomial then it increases the exponent + ++ n of {\em start ** n mod poly} to get an approximate factor of + ++ {\em poly}, in general of degree "degree poly -1". Then a divisor + ++ cascade is calculated and the best splitting is chosen, as soon + ++ as the error is small enough. + --++ In a later version we plan + --++ to use the whole information to get a split into more than 2 + --++ factors. + reciprocalPolynomial: UP -> UP + ++ reciprocalPolynomial(p) calulates a polynomial which has exactly + ++ the inverses of the non-zero roots of p as roots, and the same + ++ number of 0-roots. + rootRadius: (UP,R) -> R + ++ rootRadius(p,errQuot) calculates the root radius of p with a + ++ maximal error quotient of {\em errQuot}. + rootRadius: UP -> R + ++ rootRadius(p) calculates the root radius of p with a + ++ maximal error quotient of {\em 1+globalEps}, where + ++ {\em globalEps} is the internal error bound, which can be + ++ set by {\em setErrorBound}. + schwerpunkt: UP -> C + ++ schwerpunkt(p) determines the 'Schwerpunkt' of the roots of the + ++ polynomial p of degree n, i.e. the center of gravity, which is + ++ {\em coeffient of \spad{x**(n-1)}} divided by + ++ {\em n times coefficient of \spad{x**n}}. + setErrorBound : R -> R + ++ setErrorBound(eps) changes the internal error bound, + -- by default being {\em 10 ** (-20)} to eps, if R is + ++ by default being {\em 10 ** (-3)} to eps, if R is + ++ a member in the category \spadtype{QuotientFieldCategory Integer}. + ++ The internal {\em globalDigits} is set to + -- {\em ceiling(1/r)**2*10} being {\em 10**41} by default. + ++ {\em ceiling(1/r)**2*10} being {\em 10**7} by default. + startPolynomial: UP -> Record(start: UP, factors: FR UP) + ++ startPolynomial(p) uses the ideas of Schoenhage's + ++ variant of Graeffe's method to construct circles which separate + ++ roots to get a good start polynomial, i.e. one whose + ++ image under the Chinese Remainder Isomorphism has both entries + ++ of norm smaller and greater or equal to 1. In case the + ++ roots are found during internal calculations. + ++ The corresponding factors + ++ are in {\em factors} which are otherwise 1. + + private ==> add + + + Rep := ModMonic(C, UP) + + -- constants + c : C + r : R + --globalDigits : I := 10 ** 41 + globalDigits : I := 10 ** 7 + globalEps : R := + --a : R := (1000000000000000000000 :: I) :: R + a : R := (1000 :: I) :: R + 1/a + emptyLine : OF := " " + dashes : OF := center "---------------------------------------------------" + dots : OF := center "..................................................." + one : R := 1$R + two : R := 2 * one + ten : R := 10 * one + eleven : R := 11 * one + weakEps := eleven/ten + --invLog2 : R := 1/log10 (2*one) + + -- signatures of local functions + + absC : C -> R + -- + absR : R -> R + -- + calculateScale : UP -> R + -- + makeMonic : UP -> UP + -- 'makeMonic p' divides 'p' by the leading coefficient, + -- to guarantee new leading coefficient to be 1$R we cannot + -- simply divide the leading monomial by the leading coefficient + -- because of possible rounding errors + min: (FAE, FAE) -> FAE + -- takes factorization with smaller error + nthRoot : (R, NNI) -> R + -- nthRoot(r,n) determines an approximation to the n-th + -- root of r, if \spadtype{R} has {\em ?**?: (R,Fraction Integer)->R} + -- we use this, otherwise we use {\em approxNthRoot} via + -- \spadtype{Integer} + shift: (UP,C) -> UP + -- shift(p,c) changes p(x) into p(x+c), thereby modifying the + -- roots u_j of p to the roots (u_j - c) of shift(p,c) + scale: (UP,C) -> UP + -- scale(p,c) changes p(x) into p(cx), thereby modifying the + -- roots u_j of p to the roots ((1/c) u_j) of scale(p,c) + + + -- implementation of exported functions + + + complexZeros(p,eps) == + --r1 : R := rootRadius(p,weakEps) + --eps0 : R = r1 * nthRoot(eps, degree p) + -- right now we are content with + eps0 : R := eps/(ten ** degree p) + facs : FR UP := factor(p,eps0) + [-coefficient(linfac.factor,0) for linfac in factors facs] + + complexZeros p == complexZeros(p,globalEps) + setErrorBound r == + r <= 0 => error "setErrorBound: need error bound greater 0" + globalEps := r + if R has QuotientFieldCategory Integer then + rd : Integer := ceiling(1/r) + globalDigits := rd * rd * 10 + lof : List OF := _ + ["setErrorBound: internal digits set to",globalDigits::OF] + print hconcat lof + messagePrint "setErrorBound: internal error bound set to" + globalEps + + pleskenSplit(poly,eps,info) == + p := makeMonic poly + fp : FR UP + if not zero? (md := minimumDegree p) then + fp : FR UP := irreducibleFactor(monomial(1,1)$UP,md)$(FR UP) + p := p quo monomial(1,md)$UP + sP : Record(start: UP, factors: FR UP) := startPolynomial p + fp : FR UP := sP.factors +-- if not one? fp then + if not (fp = 1) then + qr: Record(quotient: UP, remainder: UP):= divide(p,makeMonic expand fp) + p := qr.quotient + st := sP.start + zero? degree st => fp + -- we calculate in ModMonic(C, UP), + -- next line defines the polynomial, which is used for reducing + setPoly p + nm : R := eps + split : FAE + sR : Rep := st :: Rep + psR : Rep := sR ** (degree poly) + + notFoundSplit : Boolean := true + while notFoundSplit repeat + -- if info then + -- lof : L OF := ["not successfull, new exponent:", nn::OF] + -- print hconcat lof + psR := psR * psR * sR -- exponent (2*d +1) + -- be careful, too large exponent results in rounding errors + -- tp is the first approximation of a divisor of poly: + tp : UP := lift psR + zero? degree tp => + if info then print "we leave as we got constant factor" + nilFactor(poly,1)$(FR UP) + -- this was the case where we don't find a non-trivial factorization + -- we refine tp by repeated polynomial division and hope that + -- the norm of the remainder gets small from time to time + splits : L FAE := divisorCascade(p, makeMonic tp, info) + split := reduce(min,splits) + notFoundSplit := (eps <= split.error) + + for fac in split.factors repeat + fp := +-- one? degree fac => fp * nilFactor(fac,1)$(FR UP) + (degree fac = 1) => fp * nilFactor(fac,1)$(FR UP) + fp * irreducibleFactor(fac,1)$(FR UP) + fp + + startPolynomial p == -- assume minimumDegree is 0 + --print (p :: OF) + fp : FR UP := 1 +-- one? degree p => + (degree p = 1) => + p := makeMonic p + [p,irreducibleFactor(p,1)] + startPoly : UP := monomial(1,1)$UP + eps : R := weakEps -- 10 per cent errors allowed + r1 : R := rootRadius(p, eps) + rd : R := 1/rootRadius(reciprocalPolynomial p, eps) + (r1 > (2::R)) and (rd < 1/(2::R)) => [startPoly,fp] -- unit circle splitting! + -- otherwise the norms of the roots are too closed so we + -- take the center of gravity as new origin: + u : C := schwerpunkt p + startPoly := startPoly-monomial(u,0) + p := shift(p,-u) + -- determine new rootRadius: + r1 : R := rootRadius(p, eps) + startPoly := startPoly/(r1::C) + -- use one of the 4 points r1*zeta, where zeta is a 4th root of unity + -- as new origin, this could be changed to an arbitrary list + -- of elements of norm 1. + listOfCenters : L C := [complex(r1,0), complex(0,r1), _ + complex(-r1,0), complex(0,-r1)] + lp : L UP := [shift(p,v) for v in listOfCenters] + -- next we check if one of these centers is a root + centerIsRoot : Boolean := false + for i in 1..maxIndex lp repeat + if (mD := minimumDegree lp.i) > 0 then + pp : UP := monomial(1,1)-monomial(listOfCenters.i-u,0) + centerIsRoot := true + fp := fp * irreducibleFactor(pp,mD) + centerIsRoot => + p := shift(p,u) quo expand fp + --print (p::OF) + zero? degree p => [p,fp] + sP:= startPolynomial(p) + [sP.start,fp] + -- choose the best one w.r.t. maximal quotient of norm of largest + -- root and norm of smallest root + lpr1 : L R := [rootRadius(q,eps) for q in lp] + lprd : L R := [1/rootRadius(reciprocalPolynomial q,eps) for q in lp] + -- later we should check here of an rd is smaller than globalEps + lq : L R := [] + for i in 1..maxIndex lpr1 repeat + lq := cons(lpr1.i/lprd.i, lq) + --lq : L R := [(l/s)::R for l in lpr1 for s in lprd]) + lq := reverse lq + po := position(reduce(max,lq),lq) + --p := lp.po + --lrr : L R := [rootRadius(p,i,1+eps) for i in 2..(degree(p)-1)] + --lrr := concat(concat(lpr1.po,lrr),lprd.po) + --lu : L R := [(lrr.i + lrr.(i+1))/2 for i in 1..(maxIndex(lrr)-1)] + [startPoly - monomial(listOfCenters.po,0),fp] + + norm p == + -- reduce(_+$R,map(absC,coefficients p)) + nm : R := 0 + for c in coefficients p repeat + nm := nm + absC c + nm + + pleskenSplit(poly,eps) == pleskenSplit(poly,eps,false) + + graeffe p == + -- If p = ao x**n + a1 x**(n-1) + ... + a<n-1> x + an + -- and q = bo x**n + b1 x**(n-1) + ... + b<n-1> x + bn + -- are such that q(-x**2) = p(x)p(-x), then + -- bk := ak**2 + 2 * ((-1) * a<k-1>*a<k+1> + ... + + -- (-1)**l * a<l>*a<l>) where l = min(k, n-k). + -- graeffe(p) constructs q using these identities. + n : NNI := degree p + aForth : L C := [] + for k in 0..n repeat -- aForth = [a0, a1, ..., a<n-1>, an] + aForth := cons(coefficient(p, k::NNI), aForth) + aBack : L C := [] -- after k steps + -- aBack = [ak, a<k-1>, ..., a1, a0] + gp : UP := 0$UP + for k in 0..n repeat + ak : C := first aForth + aForth := rest aForth + aForthCopy : L C := aForth -- we iterate over aForth and + aBackCopy : L C := aBack -- aBack but do not want to + -- destroy them + sum : C := 0 + const : I := -1 -- after i steps const = (-1)**i + for aminus in aBack for aplus in aForth repeat + -- after i steps aminus = a<k-i> and aplus = a<k+i> + sum := sum + const * aminus * aplus + aForthCopy := rest aForthCopy + aBackCopy := rest aBackCopy + const := -const + gp := gp + monomial(ak*ak + 2 * sum, (n-k)::NNI) + aBack := cons(ak, aBack) + gp + + + + rootRadius(p,errorQuotient) == + errorQuotient <= 1$R => + error "rootRadius: second Parameter must be greater than 1" + pp : UP := p + rho : R := calculateScale makeMonic pp + rR : R := rho + pp := makeMonic scale(pp,complex(rho,0$R)) + expo : NNI := 1 + d : NNI := degree p + currentError: R := nthRoot(2::R, 2) + currentError := d*20*currentError + while nthRoot(currentError, expo) >= errorQuotient repeat + -- if info then print (expo :: OF) + pp := graeffe pp + rho := calculateScale pp + expo := 2 * expo + rR := nthRoot(rho, expo) * rR + pp := makeMonic scale(pp,complex(rho,0$R)) + rR + + rootRadius(p) == rootRadius(p, 1+globalEps) + + schwerpunkt p == + zero? p => 0$C + zero? (d := degree p) => error _ + "schwerpunkt: non-zero const. polynomial has no roots and no schwerpunkt" + -- coeffient of x**d and x**(d-1) + lC : C := coefficient(p,d) -- ^= 0 + nC : C := coefficient(p,(d-1) pretend NNI) + (denom := recip ((d::I::C)*lC)) case "failed" => error "schwerpunkt: _ + degree * leadingCoefficient not invertible in ring of coefficients" + - (nC*(denom::C)) + + reciprocalPolynomial p == + zero? p => 0 + d : NNI := degree p + md : NNI := d+minimumDegree p + lm : L UP := [monomial(coefficient(p,i),(md-i) :: NNI) for i in 0..d] + sol := reduce(_+, lm) + + divisorCascade(p, tp, info) == + lfae : L FAE := nil() + for i in 1..degree tp while (degree tp > 0) repeat + -- USE monicDivide !!! + qr : Record(quotient: UP, remainder: UP) := divide(p,tp) + factor1 : UP := tp + factor2 : UP := makeMonic qr.quotient + -- refinement of tp: + tp := qr.remainder + nm : R := norm tp + listOfFactors : L UP := cons(factor2,nil()$(L UP)) + listOfFactors := cons(factor1,listOfFactors) + lfae := cons( [listOfFactors,nm], lfae) + if info then + --lof : L OF := [i :: OF,"-th division:"::OF] + --print center box hconcat lof + print emptyLine + lof : L OF := ["error polynomial has degree " ::OF,_ + (degree tp)::OF, " and norm " :: OF, nm :: OF] + print center hconcat lof + lof : L OF := ["degrees of factors:" ::OF,_ + (degree factor1)::OF," ", (degree factor2)::OF] + print center hconcat lof + if info then print emptyLine + reverse lfae + + divisorCascade(p, tp) == divisorCascade(p, tp, false) + + factor(poly,eps) == factor(poly,eps,false) + factor(p) == factor(p, globalEps) + + factor(poly,eps,info) == + result : FR UP := coerce monomial(leadingCoefficient poly,0) + d : NNI := degree poly + --should be + --den : R := (d::I)::R * two**(d::Integer) * norm poly + --eps0 : R := eps / den + -- for now only + eps0 : R := eps / (ten*ten) +-- one? d => irreducibleFactor(poly,1)$(FR UP) + (d = 1) => irreducibleFactor(poly,1)$(FR UP) + listOfFactors : L Record(factor: UP,exponent: I) :=_ + list [makeMonic poly,1] + if info then + lof : L OF := [dashes,dots,"list of Factors:",dots,listOfFactors::OF, _ + dashes, "list of Linear Factors:", dots, result::OF, _ + dots,dashes] + print vconcat lof + while not null listOfFactors repeat + p : UP := (first listOfFactors).factor + exponentOfp : I... [truncated message content] |
From: <da...@us...> - 2009-01-27 02:55:56
|
Revision: 1092 http://axiom.svn.sourceforge.net/axiom/?rev=1092&view=rev Author: daly Date: 2009-01-27 02:20:50 +0000 (Tue, 27 Jan 2009) Log Message: ----------- 20090126 tpd src/axiom-website/patches.html 20090126.01.tpd.patch 20090126 tpd src/axiom-website/download.html add binaries Modified Paths: -------------- trunk/axiom/changelog trunk/axiom/src/axiom-website/download.html trunk/axiom/src/axiom-website/patches.html Modified: trunk/axiom/changelog =================================================================== --- trunk/axiom/changelog 2009-01-27 02:15:27 UTC (rev 1091) +++ trunk/axiom/changelog 2009-01-27 02:20:50 UTC (rev 1092) @@ -1,4 +1,6 @@ -20080125 tpd src/axiom-website/patches.html 20090125.01.tpd.patch +20090126 tpd src/axiom-website/patches.html 20090126.01.tpd.patch +20090126 tpd src/axiom-website/download.html add binaries +20090125 tpd src/axiom-website/patches.html 20090125.01.tpd.patch 20090125 tpd books/bookvol10.4 add packages 20090125 tpd src/algebra/Makefile remove empty spad files 20090125 tpd src/algebra/brill.spad removed Modified: trunk/axiom/src/axiom-website/download.html =================================================================== --- trunk/axiom/src/axiom-website/download.html 2009-01-27 02:15:27 UTC (rev 1091) +++ trunk/axiom/src/axiom-website/download.html 2009-01-27 02:20:50 UTC (rev 1092) @@ -789,6 +789,12 @@ <a href="downloads/axiom-redhat72-nov2008-bin.tgz">bin</a> </font> </td> + <td align="center"> + <font face="Helvetica, Arial, sans-serif" size="+1"> + <a href="downloads/axiom-jan2009-src.tgz">src</a> + <a href="downloads/axiom-redhat72-jan2009-bin.tgz">bin</a> + </font> + </td> </tr> <tr> @@ -935,6 +941,12 @@ <a href="downloads/axiom-ubuntu-nov2008-bin.tgz">bin</a> </font> </td> + <td align="center"> + <font face="Helvetica, Arial, sans-serif" size="+1"> + <a href="downloads/axiom-jan2009-src.tgz">src</a> + <a href="downloads/axiom-ubuntu64-jan2009-bin.tgz">bin</a> + </font> + </td> </tr> <tr> @@ -1093,6 +1105,19 @@ around or, worse yet, don't install needed files. These notes show particular details for known systems </p> + <h3>Fedora 10</h3> + <pre> +yum install xterm emacs git-core patch texlive texlive-latex xorg-x11-proto-devel +yum install libXt-devel libXpm-devel +download the latest axiom-(date)-src.tgz +tar -zxf axiom-(date)-src.tgz +cd axiom +export AXIOM=`pwd`/mnt/fedora10 +export PATH=$AXIOM/bin:$PATH +make + + </pre> + <h3>Ubuntu</h3> <pre> echo 0 >/proc/sys/kernel/randomize_va_space Modified: trunk/axiom/src/axiom-website/patches.html =================================================================== --- trunk/axiom/src/axiom-website/patches.html 2009-01-27 02:15:27 UTC (rev 1091) +++ trunk/axiom/src/axiom-website/patches.html 2009-01-27 02:20:50 UTC (rev 1092) @@ -905,5 +905,7 @@ download.html update binary download page<br/> <a href="patches/20090125.01.tpd.patch">20090125.01.tpd.patch</a> bookvol10.4 add packages<br/> +<a href="patches/20090126.01.tpd.patch">20090126.01.tpd.patch</a> +download.html add binaries<br/> </body> </html> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <da...@us...> - 2009-01-27 02:55:51
|
Revision: 1091 http://axiom.svn.sourceforge.net/axiom/?rev=1091&view=rev Author: daly Date: 2009-01-27 02:15:27 +0000 (Tue, 27 Jan 2009) Log Message: ----------- 20080125 tpd src/axiom-website/patches.html 20090125.01.tpd.patch 20090125 tpd books/bookvol10.4 add packages 20090125 tpd src/algebra/Makefile remove empty spad files 20090125 tpd src/algebra/brill.spad removed 20090125 tpd src/algebra/bezout.spad removed 20090125 tpd src/algebra/axserver.spad removed 20090125 tpd src/algebra/array1.spad removed 20090125 tpd src/algebra/any.spad removed 20090125 tpd src/algebra/alql.spad removed 20090125 tpd src/algebra/allfact.spad removed 20090125 tpd src/algebra/algfunc.spad removed 20090125 tpd src/algebra/algfact.spad removed 20090125 tpd src/algebra/algcat.spad removed 20090125 tpd src/algebra/aggcat2.spad removed 20090125 tpd src/algebra/acplot.spad removed 20080125 tpd books/ps/v104mpolycatrationalfunctionfactorizer.ps 20090125 tpd books/ps/v104mpolycatpolyfactorizer.ps added 20090125 tpd books/ps/v104supfractionfactorizer.ps added 20090125 tpd books/ps/v104simplealgebraicextensionalgfactor.ps added 20090125 tpd books/ps/v104saerationalfunctionalgfactor.ps added 20090125 tpd books/ps/v104realsolvepackage.ps added 20090125 tpd books/ps/v104rationalfunctionfactorizer.ps added 20090125 tpd books/ps/v104rationalfunctionfactor.ps added 20090125 tpd books/ps/v104primitivearrayfunctions2.ps added 20090125 tpd books/ps/v104operationsquery.ps added 20090125 tpd books/ps/v104onedimensionalarrayfunctions2.ps added 20090125 tpd books/ps/v104norminmonogenicalgebra.ps added 20090125 tpd books/ps/v104nonefunctions1.ps added 20090125 tpd books/ps/v104mrationalfactorize.ps added 20090125 tpd books/ps/v104mergething.ps added 20090125 tpd books/ps/v104inneralgfactor.ps added 20090125 tpd books/ps/v104generalizedmultivariatefactorize.ps added 20090125 tpd books/ps/v104finitesetaggregatefunctions2.ps added 20090125 tpd books/ps/v104finitelinearaggregatefunctions2.ps added 20090125 tpd books/ps/v104characteristicpolynomialinmonogenicalalgebra.ps added 20090125 tpd books/ps/v104brillharttests.ps added 20090125 tpd books/ps/v104bezoutmatrix.ps added 20090125 tpd books/ps/v104axiomserver.ps added 20090125 tpd books/ps/v104anyfunctions1.ps added 20090125 tpd books/ps/v104algfactor.ps added 20090125 tpd books/ps/v104algebraicfunction.ps added 20090125 tpd src/algebra/brill.spad move package to bookvol10.4 20090125 tpd src/algebra/bezout.spad move package to bookvol10.4 20090125 tpd src/algebra/axserver.spad move package to bookvol10.4 20090125 tpd src/algebra/array1.spad move package to bookvol10.4 20090125 tpd src/algebra/any.spad move package to bookvol10.4 20090125 tpd src/algebra/alql.spad move package to bookvol10.4 20090125 tpd src/algebra/allfact.spad move package to bookvol10.4 20090125 tpd src/algebra/algfunc.spad move package to bookvol10.4 20090125 tpd src/algebra/algfact.spad move package to bookvol10.4 20090125 tpd src/algebra/algcat.spad move package to bookvol10.4 20090125 tpd src/algebra/aggcat2.spad move package to bookvol10.4 20090125 tpd src/algebra/acplot.spad move package to bookvol10.4 Modified Paths: -------------- trunk/axiom/books/bookvol10.4.pamphlet trunk/axiom/changelog trunk/axiom/src/algebra/Makefile.pamphlet trunk/axiom/src/axiom-website/patches.html Added Paths: ----------- trunk/axiom/books/ps/v104algebraicfunction.ps trunk/axiom/books/ps/v104algfactor.ps trunk/axiom/books/ps/v104anyfunctions1.ps trunk/axiom/books/ps/v104axiomserver.ps trunk/axiom/books/ps/v104bezoutmatrix.ps trunk/axiom/books/ps/v104brillharttests.ps trunk/axiom/books/ps/v104characteristicpolynomialinmonogenicalalgebra.ps trunk/axiom/books/ps/v104finitelinearaggregatefunctions2.ps trunk/axiom/books/ps/v104finitesetaggregatefunctions2.ps trunk/axiom/books/ps/v104generalizedmultivariatefactorize.ps trunk/axiom/books/ps/v104inneralgfactor.ps trunk/axiom/books/ps/v104mergething.ps trunk/axiom/books/ps/v104mpolycatpolyfactorizer.ps trunk/axiom/books/ps/v104mpolycatrationalfunctionfactorizer.ps trunk/axiom/books/ps/v104mrationalfactorize.ps trunk/axiom/books/ps/v104nonefunctions1.ps trunk/axiom/books/ps/v104norminmonogenicalgebra.ps trunk/axiom/books/ps/v104onedimensionalarrayfunctions2.ps trunk/axiom/books/ps/v104operationsquery.ps trunk/axiom/books/ps/v104primitivearrayfunctions2.ps trunk/axiom/books/ps/v104rationalfunctionfactor.ps trunk/axiom/books/ps/v104rationalfunctionfactorizer.ps trunk/axiom/books/ps/v104realsolvepackage.ps trunk/axiom/books/ps/v104saerationalfunctionalgfactor.ps trunk/axiom/books/ps/v104simplealgebraicextensionalgfactor.ps trunk/axiom/books/ps/v104supfractionfactorizer.ps Removed Paths: ------------- trunk/axiom/src/algebra/acplot.spad.pamphlet trunk/axiom/src/algebra/aggcat2.spad.pamphlet trunk/axiom/src/algebra/algcat.spad.pamphlet trunk/axiom/src/algebra/algfact.spad.pamphlet trunk/axiom/src/algebra/algfunc.spad.pamphlet trunk/axiom/src/algebra/allfact.spad.pamphlet trunk/axiom/src/algebra/alql.spad.pamphlet trunk/axiom/src/algebra/any.spad.pamphlet trunk/axiom/src/algebra/array1.spad.pamphlet trunk/axiom/src/algebra/axserver.spad.pamphlet trunk/axiom/src/algebra/bezout.spad.pamphlet trunk/axiom/src/algebra/brill.spad.pamphlet Modified: trunk/axiom/books/bookvol10.4.pamphlet =================================================================== --- trunk/axiom/books/bookvol10.4.pamphlet 2009-01-25 06:05:48 UTC (rev 1090) +++ trunk/axiom/books/bookvol10.4.pamphlet 2009-01-27 02:15:27 UTC (rev 1091) @@ -239,7 +239,3051 @@ \vfill \eject \pagenumbering{arabic} -\begin{thebibliography}{99} -\end{thebibliography} +\chapter{Chapter Overview} +This book contains the domains in Axiom, in alphabetical order. + +Each domain has an associated 'dotpic' chunk which only lists the +domains, categories, and packages that are in the layer immediately +below in the build order. For the full list see the algebra Makefile +where this information is maintained. + +Each domain is preceded by a picture. The picture indicates several +things. The colors indicate whether the name refers to a category, +domain, or package. An ellipse means that the name refers to something +in the bootstrap set. Thus, + +\includegraphics[scale=0.85]{ps/v103colorchart.ps} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%\pagehead{Domain}{ABB} +%\pagepic{ps/v103domain.ps}{ABB}{1.00} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Chapter A} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{package AF AlgebraicFunction} +\pagehead{AlgebraicFunction}{AF} +\pagepic{ps/v104algebraicfunction.ps}{AF}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\end{tabular} + +<<package AF AlgebraicFunction>>= +)abbrev package AF AlgebraicFunction +++ Author: Manuel Bronstein +++ Date Created: 21 March 1988 +++ Date Last Updated: 11 November 1993 +++ Description: +++ This package provides algebraic functions over an integral domain. +++ Keywords: algebraic, function. + +AlgebraicFunction(R, F): Exports == Implementation where + R: Join(OrderedSet, IntegralDomain) + F: FunctionSpace R + + SE ==> Symbol + Z ==> Integer + Q ==> Fraction Z + OP ==> BasicOperator + K ==> Kernel F + P ==> SparseMultivariatePolynomial(R, K) + UP ==> SparseUnivariatePolynomial F + UPR ==> SparseUnivariatePolynomial R + ALGOP ==> "%alg" + SPECIALDISP ==> "%specialDisp" + SPECIALDIFF ==> "%specialDiff" + + Exports ==> with + rootOf : (UP, SE) -> F + ++ rootOf(p, y) returns y such that \spad{p(y) = 0}. + ++ The object returned displays as \spad{'y}. + operator: OP -> OP + ++ operator(op) returns a copy of \spad{op} with the domain-dependent + ++ properties appropriate for \spad{F}. + ++ Error: if op is not an algebraic operator, that is, + ++ an nth root or implicit algebraic operator. + belong? : OP -> Boolean + ++ belong?(op) is true if \spad{op} is an algebraic operator, that is, + ++ an nth root or implicit algebraic operator. + inrootof: (UP, F) -> F + ++ inrootof(p, x) should be a non-exported function. + -- un-export when the compiler accepts conditional local functions! + droot : List F -> OutputForm + ++ droot(l) should be a non-exported function. + -- un-export when the compiler accepts conditional local functions! + if R has RetractableTo Integer then + "**" : (F, Q) -> F + ++ x ** q is \spad{x} raised to the rational power \spad{q}. + minPoly: K -> UP + ++ minPoly(k) returns the defining polynomial of \spad{k}. + definingPolynomial: F -> F + ++ definingPolynomial(f) returns the defining polynomial of \spad{f} + ++ as an element of \spad{F}. + ++ Error: if f is not a kernel. + iroot : (R, Z) -> F + ++ iroot(p, n) should be a non-exported function. + -- un-export when the compiler accepts conditional local functions! + + Implementation ==> add + ialg : List F -> F + dvalg: (List F, SE) -> F + dalg : List F -> OutputForm + + opalg := operator("rootOf"::Symbol)$CommonOperators + oproot := operator("nthRoot"::Symbol)$CommonOperators + + belong? op == has?(op, ALGOP) + dalg l == second(l)::OutputForm + + rootOf(p, x) == + k := kernel(x)$K + (r := retractIfCan(p)@Union(F, "failed")) case "failed" => + inrootof(p, k::F) + n := numer(f := univariate(r::F, k)) + degree denom f > 0 => error "roofOf: variable appears in denom" + inrootof(n, k::F) + + dvalg(l, x) == + p := numer univariate(first l, retract(second l)@K) + alpha := kernel(opalg, l) + - (map(differentiate(#1, x), p) alpha) / ((differentiate p) alpha) + + ialg l == + f := univariate(p := first l, retract(x := second l)@K) + degree denom f > 0 => error "roofOf: variable appears in denom" + inrootof(numer f, x) + + operator op == + is?(op, "rootOf"::Symbol) => opalg + is?(op, "nthRoot"::Symbol) => oproot + error "Unknown operator" + + if R has AlgebraicallyClosedField then + UP2R: UP -> Union(UPR, "failed") + + inrootof(q, x) == + monomial? q => 0 + + (d := degree q) <= 0 => error "rootOf: constant polynomial" +-- one? d=> - leadingCoefficient(reductum q) / leadingCoefficient q + (d = 1) => - leadingCoefficient(reductum q) / leadingCoefficient q + ((rx := retractIfCan(x)@Union(SE, "failed")) case SE) and + ((r := UP2R q) case UPR) => rootOf(r::UPR, rx::SE)::F + kernel(opalg, [q x, x]) + + UP2R p == + ans:UPR := 0 + while p ^= 0 repeat + (r := retractIfCan(leadingCoefficient p)@Union(R, "failed")) + case "failed" => return "failed" + ans := ans + monomial(r::R, degree p) + p := reductum p + ans + + else + inrootof(q, x) == + monomial? q => 0 + (d := degree q) <= 0 => error "rootOf: constant polynomial" +-- one? d => - leadingCoefficient(reductum q) /leadingCoefficient q + (d = 1) => - leadingCoefficient(reductum q) /leadingCoefficient q + kernel(opalg, [q x, x]) + + evaluate(opalg, ialg)$BasicOperatorFunctions1(F) + setProperty(opalg, SPECIALDIFF, + dvalg@((List F, SE) -> F) pretend None) + setProperty(opalg, SPECIALDISP, + dalg@(List F -> OutputForm) pretend None) + + if R has RetractableTo Integer then + import PolynomialRoots(IndexedExponents K, K, R, P, F) + + dumvar := "%%var"::Symbol::F + + lzero : List F -> F + dvroot : List F -> F + inroot : List F -> F + hackroot: (F, Z) -> F + inroot0 : (F, Z, Boolean, Boolean) -> F + + lzero l == 0 + + droot l == + x := first(l)::OutputForm + (n := retract(second l)@Z) = 2 => root x + root(x, n::OutputForm) + + dvroot l == + n := retract(second l)@Z + (first(l) ** ((1 - n) / n)) / (n::F) + + x ** q == + qr := divide(numer q, denom q) + x ** qr.quotient * inroot([x, (denom q)::F]) ** qr.remainder + + hackroot(x, n) == + (n = 1) or (x = 1) => x + (((dx := denom x) ^= 1) and + ((rx := retractIfCan(dx)@Union(Integer,"failed")) case Integer) and + positive?(rx)) + => hackroot((numer x)::F, n)/hackroot(rx::Integer::F, n) + (x = -1) and n = 4 => + ((-1::F) ** (1::Q / 2::Q) + 1) / ((2::F) ** (1::Q / 2::Q)) + kernel(oproot, [x, n::F]) + + inroot l == + zero?(n := retract(second l)@Z) => error "root: exponent = 0" +-- one?(x := first l) or one? n => x + ((x := first l) = 1) or (n = 1) => x + (r := retractIfCan(x)@Union(R,"failed")) case R => iroot(r::R,n) + (u := isExpt(x, oproot)) case Record(var:K, exponent:Z) => + pr := u::Record(var:K, exponent:Z) + (first argument(pr.var)) ** + (pr.exponent /$Fraction(Z) + (n * retract(second argument(pr.var))@Z)) + inroot0(x, n, false, false) + +-- removes powers of positive integers from numer and denom +-- num? or den? is true if numer or denom already processed + inroot0(x, n, num?, den?) == + rn:Union(Z, "failed") := (num? => "failed"; retractIfCan numer x) + rd:Union(Z, "failed") := (den? => "failed"; retractIfCan denom x) + (rn case Z) and (rd case Z) => + rec := qroot(rn::Z / rd::Z, n::NonNegativeInteger) + rec.coef * hackroot(rec.radicand, rec.exponent) + rn case Z => + rec := qroot(rn::Z::Fraction(Z), n::NonNegativeInteger) + rec.coef * inroot0((rec.radicand**(n exquo rec.exponent)::Z) + / (denom(x)::F), n, true, den?) + rd case Z => + rec := qroot(rd::Z::Fraction(Z), n::NonNegativeInteger) + inroot0((numer(x)::F) / + (rec.radicand ** (n exquo rec.exponent)::Z), + n, num?, true) / rec.coef + hackroot(x, n) + + if R has AlgebraicallyClosedField then iroot(r, n) == nthRoot(r, n)::F + else + iroot0: (R, Z) -> F + + if R has RadicalCategory then + if R has imaginary:() -> R then iroot(r, n) == nthRoot(r, n)::F + else + iroot(r, n) == + odd? n or r >= 0 => nthRoot(r, n)::F + iroot0(r, n) + + else iroot(r, n) == iroot0(r, n) + + iroot0(r, n) == + rec := rroot(r, n::NonNegativeInteger) + rec.coef * hackroot(rec.radicand, rec.exponent) + + definingPolynomial x == + (r := retractIfCan(x)@Union(K, "failed")) case K => + is?(k := r::K, opalg) => first argument k + is?(k, oproot) => + dumvar ** retract(second argument k)@Z - first argument k + dumvar - x + dumvar - x + + minPoly k == + is?(k, opalg) => + numer univariate(first argument k, + retract(second argument k)@K) + is?(k, oproot) => + monomial(1,retract(second argument k)@Z :: NonNegativeInteger) + - first(argument k)::UP + monomial(1, 1) - k::F::UP + + evaluate(oproot, inroot)$BasicOperatorFunctions1(F) + derivative(oproot, [dvroot, lzero]) + + else -- R is not retractable to Integer + droot l == + x := first(l)::OutputForm + (n := second l) = 2::F => root x + root(x, n::OutputForm) + + minPoly k == + is?(k, opalg) => + numer univariate(first argument k, + retract(second argument k)@K) + monomial(1, 1) - k::F::UP + + setProperty(oproot, SPECIALDISP, + droot@(List F -> OutputForm) pretend None) + +@ +<<AF.dotabb>>= +"AF" [color="#FF4488",href="bookvol10.4.pdf#nameddest=AF"] + +@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{package ALGFACT AlgFactor} +\pagehead{AlgFactor}{ALGFACT} +\pagepic{ps/v104algfactor.ps}{ALGFACT}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\end{tabular} + +<<package ALGFACT AlgFactor>>= +)abbrev package ALGFACT AlgFactor +++ Factorization of UP AN; +++ Author: Manuel Bronstein +++ Date Created: ??? +++ Date Last Updated: ??? +++ Description: +++ Factorization of univariate polynomials with coefficients in +++ \spadtype{AlgebraicNumber}. + +AlgFactor(UP): Exports == Implementation where + UP: UnivariatePolynomialCategory AlgebraicNumber + + N ==> NonNegativeInteger + Z ==> Integer + Q ==> Fraction Integer + AN ==> AlgebraicNumber + K ==> Kernel AN + UPQ ==> SparseUnivariatePolynomial Q + SUP ==> SparseUnivariatePolynomial AN + FR ==> Factored UP + + Exports ==> with + factor: (UP, List AN) -> FR + ++ factor(p, [a1,...,an]) returns a prime factorisation of p + ++ over the field generated by its coefficients and a1,...,an. + factor: UP -> FR + ++ factor(p) returns a prime factorisation of p + ++ over the field generated by its coefficients. + split : UP -> FR + ++ split(p) returns a prime factorisation of p + ++ over its splitting field. + doublyTransitive?: UP -> Boolean + ++ doublyTransitive?(p) is true if p is irreducible over + ++ over the field K generated by its coefficients, and + ++ if \spad{p(X) / (X - a)} is irreducible over + ++ \spad{K(a)} where \spad{p(a) = 0}. + + Implementation ==> add + import PolynomialCategoryQuotientFunctions(IndexedExponents K, + K, Z, SparseMultivariatePolynomial(Z, K), AN) + + UPCF2 ==> UnivariatePolynomialCategoryFunctions2 + + fact : (UP, List K) -> FR + ifactor : (SUP, List K) -> Factored SUP + extend : (UP, Z) -> FR + allk : List AN -> List K + downpoly: UP -> UPQ + liftpoly: UPQ -> UP + irred? : UP -> Boolean + + allk l == removeDuplicates concat [kernels x for x in l] + liftpoly p == map(#1::AN, p)$UPCF2(Q, UPQ, AN, UP) + downpoly p == map(retract(#1)@Q, p)$UPCF2(AN, UP ,Q, UPQ) + ifactor(p,l) == (fact(p pretend UP, l)) pretend Factored(SUP) + factor p == fact(p, allk coefficients p) + + factor(p, l) == + fact(p, allk removeDuplicates concat(l, coefficients p)) + + split p == + fp := factor p + unit(fp) * + _*/[extend(fc.factor, fc.exponent) for fc in factors fp] + + extend(p, n) == +-- one? degree p => primeFactor(p, n) + (degree p = 1) => primeFactor(p, n) + q := monomial(1, 1)$UP - zeroOf(p pretend SUP)::UP + primeFactor(q, n) * split((p exquo q)::UP) ** (n::N) + + doublyTransitive? p == + irred? p and irred?((p exquo + (monomial(1, 1)$UP - zeroOf(p pretend SUP)::UP))::UP) + + irred? p == + fp := factor p +-- one? numberOfFactors fp and one? nthExponent(fp, 1) + (numberOfFactors fp = 1) and (nthExponent(fp, 1) = 1) + + fact(p, l) == +-- one? degree p => primeFactor(p, 1) + (degree p = 1) => primeFactor(p, 1) + empty? l => + dr := factor(downpoly p)$RationalFactorize(UPQ) + (liftpoly unit dr) * + _*/[primeFactor(liftpoly dc.factor,dc.exponent) + for dc in factors dr] + q := minPoly(alpha := "max"/l)$AN + newl := remove(alpha = #1, l) + sae := SimpleAlgebraicExtension(AN, SUP, q) + ups := SparseUnivariatePolynomial sae + fr := factor(map(reduce univariate(#1, alpha, q), + p)$UPCF2(AN, UP, sae, ups), + ifactor(#1, newl))$InnerAlgFactor(AN, SUP, sae, ups) + newalpha := alpha::AN + map((lift(#1)$sae) newalpha, unit fr)$UPCF2(sae, ups, AN, UP) * + _*/[primeFactor(map((lift(#1)$sae) newalpha, + fc.factor)$UPCF2(sae, ups, AN, UP), + fc.exponent) for fc in factors fr] + +@ +<<ALGFACT.dotabb>>= +"ALGFACT" [color="#FF4488",href="bookvol10.4.pdf#nameddest=ALGFACT"] + +@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{package ANY1 AnyFunctions1} +\pagehead{AnyFunctions1}{ANY1} +\pagepic{ps/v104anyfunctions1.ps}{ANY1}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\end{tabular} + +<<package ANY1 AnyFunctions1>>= +)abbrev package ANY1 AnyFunctions1 +++ Author: +++ Date Created: +++ Change History: +++ Basic Functions: coerce, retractIfCan, retractable?, retract +++ Related Constructors: Any +++ Also See: +++ AMS Classification: +++ Keywords: +++ Description: +++ \spadtype{AnyFunctions1} implements several utility functions for +++ working with \spadtype{Any}. These functions are used to go back +++ and forth between objects of \spadtype{Any} and objects of other +++ types. + +AnyFunctions1(S:Type): with + coerce : S -> Any + ++ coerce(s) creates an object of \spadtype{Any} from the + ++ object \spad{s} of type \spad{S}. + retractIfCan: Any -> Union(S, "failed") + ++ retractIfCan(a) tries change \spad{a} into an object + ++ of type \spad{S}. If it can, then such an object is + ++ returned. Otherwise, "failed" is returned. + retractable?: Any -> Boolean + ++ retractable?(a) tests if \spad{a} can be converted + ++ into an object of type \spad{S}. + retract : Any -> S + ++ retract(a) tries to convert \spad{a} into an object of + ++ type \spad{S}. If possible, it returns the object. + ++ Error: if no such retraction is possible. + + == add + import NoneFunctions1(S) + + Sexpr:SExpression := devaluate(S)$Lisp + + retractable? a == dom(a) = Sexpr + coerce(s:S):Any == any(Sexpr, s::None) + + retractIfCan a == + retractable? a => obj(a) pretend S + "failed" + + retract a == + retractable? a => obj(a) pretend S + error "Cannot retract value." + +@ +<<ANY1.dotabb>>= +"ANY1" [color="#FF4488",href="bookvol10.4.pdf#nameddest=ANY1"] +"TYPE" [color="#4488FF",href="bookvol10.2.pdf#nameddest=TYPE"] +"ANY1" -> "TYPE" + +@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{package AXSERV AxiomServer} +\pagehead{AxiomServer}{AXSERV} +\pagepic{ps/v104axiomserver.ps}{AXSERV}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\end{tabular} + +<<package AXSERV AxiomServer>>= + +)abbrev package AXSERV AxiomServer +AxiomServer: public == private where + + public == with + + axServer: (Integer, SExpression->Void) -> Void + multiServ: SExpression -> Void + getDatabase: (String,String) -> String + + private == add + + getFile: (SExpression,String) -> Void + getCommand: (SExpression,String) -> Void + getDescription: String -> String + getInterp: (SExpression,String) -> Void + getLisp: (SExpression,String) -> Void + getShow: (SExpression,String) -> Void + lastStep: () -> String + lastType: () -> String + formatMessages: String -> String + makeErrorPage: String -> String + getSourceFile: (String,String,String) -> String + makeDBPage: String -> String + getContentType: String -> String + readTheFile: SExpression -> String + outputToSocket: (SExpression,String,String) -> Void + + getDatabase(constructor:String, key:String):String == + answer:=string GETDATABASE(INTERN$Lisp constructor,INTERN$Lisp key)$Lisp +-- WriteLine$Lisp concat ["getDatabase: ",constructor," ",key," ",answer] + answer + +@ +The axServer function handles the socket connection on the given port. +When it gets a input on the socket it calls the server +function on the socket input. +<<package AXSERV AxiomServer>>= + axServer(port:Integer,serverfunc:SExpression->Void):Void == + WriteLine$Lisp "listening on port 8085" + s := SiSock(port,serverfunc)$Lisp + -- To listen for just one connection and then close the socket + -- uncomment i := 0. + i:Integer := 1 + while (i > 0) repeat + if not null?(SiListen(s)$Lisp)$SExpression then + w := SiAccept(s)$Lisp + serverfunc(w) +-- i := 0 + +@ +The multiServ function parses the socket input. +It expects either a GET or POST request. + +A GET request fetches a new page, calling ``getFile''. +A POST request starts with +\begin{itemize} +\item ``command='' which expects axiom interpreter commands. + When this is recognized we call the ``getCommand'' function. +\item ``lispcall='' which expects lisp interpreter input + When this is recognized we call the ``getLisp'' function. +\end{itemize} +<<package AXSERV AxiomServer>>= + + multiServ(s:SExpression):Void == +-- WriteLine("multiServ begin")$Lisp + headers:String := "" + char:String + -- read in the http headers + while (char := _ + STRING(READ_-CHAR_-NO_-HANG(s,NIL$Lisp,'EOF)$Lisp)$Lisp) ^= "EOF"_ + repeat + headers := concat [headers,char] +-- sayTeX$Lisp headers + StringMatch("([^ ]*)", headers)$Lisp + u:UniversalSegment(Integer) + u := segment(MatchBeginning(1)$Lisp+1,_ + MatchEnd(1)$Lisp)$UniversalSegment(Integer) + reqtype:String := headers.u +-- sayTeX$Lisp concat ["request type: ",reqtype] + if reqtype = "GET" then + StringMatch("GET ([^ ]*)",headers)$Lisp + u:UniversalSegment(Integer) + u := segment(MatchBeginning(1)$Lisp+1,_ + MatchEnd(1)$Lisp)$UniversalSegment(Integer) + getFile(s,headers.u) + if reqtype = "POST" and StringMatch("command=(.*)$",headers)$Lisp > 0 + then + u:UniversalSegment(Integer) + u := segment(MatchBeginning(1)$Lisp+1,_ + MatchEnd(1)$Lisp)$UniversalSegment(Integer) + getCommand(s,headers.u) + if reqtype = "POST" and StringMatch("interpcall=(.*)$",headers)$Lisp > 0 + then + u:UniversalSegment(Integer) + u := segment(MatchBeginning(1)$Lisp+1,_ + MatchEnd(1)$Lisp)$UniversalSegment(Integer) + getInterp(s,headers.u) + if reqtype = "POST" and StringMatch("lispcall=(.*)$",headers)$Lisp > 0 + then + u:UniversalSegment(Integer) + u := segment(MatchBeginning(1)$Lisp+1,_ + MatchEnd(1)$Lisp)$UniversalSegment(Integer) + getLisp(s,headers.u) + if reqtype = "POST" and StringMatch("showcall=(.*)$",headers)$Lisp > 0 + then + u:UniversalSegment(Integer) + u := segment(MatchBeginning(1)$Lisp+1,_ + MatchEnd(1)$Lisp)$UniversalSegment(Integer) + getShow(s,headers.u) +-- WriteLine("multiServ end")$Lisp +-- WriteLine("")$Lisp + +@ +\subsubsection{getFile} +Given a socket and the URL of the file we create an input stream +that contains the file. If the filename contains a question mark +then we need to parse the parameters and dynamically construct the +file contents. +<<package AXSERV AxiomServer>>= + getFile(s:SExpression,pathvar:String):Void == +-- WriteLine("")$Lisp + WriteLine$Lisp concat ["getFile: ",pathvar] + params:=split(pathvar,char "?") + if #params = 1 + then if not null? PATHNAME_-NAME(PATHNAME(pathvar)$Lisp)$Lisp + then + contentType:String := getContentType(pathvar) + q:=Open(pathvar)$Lisp + if null? q + then + q := MAKE_-STRING_-INPUT_-STREAM(_ + makeErrorPage("File doesn't exist"))$Lisp + else + q:=MAKE_-STRING_-INPUT_-STREAM(_ + makeErrorPage("Problem with file path"))$Lisp + else + q:=MAKE_-STRING_-INPUT_-STREAM(makeDBPage(pathvar))$Lisp + outputToSocket(s,readTheFile(q),contentType) + +@ +\subsubsection{makeErrorPage} +<<package AXSERV AxiomServer>>= + makeErrorPage(msg:String):String == + page:String:="<!DOCTYPE html PUBLIC " + page:=page "_"-//W3C//DTD XHTML 1.0 Strict//EN_" " + page:=page "_""" rel="nofollow">http://www.w3.org/TR/xthml1/DTD/xhtml1-strict.dtd_">" + page:=page "<html xmlns=_""" rel="nofollow">http://www.w3.org/1999/xhtml_">" + page:=page "<head><title>Error</title></head><body>" msg "</body></html>" +-- WriteLine(page)$Lisp + page +@ +\subsubsection{getDescription} +We need to fish around in the data structure to return the piece of +documentation for the domain. We have to call the lisp version of +GETDATABASE because the version above returns a string object. The +string object is missing quotes and cannot be properly read. So we +need to get the lisp object and work with it in native form first. + +The doc string also contains spad markup which we need to replace with html. +<<package AXSERV AxiomServer>>= + getDescription(dom:String):String == + d:=CADR(CADAR(GETDATABASE(INTERN(dom)$Lisp,'DOCUMENTATION)$Lisp)$Lisp)$Lisp + string d +@ +\subsubsection{getSourceFile} +During build we construct a hash table that takes the chunk name as +the key and returns the filename. We reconstruct the chunk name here +and do a lookup for the source file. +<<package AXSERV AxiomServer>>= + getSourceFile(constructorkind:String,_ + abbreviation:String,_ + dom:String):String == + sourcekey:="@<<" constructorkind " " abbreviation " " dom ">>" +-- WriteLine(sourcekey)$Lisp + sourcefile:=lowerCase last split(getDatabase(dom,"SOURCEFILE"),char "/") + sourcefile:=sourcefile ".pamphlet" + +@ +\subsubsection{makeDBPage} +<<package AXSERV AxiomServer>>= + makeDBPage(pathvar:String):String == + params:List(String):=split(pathvar,char "?") + for i in 1..#params repeat WriteLine$Lisp concat ["params: ",params.i] + pathparts:List(String):=split(params.1,char "/") + for i in 1..#pathparts repeat + WriteLine$Lisp concat ["pathparts: ",pathparts.i] + pagename:=last pathparts + WriteLine$Lisp concat ["pagename: ",pagename] + cmd:=first split(pagename,char ".") + WriteLine$Lisp concat ["cmd: ",cmd] + args:List(String):=split(params.2, char "&") + for i in 1..#args repeat WriteLine$Lisp concat ["args: ",args.i] + page:String:="<!DOCTYPE html PUBLIC " + page:=page "_"-//W3C//DTD XHTML 1.0 Strict//EN_" " + page:=page "_""" rel="nofollow">http://www.w3.org/TR/xthml1/DTD/xhtml1-strict.dtd_">" + page:=page "<html xmlns=_""" rel="nofollow">http://www.w3.org/1999/xhtml_">" + page:=page "<head>" + page:=page "<meta http-equiv=_"Content-Type_" content=_"text/html_"" + page:=page " charset=_"us-ascii_"/>" + page:=page "<title>" cmd " " args.1 "</title></head>" + page:=page "<style> html { background-color: #FFFF66; } </style>" + page:=page "<body>" + cmd = "db" => + dom:=args.1 + domi:=INTERN(dom)$Lisp + -- category, domain, or package? + constructorkind:=getDatabase(dom,"CONSTRUCTORKIND") + abbreviation:=getDatabase(dom, "ABBREVIATION") + sourcefile:=getDatabase(dom, "SOURCEFILE") + constructorkind.1:=upperCase constructorkind.1 + description:=getDescription(dom) + page:=page "<div align=_"center_">" + page:=page "<img align=_"middle_" src=_"doctitle.png_"/></div><hr/>" + page:=page "<div align=_"center_">" constructorkind " " dom "</div><hr/>" + page:=page "<table>" + page:=page "<tr><td valign=_"top_">Description: </td>" + page:=page "<td>" description "</td></tr>" + page:=page "<tr><td>Abbreviation: </td><td>" abbreviation "</td></tr>" + page:=page "<tr><td>Source File: </td><td>" sourcefile "</td></tr>" + page:=page "</table><hr/>" + page:=page "<table>" + page:=page "<tr>" + page:=page "<td>" + page:=page "<a href=_"?" dom "&lookup=Ancestors_">Ancestors</a>" + page:=page "</td>" + page:=page "<td>" + page:=page "<a href=_"?" dom "&lookup=Dependents_">Dependents</a>" + page:=page "</td>" + page:=page "<td>" + page:=page "<a href=_"?" dom "&lookup=Exports_">Exports</a>" + page:=page "</td>" + page:=page "<td>" + page:=page "<a href=_"?" dom "&lookup=Parents_">Parents</a>" + page:=page "</td>" + page:=page "<td>" + page:=page "<a href=_"?" dom "&lookup=Users_">Users</a>" + page:=page "</td>" + page:=page "</tr>" + page:=page "<tr>" + page:=page "<td>" + page:=page "<a href=_"?" dom "&lookup=Attributes_">Attributes</a>" + page:=page "</td>" + page:=page "<td>" + page:=page "<a href=_"?" dom "&lookup=Examples_">Examples</a>" + page:=page "</td>" + page:=page "<td>" + page:=page "<a href=_"?" dom "&lookup=Operations_">Operations</a>" + page:=page "</td>" + page:=page "<td>" + page:=page "<a href=_"?" dom "&lookup=SearchPath_">Search Path</a>" + page:=page "</td>" + page:=page "<td>" + page:=page "<a href=_"?" dom "&lookup=Uses_">Uses</a>" + page:=page "</td>" + page:=page "</tr>" + page:=page "</table>" + cmd = "op" => + dom:=args.1 + domi:=INTERN(dom)$Lisp + -- category, domain, or package? + constructorkind:=getDatabase(dom,"CONSTRUCTORKIND") + abbreviation:=getDatabase(dom, "ABBREVIATION") + sourcefile:=getDatabase(dom, "SOURCEFILE") + constructorkind.1:=upperCase constructorkind.1 + description:=getDescription(dom) + page:=page "<div align=_"center_">" + page:=page "<img align=_"middle_" src=_"doctitle.png_"/></div><hr/>" + page:=page "<div align=_"center_">" constructorkind " " dom "</div><hr/>" + page:=page "<table>" + page:=page "<tr><td valign=_"top_">Description: </td>" + page:=page "<td>" description "</td></tr>" + page:=page "<tr><td>Abbreviation: </td><td>" abbreviation "</td></tr>" + page:=page "<tr><td>Source File: </td><td>" sourcefile "</td></tr>" + page:=page "</table><hr/>" + page:=page "<table>" + page:=page "<tr>" + page:=page "<td>" + page:=page "<a href=_"?" dom "&lookup=Ancestors_">Ancestors</a>" + page:=page "</td>" + page:=page "<td>" + page:=page "<a href=_"?" dom "&lookup=Dependents_">Dependents</a>" + page:=page "</td>" + page:=page "<td>" + page:=page "<a href=_"?" dom "&lookup=Exports_">Exports</a>" + page:=page "</td>" + page:=page "<td>" + page:=page "<a href=_"?" dom "&lookup=Parents_">Parents</a>" + page:=page "</td>" + page:=page "<td>" + page:=page "<a href=_"?" dom "&lookup=Users_">Users</a>" + page:=page "</td>" + page:=page "</tr>" + page:=page "<tr>" + page:=page "<td>" + page:=page "<a href=_"?" dom "&lookup=Attributes_">Attributes</a>" + page:=page "</td>" + page:=page "<td>" + page:=page "<a href=_"?" dom "&lookup=Examples_">Examples</a>" + page:=page "</td>" + page:=page "<td>" + page:=page "<a href=_"?" dom "&lookup=Operations_">Operations</a>" + page:=page "</td>" + page:=page "<td>" + page:=page "<a href=_"?" dom "&lookup=SearchPath_">Search Path</a>" + page:=page "</td>" + page:=page "<td>" + page:=page "<a href=_"?" dom "&lookup=Uses_">Uses</a>" + page:=page "</td>" + page:=page "</tr>" + page:=page "</table>" +-- WriteLine(page)$Lisp + page:=page "</body></html>" + page +@ +\subsubsection{readTheFile} +We have q which is a stream which contains the file. We read the file +into a string-stream to get it all into one string. We return the string. +<<package AXSERV AxiomServer>>= + readTheFile(q:SExpression):String == +-- WriteLine("begin reading file")$Lisp + r := MAKE_-STRING_-OUTPUT_-STREAM()$Lisp + SiCopyStream(q,r)$Lisp + filestream:String := GET_-OUTPUT_-STREAM_-STRING(r)$Lisp + CLOSE(r)$Lisp + CLOSE(q)$Lisp +-- WriteLine("end reading file")$Lisp + filestream + +@ +\subsubsection{outputToSocket} +We have ``s'' which is the socket, ``filestream'' which is the text of +the file to output, and ``contentType'' which is the HTML Content-Type. +We construct the HTML header information according to the standard and +prepend it to the file. The resulting string is output to the socket. +<<package AXSERV AxiomServer>>= + outputToSocket(s:SExpression,filestream:String,contentType:String):Void == + filelength:String := string(#filestream) + file:String := "" + nl:String:=STRING(NewLine$Lisp)$Lisp + file := concat ["Content-Length: ",filelength,nl,nl,file] + file := concat ["Connection: close",nl,file] + file := concat ["Content-Type: ",contentType,nl,file] + file := concat ["HTTP/1.1 200 OK",nl,file] + file := concat [file,filestream] +-- WriteLine(file)$Lisp + f:=MAKE_-STRING_-INPUT_-STREAM(file)$Lisp + SiCopyStream(f,s)$Lisp + CLOSE(f)$Lisp + CLOSE(s)$Lisp + +@ +\subsubsection{getCommand} +The getCommand function is invoked when the HTTP request is a POST +and contains the string "command". Essentially the game here is +to rebind the various output streams used by Axiom so we can +capture the normal output. This function returns a set of HTML 5 div +blocks: +\begin{enumerate} +\item stepnum, the value of lastStep() +\item command, the value of the command variable +\item algebra, the value of the algebra variable +\item mathml, the value of the mathml variable +\item type, the value of lastType() +\end{enumerate} +The HTML functions in the hyperdoc browser depend on the order +of these variables so do not change this without changing the +corresponding functions in the browser HTML. +<<package AXSERV AxiomServer>>= + getCommand(s:SExpression,command:String):Void == + WriteLine$Lisp concat ["getCommand: ",command] + SETQ(tmpmathml$Lisp, MAKE_-STRING_-OUTPUT_-STREAM()$Lisp)$Lisp + SETQ(tmpalgebra$Lisp, MAKE_-STRING_-OUTPUT_-STREAM()$Lisp)$Lisp + SETQ(savemathml$Lisp, _$texOutputStream$Lisp)$Lisp + SETQ(savealgebra$Lisp, _$algebraOutputStream$Lisp)$Lisp + SETQ(_$texOutputStream$Lisp,tmpmathml$Lisp)$Lisp + SETQ(_$algebraOutputStream$Lisp,tmpalgebra$Lisp)$Lisp + ans := string parseAndEvalToStringEqNum$Lisp command + SETQ(resultmathml$Lisp,_ + GET_-OUTPUT_-STREAM_-STRING(_$texOutputStream$Lisp)$Lisp)$Lisp + SETQ(resultalgebra$Lisp,_ + GET_-OUTPUT_-STREAM_-STRING(_$algebraOutputStream$Lisp)$Lisp)$Lisp + SETQ(_$texOutputStream$Lisp,savemathml$Lisp)$Lisp + SETQ(_$algebraOutputStream$Lisp,savealgebra$Lisp)$Lisp + CLOSE(tmpmathml$Lisp)$Lisp + CLOSE(tmpalgebra$Lisp)$Lisp + -- Since strings returned from axiom are going to be displayed in html I + -- should really check for the characters &,<,> and replace them with + -- &,<,>. + -- At present I only check for ampersands in formatMessages. + mathml:String := string(resultmathml$Lisp) + algebra:String := string(resultalgebra$Lisp) + algebra := formatMessages(algebra) + -- At this point mathml contains the mathml for the output but does not + -- include step number or type information. + -- We should also save the command. + -- I get the type and step number from the $internalHistoryTable + axans:String := _ + concat ["<div class=_"stepnum_">", lastStep(), "</div>_ + <div class=_"command_">", command, "</div>_ + <div class=_"algebra_">",algebra,"</div>_ + <div class=_"mathml_">",mathml,"</div>_ + <div class=_"type_">",lastType(),"</div>"] +-- WriteLine$Lisp concat ["mathml answer: ",mathml] +-- WriteLine$Lisp concat ["algebra answer: ",algebra] + q:=MAKE_-STRING_-INPUT_-STREAM(axans)$Lisp + SiCopyStream(q,s)$Lisp + CLOSE(q)$Lisp + CLOSE(s)$Lisp + +@ + +\subsubsection{getInterp} +The getInterp function is invoked when the HTTP request is a POST +and contains the string "command". Essentially the game here is +to rebind the various output streams used by Axiom so we can +capture the normal output. This function returns a set of HTML 5 div +blocks: +\begin{enumerate} +\item stepnum, the value of lastStep() +\item command, the value of the command variable +\item algebra, the value of the algebra variable +\item mathml, the value of the mathml variable +\item type, the value of lastType() +\end{enumerate} +The HTML functions in the hyperdoc browser depend on the order +of these variables so do not change this without changing the +corresponding functions in the browser HTML. +<<package AXSERV AxiomServer>>= + getInterp(s:SExpression,command:String):Void == + WriteLine$Lisp concat ["getInterp: ",command] + SETQ(tmpmathml$Lisp, MAKE_-STRING_-OUTPUT_-STREAM()$Lisp)$Lisp + SETQ(tmpalgebra$Lisp, MAKE_-STRING_-OUTPUT_-STREAM()$Lisp)$Lisp + SETQ(savemathml$Lisp, _$texOutputStream$Lisp)$Lisp + SETQ(savealgebra$Lisp, _$algebraOutputStream$Lisp)$Lisp + SETQ(_$texOutputStream$Lisp,tmpmathml$Lisp)$Lisp + SETQ(_$algebraOutputStream$Lisp,tmpalgebra$Lisp)$Lisp + ans := string parseAndEvalToStringEqNum$Lisp command + SETQ(resultmathml$Lisp,_ + GET_-OUTPUT_-STREAM_-STRING(_$texOutputStream$Lisp)$Lisp)$Lisp + SETQ(resultalgebra$Lisp,_ + GET_-OUTPUT_-STREAM_-STRING(_$algebraOutputStream$Lisp)$Lisp)$Lisp + SETQ(_$texOutputStream$Lisp,savemathml$Lisp)$Lisp + SETQ(_$algebraOutputStream$Lisp,savealgebra$Lisp)$Lisp + CLOSE(tmpmathml$Lisp)$Lisp + CLOSE(tmpalgebra$Lisp)$Lisp + -- Since strings returned from axiom are going to be displayed in html I + -- should really check for the characters &,<,> and replace them with + -- &,<,>. + -- At present I only check for ampersands in formatMessages. + mathml:String := string(resultmathml$Lisp) + algebra:String := string(resultalgebra$Lisp) + algebra := formatMessages(algebra) + -- At this point mathml contains the mathml for the output but does not + -- include step number or type information. + -- We should also save the command. + -- I get the type and step number from the $internalHistoryTable + axans:String := _ + concat ["<div class=_"stepnum_">", lastStep(), "</div>_ + <div class=_"command_">", command, "</div>_ + <div class=_"algebra_">",algebra,"</div>_ + <div class=_"mathml_">",mathml,"</div>_ + <div class=_"type_">",lastType(),"</div>"] +-- WriteLine$Lisp concat ["mathml answer: ",mathml] +-- WriteLine$Lisp concat ["algebra answer: ",algebra] + q:=MAKE_-STRING_-INPUT_-STREAM(axans)$Lisp + SiCopyStream(q,s)$Lisp + CLOSE(q)$Lisp + CLOSE(s)$Lisp + +@ + +\subsubsection{getLisp} +The getLisp function is invoked when the HTTP request is a POST +and contains the string "lispcall". +<<package AXSERV AxiomServer>>= + getLisp(s:SExpression,command:String):Void == + WriteLine$Lisp concat ["getLisp: ",command] + evalresult:=EVAL(READ_-FROM_-STRING(command)$Lisp)$Lisp + mathml:String:=string(evalresult) +-- WriteLine$Lisp concat ["getLisp: after ",mathml] +-- WriteLine$Lisp concat ["getLisp output: ",mathml] + SETQ(tmpalgebra$Lisp, MAKE_-STRING_-OUTPUT_-STREAM()$Lisp)$Lisp + SETQ(savemathml$Lisp, _$texOutputStream$Lisp)$Lisp + SETQ(savealgebra$Lisp, _$algebraOutputStream$Lisp)$Lisp + SETQ(_$texOutputStream$Lisp,tmpmathml$Lisp)$Lisp + SETQ(_$algebraOutputStream$Lisp,tmpalgebra$Lisp)$Lisp + SETQ(resultalgebra$Lisp,_ + GET_-OUTPUT_-STREAM_-STRING(_$algebraOutputStream$Lisp)$Lisp)$Lisp + SETQ(_$texOutputStream$Lisp,savemathml$Lisp)$Lisp + SETQ(_$algebraOutputStream$Lisp,savealgebra$Lisp)$Lisp + CLOSE(tmpalgebra$Lisp)$Lisp + -- Since strings returned from axiom are going to be displayed in html I + -- should really check for the characters &,<,> and replace them with + -- &,<,>. + -- At present I only check for ampersands in formatMessages. + algebra:String := string(resultalgebra$Lisp) + algebra := formatMessages(algebra) + -- At this point mathml contains the mathml for the output but does not + -- include step number or type information. + -- We should also save the command. + -- I get the type and step number from the $internalHistoryTable + axans:String := _ + concat ["<div class=_"stepnum_">", lastStep(), "</div>_ + <div class=_"command_">", command, "</div>_ + <div class=_"algebra_">",algebra,"</div>_ + <div class=_"mathml_">",mathml,"</div>_ + <div class=_"type_">",lastType(),"</div>"] +-- WriteLine$Lisp concat ["mathml answer: ",mathml] +-- WriteLine$Lisp concat ["algebra answer: ",algebra] + q:=MAKE_-STRING_-INPUT_-STREAM(axans)$Lisp + SiCopyStream(q,s)$Lisp + CLOSE(q)$Lisp + CLOSE(s)$Lisp + +@ +\subsubsection{getShow} +The getShow function is invoked when the HTTP request is a POST +and contains the string "showcall". The )show command generates +output to lisp's *standard-output* so we wrap that stream to capture it. +The resulting string needs to be transformed into html-friendly form. +This is done in the call to replace-entitites (see http.lisp) +<<package AXSERV AxiomServer>>= + getShow(s:SExpression,showarg:String):Void == + WriteLine$Lisp concat ["getShow: ",showarg] + realarg:=SUBSEQ(showarg,6)$Lisp + show:=_ + "(progn (setq |$options| '((|operations|))) (|show| '|" realarg "|))" +-- WriteLine$Lisp concat ["getShow: ",show] + SETQ(SAVESTREAM$Lisp,_*STANDARD_-OUTPUT_*$Lisp)$Lisp + SETQ(_*STANDARD_-OUTPUT_*$Lisp,_ + MAKE_-STRING_-OUTPUT_-STREAM()$Lisp)$Lisp + evalresult:=EVAL(READ_-FROM_-STRING(show)$Lisp)$Lisp + SETQ(evalresult,_ + GET_-OUTPUT_-STREAM_-STRING(_*STANDARD_-OUTPUT_*$Lisp)$Lisp)$Lisp + SETQ(_*STANDARD_-OUTPUT_*$Lisp,SAVESTREAM$Lisp)$Lisp + mathml:String:=string(REPLACE_-ENTITIES(evalresult)$Lisp) + SETQ(tmpalgebra$Lisp, MAKE_-STRING_-OUTPUT_-STREAM()$Lisp)$Lisp + SETQ(savemathml$Lisp, _$texOutputStream$Lisp)$Lisp + SETQ(savealgebra$Lisp, _$algebraOutputStream$Lisp)$Lisp + SETQ(_$texOutputStream$Lisp,tmpmathml$Lisp)$Lisp + SETQ(_$algebraOutputStream$Lisp,tmpalgebra$Lisp)$Lisp + SETQ(resultalgebra$Lisp,_ + GET_-OUTPUT_-STREAM_-STRING(_$algebraOutputStream$Lisp)$Lisp)$Lisp + SETQ(_$texOutputStream$Lisp,savemathml$Lisp)$Lisp + SETQ(_$algebraOutputStream$Lisp,savealgebra$Lisp)$Lisp + CLOSE(tmpalgebra$Lisp)$Lisp + -- Since strings returned from axiom are going to be displayed in html I + -- should really check for the characters &,<,> and replace them with + -- &,<,>. + -- At present I only check for ampersands in formatMessages. + algebra:String := string(resultalgebra$Lisp) + algebra := formatMessages(algebra) + -- At this point mathml contains the mathml for the output but does not + -- include step number or type information. + -- We should also save the command. + -- I get the type and step number from the $internalHistoryTable + axans:String := _ + concat ["<div class=_"stepnum_">", lastStep(), "</div>_ + <div class=_"command_">", showarg, "</div>_ + <div class=_"algebra_">",algebra,"</div>_ + <div class=_"mathml_">",mathml,"</div>_ + <div class=_"type_">",lastType(),"</div>"] +-- WriteLine$Lisp concat ["mathml answer: ",mathml] + q:=MAKE_-STRING_-INPUT_-STREAM(axans)$Lisp + SiCopyStream(q,s)$Lisp + CLOSE(q)$Lisp + CLOSE(s)$Lisp + +@ +\subsubsection{lastType} +To examine the \$internalHistoryTable use the following line +\begin{verbatim} + )lisp |$internalHistoryTable| +\end{verbatim} +We need to pick out first member of internalHistoryTable and then pick out +the element with \% as first element. Here is an example showing just +the first element of the list, which correponds to the last command. + +Note that the last command does not necessarily correspond to the last +element of the first element of \$internalHistoryTable as it is in this +example. +\begin{verbatim} + ( + (4 NIL + (x (value (BasicOperator) WRAPPED . #<vector 09a93bd0>)) + (y (value (BasicOperator) WRAPPED . #<vector 09a93bb4>)) + (% (value (Matrix (Polynomial (Integer))) WRAPPED . #<vector 0982e0e0>)) + ) + ... + ) +\end{verbatim} + +We also need to check for input error in which case the \$internalHistoryTable +is not changed and the type retrieved would be that for the last correct +input. +<<package AXSERV AxiomServer>>= + lastType():String == + SETQ(first$Lisp,FIRST(_$internalHistoryTable$Lisp)$Lisp)$Lisp + count:Integer := 0 + hisLength:Integer := LIST_-LENGTH(_$internalHistoryTable$Lisp)$Lisp + length:Integer := LIST_-LENGTH(first$Lisp)$Lisp + -- This initializes stepSav. The test is a bit of a hack, maybe I'll + -- figure out the right way to do it later. + if string stepSav$Lisp = "#<OBJNULL>" then SETQ(stepSav$Lisp, 0$Lisp)$Lisp + -- If hisLength = 0 then the history table has been reset to NIL + -- and we're starting numbering over + if hisLength = 0 then SETQ(stepSav$Lisp, 0$Lisp)$Lisp + if hisLength > 0 and + car(car(_$internalHistoryTable$Lisp)$Lisp)$Lisp ^= stepSav$Lisp then + SETQ(stepSav$Lisp,car(car(_$internalHistoryTable$Lisp)$Lisp)$Lisp)$Lisp + while count < length repeat + position(char "%",string FIRST(first$Lisp)$Lisp) = 2 => + count := length+1 + count := count +1 + SETQ(first$Lisp,REST(first$Lisp)$Lisp)$Lisp + count = length + 1 => + string SECOND(SECOND(FIRST(first$Lisp)$Lisp)$Lisp)$Lisp + "" + + + lastStep():String == + string car(car(_$internalHistoryTable$Lisp)$Lisp)$Lisp + + formatMessages(str:String):String == +-- WriteLine("formatMessages")$Lisp + -- I need to replace any ampersands with & and may also need to + -- replace < and > with < and > + strlist:List String +-- WriteLine(str)$Lisp + strlist := split(str,char "&") + str := "" + -- oops, if & is the last character in the string this method + -- will eliminate it. Need to redo this. + for s in strlist repeat + str := concat [str,s,"&"] + strlen:Integer := #str + str := str.(1..(#str - 5)) +-- WriteLine(str)$Lisp + -- Here I split the string into lines and put each line in a "div". + strlist := split(str, char string NewlineChar$Lisp) + str := "" +-- WriteLine("formatMessages1")$Lisp +-- WriteLine(concat strlist)$Lisp + for s in strlist repeat +-- WriteLine(s)$Lisp + str := concat [str,"<div>",s,"</div>"] + str + + getContentType(pathvar:String):String == +-- WriteLine("getContentType begin")$Lisp + -- set default content type + contentType:String := "text/plain" + -- need to test for successful match? + StringMatch(".*\.(.*)$", pathvar)$Lisp + u:UniversalSegment(Integer) + u := segment(MatchBeginning(1)$Lisp+1,_ + MatchEnd(1)$Lisp)$UniversalSegment(Integer) + extension:String := pathvar.u +-- WriteLine$Lisp concat ["file extension: ",extension] + -- test for extensions: html, htm, xml, xhtml, js, css + if extension = "html" then + contentType:String := "text/html" + else if extension = "htm" then + contentType:String := "text/html" + else if extension = "xml" then + contentType:String := "text/xml" + else if extension = "xhtml" then + contentType:String := "application/xhtml+xml" + else if extension = "js" then + contentType:String := "text/javascript" + else if extension = "css" then + contentType:String := "text/css" + else if extension = "png" then + contentType:String := "image/png" + else if extension = "jpg" then + contentType:String := "image/jpeg" + else if extension = "jpeg" then + contentType:String := "image/jpeg" +-- WriteLine$Lisp concat ["Content-Type: ",contentType] +-- WriteLine("getContentType end")$Lisp + contentType + +@ +<<AXSERV.dotabb>>= +"AXSERV" [color="#FF4488",href="bookvol10.4.pdf#nameddest=AXSERV"] +"STRING" [color="#88FF44",href="bookvol10.3.pdf#nameddest=STRING"] +"AXSERV" -> "STRING" + +@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Chapter B} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{package BEZOUT BezoutMatrix} +\pagehead{BezoutMatrix}{BEZOUT} +\pagepic{ps/v104bezoutmatrix.ps}{BEZOUT}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\end{tabular} + +<<package BEZOUT BezoutMatrix>>= +)abbrev package BEZOUT BezoutMatrix +++ Author: Clifton J. Williamson +++ Date Created: 2 August 1988 +++ Date Last Updated: 3 November 1993 +++ Basic Operations: bezoutMatrix, bezoutResultant, bezoutDiscriminant +++ Related Domains +++ Also See: +++ AMS Classifiactions: +++ Keywords: Bezout matrix, resultant, discriminant +++ Examples: +++ Reference: Knuth, The Art of Computer Programming, 2nd edition, +++ Vol. 2, p. 619, problem 12. +++ Description: +++ \spadtype{BezoutMatrix} contains functions for computing resultants and +++ discriminants using Bezout matrices. + +BezoutMatrix(R,UP,M,Row,Col): Exports == Implementation where + R : Ring + UP : UnivariatePolynomialCategory R + Row : FiniteLinearAggregate R + Col : FiniteLinearAggregate R + M : MatrixCategory(R,Row,Col) + I ==> Integer + lc ==> leadingCoefficient + + Exports ==> with + sylvesterMatrix: (UP,UP) -> M + ++ sylvesterMatrix(p,q) returns the Sylvester matrix for the two + ++ polynomials p and q. + bezoutMatrix: (UP,UP) -> M + ++ bezoutMatrix(p,q) returns the Bezout matrix for the two + ++ polynomials p and q. + + if R has commutative("*") then + bezoutResultant: (UP,UP) -> R + ++ bezoutResultant(p,q) computes the resultant of the two + ++ polynomials p and q by computing the determinant of a Bezout matrix. + + bezoutDiscriminant: UP -> R + ++ bezoutDiscriminant(p) computes the discriminant of a polynomial p + ++ by computing the determinant of a Bezout matrix. + + Implementation ==> add + + sylvesterMatrix(p,q) == + n1 := degree p; n2 := degree q; n := n1 + n2 + sylmat : M := new(n,n,0) + minR := minRowIndex sylmat; minC := minColIndex sylmat + maxR := maxRowIndex sylmat; maxC := maxColIndex sylmat + p0 := p + -- fill in coefficients of 'p' + while not zero? p0 repeat + coef := lc p0; deg := degree p0; p0 := reductum p0 + -- put bk = coef(p,k) in sylmat(minR + i,minC + i + (n1 - k)) + for i in 0..n2 - 1 repeat + qsetelt_!(sylmat,minR + i,minC + n1 - deg + i,coef) + q0 := q + -- fill in coefficients of 'q' + while not zero? q0 repeat + coef := lc q0; deg := degree q0; q0 := reductum q0 + for i in 0..n1-1 repeat + qsetelt_!(sylmat,minR + n2 + i,minC + n2 - deg + i,coef) + sylmat + + bezoutMatrix(p,q) == + -- This function computes the Bezout matrix for 'p' and 'q'. + -- See Knuth, The Art of Computer Programming, Vol. 2, p. 619, # 12. + -- One must have deg(p) >= deg(q), so the arguments are reversed + -- if this is not the case. + n1 := degree p; n2 := degree q; n := n1 + n2 + n1 < n2 => bezoutMatrix(q,p) + m1 : I := n1 - 1; m2 : I := n2 - 1; m : I := n - 1 + -- 'sylmat' will be a matrix consisting of the first n1 columns + -- of the standard Sylvester matrix for 'p' and 'q' + sylmat : M := new(n,n1,0) + minR := minRowIndex sylmat; minC := minColIndex sylmat + maxR := maxRowIndex sylmat; maxC := maxColIndex sylmat + p0 := p + -- fill in coefficients of 'p' + while not ground? p0 repeat + coef := lc p0; deg := degree p0; p0 := reductum p0 + -- put bk = coef(p,k) in sylmat(minR + i,minC + i + (n1 - k)) + -- for i = 0... + -- quit when i > m2 or when i + (n1 - k) > m1, whichever happens first + for i in 0..min(m2,deg - 1) repeat + qsetelt_!(sylmat,minR + i,minC + n1 - deg + i,coef) + q0 := q + -- fill in coefficients of 'q' + while not zero? q0 repeat + coef := lc q0; deg := degree q0; q0 := reductum q0 + -- put ak = coef(q,k) in sylmat(minR + n1 + i,minC + i + (n2 - k)) + -- for i = 0... + -- quit when i > m1 or when i + (n2 - k) > m1, whichever happens first + -- since n2 - k >= 0, we quit when i + (n2 - k) > m1 + for i in 0..(deg + n1 - n2 - 1) repeat + qsetelt_!(sylmat,minR + n2 + i,minC + n2 - deg + i,coef) + -- 'bezmat' will be the 'Bezout matrix' as described in Knuth + bezmat : M := new(n1,n1,0) + for i in 0..m2 repeat + -- replace A_i by (b_0 A_i + ... + b_{n_2-1-i} A_{n_2 - 1}) - + -- (a_0 B_i + ... + a_{n_2-1-i} B_{n_2-1}), as in Knuth + bound : I := n2 - i; q0 := q + while not zero? q0 repeat + deg := degree q0 + if (deg < bound) then + -- add b_deg A_{n_2 - deg} to the new A_i + coef := lc q0 + for k in minC..maxC repeat + c := coef * qelt(sylmat,minR + m2 - i - deg,k) + + qelt(bezmat,minR + m2 - i,k) + qsetelt_!(bezmat,minR + m2 - i,k,c) + q0 := reductum q0 + p0 := p + while not zero? p0 repeat + deg := degree p0 + if deg < bound then + coef := lc p0 + -- subtract a_deg B_{n_2 - deg} from the new A_i + for k in minC..maxC repeat + c := -coef * qelt(sylmat,minR + m - i - deg,k) + + qelt(bezmat,minR + m2 - i,k) + qsetelt_!(bezmat,minR + m2 - i,k,c) + p0 := reductum p0 + for i in n2..m1 repeat for k in minC..maxC repeat + qsetelt_!(bezmat,minR + i,k,qelt(sylmat,minR + i,k)) + bezmat + + if R has commutative("*") then + + bezoutResultant(f,g) == determinant bezoutMatrix(f,g) + + if R has IntegralDomain then + + bezoutDiscriminant f == + degMod4 := (degree f) rem 4 + (degMod4 = 0) or (degMod4 = 1) => + (bezoutResultant(f,differentiate f) exquo (lc f)) :: R + -((bezoutResultant(f,differentiate f) exquo (lc f)) :: R) + + else + + bezoutDiscriminant f == + lc f = 1 => + degMod4 := (degree f) rem 4 + (degMod4 = 0) or (degMod4 = 1) => + bezoutResultant(f,differentiate f) + -bezoutResultant(f,differentiate f) + error "bezoutDiscriminant: leading coefficient must be 1" + +@ +<<BEZOUT.dotabb>>= +"BEZOUT" [color="#FF4488",href="bookvol10.4.pdf#nameddest=BEZOUT"] +"PFECAT" [color="#4488FF",href="bookvol10.2.pdf#nameddest=PFECAT"] +"BEZOUT" -> "PFECAT" + +@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{package BRILL BrillhartTests} +\pagehead{BrillhartTests}{BRILL} +\pagepic{ps/v104brillharttests.ps}{BRILL}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\end{tabular} + +<<package BRILL BrillhartTests>>= +)abbrev package BRILL BrillhartTests +++ Author: Frederic Lehobey, James H. Davenport +++ Date Created: 28 June 1994 +++ Date Last Updated: 11 July 1997 +++ Basic Operations: brillhartIrreducible? +++ Related Domains: +++ Also See: +++ AMS Classifications: +++ Keywords: factorization +++ Examples: +++ References: +++ [1] John Brillhart, Note on Irreducibility Testing, +++ Mathematics of Computation, vol. 35, num. 35, Oct. 1980, 1379-1381 +++ [2] James Davenport, On Brillhart Irreducibility. To appear. +++ [3] John Brillhart, On the Euler and Bernoulli polynomials, +++ J. Reine Angew. Math., v. 234, (1969), pp. 45-64 + +BrillhartTests(UP): Exports == Implementation where + N ==> NonNegativeInteger + Z ==> Integer + UP: UnivariatePolynomialCate... [truncated message content] |
From: <gi...@ax...> - 2009-01-27 02:40:08
|
books/bookvol10.4.pamphlet | 3048 +++++++++++++++++++- books/ps/v104algebraicfunction.ps | 281 ++ books/ps/v104algfactor.ps | 281 ++ books/ps/v104anyfunctions1.ps | 281 ++ books/ps/v104axiomserver.ps | 281 ++ books/ps/v104bezoutmatrix.ps | 281 ++ books/ps/v104brillharttests.ps | 281 ++ ...characteristicpolynomialinmonogenicalalgebra.ps | 281 ++ books/ps/v104finitelinearaggregatefunctions2.ps | 281 ++ books/ps/v104finitesetaggregatefunctions2.ps | 281 ++ books/ps/v104generalizedmultivariatefactorize.ps | 281 ++ books/ps/v104inneralgfactor.ps | 281 ++ books/ps/v104mergething.ps | 281 ++ books/ps/v104mpolycatpolyfactorizer.ps | 281 ++ books/ps/v104mpolycatrationalfunctionfactorizer.ps | 281 ++ books/ps/v104mrationalfactorize.ps | 281 ++ books/ps/v104nonefunctions1.ps | 281 ++ books/ps/v104norminmonogenicalgebra.ps | 281 ++ books/ps/v104onedimensionalarrayfunctions2.ps | 281 ++ books/ps/v104operationsquery.ps | 281 ++ books/ps/v104primitivearrayfunctions2.ps | 281 ++ books/ps/v104rationalfunctionfactor.ps | 281 ++ books/ps/v104rationalfunctionfactorizer.ps | 281 ++ books/ps/v104realsolvepackage.ps | 281 ++ books/ps/v104saerationalfunctionalgfactor.ps | 281 ++ books/ps/v104simplealgebraicextensionalgfactor.ps | 281 ++ books/ps/v104supfractionfactorizer.ps | 281 ++ changelog | 58 + src/algebra/Makefile.pamphlet | 23 +- src/algebra/acplot.spad.pamphlet | 265 -- src/algebra/aggcat2.spad.pamphlet | 231 -- src/algebra/algcat.spad.pamphlet | 148 - src/algebra/algfact.spad.pamphlet | 368 --- src/algebra/algfunc.spad.pamphlet | 332 --- src/algebra/allfact.spad.pamphlet | 486 ---- src/algebra/alql.spad.pamphlet | 289 -- src/algebra/any.spad.pamphlet | 144 - src/algebra/array1.spad.pamphlet | 175 -- src/algebra/axserver.spad.pamphlet | 747 ----- src/algebra/bezout.spad.pamphlet | 211 -- src/algebra/brill.spad.pamphlet | 165 -- src/axiom-website/download.html | 25 + src/axiom-website/patches.html | 4 + 43 files changed, 10444 insertions(+), 3581 deletions(-) New commits: commit 45b25777c67aa2fac45f22389bf396c57612d576 Author: root <root@chris.localdomain> Date: Sun Jan 25 19:38:23 2009 -0500 20090126 tpd src/axiom-website/patches.html 20090126.01.tpd.patch 20090126 tpd src/axiom-website/download.html add binaries commit 3eb1e20ab1bcdab45fcee2772167a009490cb9f6 Author: root <root@chris.localdomain> Date: Sun Jan 25 19:21:57 2009 -0500 20080125 tpd src/axiom-website/patches.html 20090125.01.tpd.patch 20090125 tpd books/bookvol10.4 add packages 20090125 tpd src/algebra/Makefile remove empty spad files 20090125 tpd src/algebra/brill.spad removed 20090125 tpd src/algebra/bezout.spad removed 20090125 tpd src/algebra/axserver.spad removed 20090125 tpd src/algebra/array1.spad removed 20090125 tpd src/algebra/any.spad removed 20090125 tpd src/algebra/alql.spad removed 20090125 tpd src/algebra/allfact.spad removed 20090125 tpd src/algebra/algfunc.spad removed 20090125 tpd src/algebra/algfact.spad removed 20090125 tpd src/algebra/algcat.spad removed 20090125 tpd src/algebra/aggcat2.spad removed 20090125 tpd src/algebra/acplot.spad removed 20080125 tpd books/ps/v104mpolycatrationalfunctionfactorizer.ps 20090125 tpd books/ps/v104mpolycatpolyfactorizer.ps added 20090125 tpd books/ps/v104supfractionfactorizer.ps added 20090125 tpd books/ps/v104simplealgebraicextensionalgfactor.ps added 20090125 tpd books/ps/v104saerationalfunctionalgfactor.ps added 20090125 tpd books/ps/v104realsolvepackage.ps added 20090125 tpd books/ps/v104rationalfunctionfactorizer.ps added 20090125 tpd books/ps/v104rationalfunctionfactor.ps added 20090125 tpd books/ps/v104primitivearrayfunctions2.ps added 20090125 tpd books/ps/v104operationsquery.ps added 20090125 tpd books/ps/v104onedimensionalarrayfunctions2.ps added 20090125 tpd books/ps/v104norminmonogenicalgebra.ps added 20090125 tpd books/ps/v104nonefunctions1.ps added 20090125 tpd books/ps/v104mrationalfactorize.ps added 20090125 tpd books/ps/v104mergething.ps added 20090125 tpd books/ps/v104inneralgfactor.ps added 20090125 tpd books/ps/v104generalizedmultivariatefactorize.ps added 20090125 tpd books/ps/v104finitesetaggregatefunctions2.ps added 20090125 tpd books/ps/v104finitelinearaggregatefunctions2.ps added 20090125 tpd books/ps/v104characteristicpolynomialinmonogenicalalgebra.ps added 20090125 tpd books/ps/v104brillharttests.ps added 20090125 tpd books/ps/v104bezoutmatrix.ps added 20090125 tpd books/ps/v104axiomserver.ps added 20090125 tpd books/ps/v104anyfunctions1.ps added 20090125 tpd books/ps/v104algfactor.ps added 20090125 tpd books/ps/v104algebraicfunction.ps added 20090125 tpd src/algebra/brill.spad move package to bookvol10.4 20090125 tpd src/algebra/bezout.spad move package to bookvol10.4 20090125 tpd src/algebra/axserver.spad move package to bookvol10.4 20090125 tpd src/algebra/array1.spad move package to bookvol10.4 20090125 tpd src/algebra/any.spad move package to bookvol10.4 20090125 tpd src/algebra/alql.spad move package to bookvol10.4 20090125 tpd src/algebra/allfact.spad move package to bookvol10.4 20090125 tpd src/algebra/algfunc.spad move package to bookvol10.4 20090125 tpd src/algebra/algfact.spad move package to bookvol10.4 20090125 tpd src/algebra/algcat.spad move package to bookvol10.4 20090125 tpd src/algebra/aggcat2.spad move package to bookvol10.4 20090125 tpd src/algebra/acplot.spad move package to bookvol10.4 |
From: <da...@us...> - 2009-01-25 06:05:52
|
Revision: 1090 http://axiom.svn.sourceforge.net/axiom/?rev=1090&view=rev Author: daly Date: 2009-01-25 06:05:48 +0000 (Sun, 25 Jan 2009) Log Message: ----------- 20090124 tpd src/axiom-website/download.html update binary download list 20090124 tpd Makefile add Makefile.fedora10 added 20090124 tpd Makefile add Makefile.vector added Modified Paths: -------------- trunk/axiom/Makefile.pamphlet trunk/axiom/src/axiom-website/download.html trunk/axiom/src/axiom-website/patches.html Modified: trunk/axiom/Makefile.pamphlet =================================================================== --- trunk/axiom/Makefile.pamphlet 2009-01-22 21:05:42 UTC (rev 1089) +++ trunk/axiom/Makefile.pamphlet 2009-01-25 06:05:48 UTC (rev 1090) @@ -1276,6 +1276,67 @@ <<clean>> @ +\subsection{Makefile.vector} +Annoyingly enough it seems that GCL uses a default extension of .lsp +rather than .lisp so we add the [[LISP]] variable here. We need to +depend on the default extension behavior because the system build +will load either the interpreted or compiled form of a file depending +on which is available. This varies at different stages of the build. + +It turns out that the standard GCL OPTS does not compile with the +GCL 2.6.8pre version. We changed it from +\begin{verbatim} +@<<GCLOPTS>> +\end{verbatim} +to read +\begin{verbatim} +@<<GCLOPTS-LOCBFD>> +\end{verbatim} +<<Makefile.vector>>= +# System dependent Makefile for the Intel/Linux platform +# Platform variable +PLF=LINUXplatform +# C compiler flags +CCF="-O2 -fno-strength-reduce -Wall -D_GNU_SOURCE -D${PLF} -I/usr/X11/include" +# Loader flags +LDF=" -L/usr/X11R6/lib ${XLIB}/libXpm.a " +# C compiler to use +CC=gcc +AWK=gawk +RANLIB=ranlib +TOUCH=touch +TAR=tar +AXIOMXLROOT=${AXIOM}/compiler +O=o +BYE=bye +LISP=lsp +DAASE=${SRC}/share +# where the libXpm.a library lives +XLIB=/usr/X11R6/lib +<<GCLOPTS-LOCBFD>> +<<SRCDIRS>> +PATCH=patch + +ENV=PLF=${PLF} CCF=${CCF} LDF=${LDF} CC=${CC} AWK=${AWK} RANLIB=${RANLIB} \ + TOUCH=${TOUCH} TAR=${TAR} AXIOMXLROOT=${AXIOMXLROOT} O=${O} BYE=${BYE} \ + LISP=${LISP} DAASE=${DAASE} XLIB=${XLIB} GCLOPTS=${GCLOPTS} \ + SRCDIRS=${SRCDIRS} PATCH=${PATCH} + +all: rootdirs noweb srcsetup lspdir srcdir + @echo 45 Makefile.linux called + @echo 46 Environment : ${ENV} + @echo 47 finished system build on `date` | tee >lastBuildDate + +<<rootdirs>> +<<noweb>> +<<literate commands>> +<<srcsetup>> +<<src>> +<<lsp>> +<<document>> +<<clean>> + +@ \subsection{Makefile.redhat72} <<Makefile.redhat72>>= # System dependent Makefile for the Intel/Linux platform @@ -2007,6 +2068,81 @@ <<clean>> @ +\subsection{Makefile.fedora10} +On Fedora Core 10 we cannot use the line +\begin{verbatim} + ${XLIB}/libXpm.a +\end{verbatim} +to link to the Xpm libraries. Instead We need to use +\begin{verbatim} + -l Xpm +\end{verbatim} +These are added onto the end of the LDF variable. + +Annoyingly enough it seems that GCL uses a default extension of .lsp +rather than .lisp so we add the [[LISP]] variable here. We need to +depend on the default extension behavior because the system build +will load either the interpreted or compiled form of a file depending +on which is available. This varies at different stages of the build. + +It turns out that the standard GCL OPTS does not compile with the +GCL 2.6.8pre version. We changed it from +\begin{verbatim} +@<<GCLOPTS>> +\end{verbatim} +to read +\begin{verbatim} +@<<GCLOPTS-LOCBFD>> +\end{verbatim} + +GCL-2.6.8pre2 will not build successfully on fedora core 10 +so we need to downgrade the GCLVERSION. +<<Makefile.fedora10>>= +#GCLVERSION=gcl-2.6.8pre +# System dependent Makefile for the Intel/Linux platform +# Platform variable +PLF=LINUXplatform +# C compiler flags +CCF="-O2 -fno-strength-reduce -Wall -D_GNU_SOURCE -D${PLF} -I/usr/X11/include" +# Loader flags +LDF=" -L/usr/X11R6/lib -l Xpm " +# C compiler to use +CC=gcc +AWK=gawk +RANLIB=ranlib +TOUCH=touch +TAR=tar +AXIOMXLROOT=${AXIOM}/compiler +O=o +BYE=bye +LISP=lsp +DAASE=${SRC}/share +# where the libXpm.a library lives +XLIB=/usr/X11R6/lib +<<GCLOPTS-LOCBFD>> +<<SRCDIRS>> +PATCH=patch + +ENV=PLF=${PLF} CCF=${CCF} LDF=${LDF} CC=${CC} AWK=${AWK} RANLIB=${RANLIB} \ + TOUCH=${TOUCH} TAR=${TAR} AXIOMXLROOT=${AXIOMXLROOT} O=${O} BYE=${BYE} \ + LISP=${LISP} DAASE=${DAASE} XLIB=${XLIB} GCLOPTS=${GCLOPTS} \ + SRCDIRS=${SRCDIRS} PATCH=${PATCH} + +all: rootdirs noweb srcsetup lspdir srcdir + @echo 45 Makefile.linux called + @echo 46 Environment : ${ENV} + @echo 47 finished system build on `date` | tee >lastBuildDate + +<<rootdirs>> +<<noweb>> +<<literate commands>> +<<srcsetup>> +<<src>> +<<lsp>> +<<document>> +<<clean>> + +@ \subsection{Makefile.gentoo} Annoyingly enough it seems that GCL uses a default extension of .lsp rather than .lisp so we add the [[LISP]] variable here. We need to Modified: trunk/axiom/src/axiom-website/download.html =================================================================== --- trunk/axiom/src/axiom-website/download.html 2009-01-22 21:05:42 UTC (rev 1089) +++ trunk/axiom/src/axiom-website/download.html 2009-01-25 06:05:48 UTC (rev 1090) @@ -126,11 +126,11 @@ SYSNAME </font> </td> - <td align="center"> + <!--td align="center"> <font face="Helvetica, Arial, sans-serif" size="+1"> Nov 2007 </font> - </td> + </td--> <td align="center"> <font face="Helvetica, Arial, sans-serif" size="+1"> Jan 2008 @@ -161,6 +161,11 @@ Nov 2008 </font> </td> + <td align="center"> + <font face="Helvetica, Arial, sans-serif" size="+1"> + Jan 2009 + </font> + </td> </tr> <tr> @@ -169,10 +174,10 @@ debian </font> </td> - <td align="center"> + <!--td align="center"> <font face="Helvetica, Arial, sans-serif" size="+1"> </font> - </td> + </td--> <td align="center"> <font face="Helvetica, Arial, sans-serif" size="+1"> <a href="downloads/silver-jan2008-src.tgz">src</a> @@ -207,6 +212,12 @@ <a href="downloads/axiom-debian-nov2008-bin.tgz">bin</a> </font> </td> + <td align="center"> + <font face="Helvetica, Arial, sans-serif" size="+1"> + <a href="downloads/axiom-jan2009-src.tgz">src</a> + <a href="downloads/axiom-debian-jan2009-bin.tgz">bin</a> + </font> + </td> </tr> <tr> @@ -215,10 +226,10 @@ Doyen </font> </td> - <td align="center"> + <!--td align="center"> <font face="Helvetica, Arial, sans-serif" size="+1"> </font> - </td> + </td--> <td align="center"> <font face="Helvetica, Arial, sans-serif" size="+1"> <a href="downloads/silver-jan2008-src.tgz">src</a> @@ -258,10 +269,10 @@ Doyen Thumbdrive </font> </td> - <td align="center"> + <!--td align="center"> <font face="Helvetica, Arial, sans-serif" size="+1"> </font> - </td> + </td--> <td align="center"> <font face="Helvetica, Arial, sans-serif" size="+1"> </font> @@ -295,12 +306,12 @@ fedora5 </font> </td> - <td align="center"> + <!--td align="center"> <font face="Helvetica, Arial, sans-serif" size="+1"> <a href="downloads/silver-nov2007-src.tgz">src</a> <a href="downloads/silver-fedora5-nov182007-bin.tgz">bin</a> </font> - </td> + </td--> <td align="center"> <font face="Helvetica, Arial, sans-serif" size="+1"> <a href="downloads/silver-jan2008-src.tgz">src</a> @@ -345,12 +356,12 @@ fedora6 </font> </td> - <td align="center"> + <!--td align="center"> <font face="Helvetica, Arial, sans-serif" size="+1"> <a href="downloads/silver-nov2007-src.tgz">src</a> <a href="downloads/silver-fedora6-nov182007-bin.tgz">bin</a> </font> - </td> + </td--> <td align="center"> <font face="Helvetica, Arial, sans-serif" size="+1"> <a href="downloads/silver-jan2008-src.tgz">src</a> @@ -387,6 +398,12 @@ <a href="downloads/axiom-fedora6-nov2008-bin.tgz">bin</a> </font> </td> + <td align="center"> + <font face="Helvetica, Arial, sans-serif" size="+1"> + <a href="downloads/axiom-jan2009-src.tgz">src</a> + <a href="downloads/axiom-fedora6-jan2009-bin.tgz">bin</a> + </font> + </td> </tr> <tr> @@ -395,10 +412,10 @@ fedora7 </font> </td> - <td align="center"> + <!--td align="center"> <font face="Helvetica, Arial, sans-serif" size="+1"> </font> - </td> + </td--> <td align="center"> <font face="Helvetica, Arial, sans-serif" size="+1"> <a href="downloads/silver-jan2008-src.tgz">src</a> @@ -435,6 +452,12 @@ <a href="downloads/axiom-fedora7-nov2008-bin.tgz">bin</a> </font> </td> + <td align="center"> + <font face="Helvetica, Arial, sans-serif" size="+1"> + <a href="downloads/axiom-jan2009-src.tgz">src</a> + <a href="downloads/axiom-fedora7-jan2009-bin.tgz">bin</a> + </font> + </td> </tr> <tr> @@ -443,12 +466,12 @@ fedora8 </font> </td> - <td align="center"> + <!--td align="center"> <font face="Helvetica, Arial, sans-serif" size="+1"> <a href="downloads/silver-nov2007-src.tgz">src</a> <a href="downloads/silver-fedora8-nov182007-bin.tgz">bin</a> </font> - </td> + </td--> <td align="center"> <font face="Helvetica, Arial, sans-serif" size="+1"> <a href="downloads/silver-jan2008-src.tgz">src</a> @@ -485,6 +508,12 @@ <a href="downloads/axiom-fedora8-nov2008-bin.tgz">bin</a> </font> </td> + <td align="center"> + <font face="Helvetica, Arial, sans-serif" size="+1"> + <a href="downloads/axiom-jan2009-src.tgz">src</a> + <a href="downloads/axiom-fedora8-jan2009-bin.tgz">bin</a> + </font> + </td> </tr> <tr> @@ -493,10 +522,10 @@ fedora8-64 </font> </td> - <td align="center"> + <!--td align="center"> <font face="Helvetica, Arial, sans-serif" size="+1"> </font> - </td> + </td--> <td align="center"> <font face="Helvetica, Arial, sans-serif" size="+1"> </font> @@ -534,10 +563,10 @@ fedora9 </font> </td> - <td align="center"> + <!--td align="center"> <font face="Helvetica, Arial, sans-serif" size="+1"> </font> - </td> + </td--> <td align="center"> <font face="Helvetica, Arial, sans-serif" size="+1"> </font> @@ -570,20 +599,69 @@ <a href="downloads/axiom-fedora9-nov2008-bin.tgz">bin</a> </font> </td> + <td align="center"> + <font face="Helvetica, Arial, sans-serif" size="+1"> + <a href="downloads/axiom-jan2009-src.tgz">src</a> + <a href="downloads/axiom-fedora9-jan2009-bin.tgz">bin</a> + </font> + </td> </tr> + <tr> <td align="left"> <font face="Helvetica, Arial, sans-serif" size="+1"> - macosxppc + fedora10 </font> </td> + <!--td align="center"> + <font face="Helvetica, Arial, sans-serif" size="+1"> + </font> + </td--> <td align="center"> <font face="Helvetica, Arial, sans-serif" size="+1"> </font> </td> <td align="center"> <font face="Helvetica, Arial, sans-serif" size="+1"> + </font> + </td> + <td align="center"> + <font face="Helvetica, Arial, sans-serif" size="+1"> + </font> + </td> + <td align="center"> + <font face="Helvetica, Arial, sans-serif" size="+1"> + </font> + </td> + <td align="center"> + <font face="Helvetica, Arial, sans-serif" size="+1"> + </font> + </td> + <td align="center"> + <font face="Helvetica, Arial, sans-serif" size="+1"> + </font> + </td> + <td align="center"> + <font face="Helvetica, Arial, sans-serif" size="+1"> + <a href="downloads/axiom-jan2009-src.tgz">src</a> + <a href="downloads/axiom-fedora10-jan2009-bin.tgz">bin</a> + </font> + </td> + </tr> + + <tr> + <td align="left"> + <font face="Helvetica, Arial, sans-serif" size="+1"> + macosxppc + </font> + </td> + <!--td align="center"> + <font face="Helvetica, Arial, sans-serif" size="+1"> + </font> + </td--> + <td align="center"> + <font face="Helvetica, Arial, sans-serif" size="+1"> <a href="downloads/silver-jan2008-src.tgz">src</a> <a href="downloads/silver-macosxppc-jan2008-bin.tgz">bin</a> </font> @@ -618,10 +696,10 @@ opensuse </font> </td> - <td align="center"> + <!--td align="center"> <font face="Helvetica, Arial, sans-serif" size="+1"> </font> - </td> + </td--> <td align="center"> <font face="Helvetica, Arial, sans-serif" size="+1"> <a href="downloads/silver-jan2008-src.tgz">src</a> @@ -657,6 +735,12 @@ <a href="downloads/axiom-nov2008-src.tgz">src</a> </font> </td> + <td align="center"> + <font face="Helvetica, Arial, sans-serif" size="+1"> + <a href="downloads/axiom-jan2009-src.tgz">src</a> + <a href="downloads/axiom-opensuse-jan2009-bin.tgz">bin</a> + </font> + </td> </tr> <tr> @@ -665,10 +749,10 @@ redhat72 </font> </td> - <td align="center"> + <!--td align="center"> <font face="Helvetica, Arial, sans-serif" size="+1"> </font> - </td> + </td--> <td align="center"> <font face="Helvetica, Arial, sans-serif" size="+1"> <a href="downloads/silver-jan2008-src.tgz">src</a> @@ -713,10 +797,10 @@ redhat9 </font> </td> - <td align="center"> + <!--td align="center"> <font face="Helvetica, Arial, sans-serif" size="+1"> </font> - </td> + </td--> <td align="center"> <font face="Helvetica, Arial, sans-serif" size="+1"> <a href="downloads/silver-jan2008-src.tgz">src</a> @@ -753,6 +837,12 @@ <a href="downloads/axiom-redhat9-nov2008-bin.tgz">bin</a> </font> </td> + <td align="center"> + <font face="Helvetica, Arial, sans-serif" size="+1"> + <a href="downloads/axiom-jan2009-src.tgz">src</a> + <a href="downloads/axiom-redhat9-jan2009-bin.tgz">bin</a> + </font> + </td> </tr> <tr> @@ -761,10 +851,10 @@ ubuntu </font> </td> - <td align="center"> + <!--td align="center"> <font face="Helvetica, Arial, sans-serif" size="+1"> </font> - </td> + </td--> <td align="center"> <font face="Helvetica, Arial, sans-serif" size="+1"> <a href="downloads/silver-jan2008-src.tgz">src</a> @@ -801,6 +891,12 @@ <a href="downloads/axiom-ubuntu-nov2008-bin.tgz">bin</a> </font> </td> + <td align="center"> + <font face="Helvetica, Arial, sans-serif" size="+1"> + <a href="downloads/axiom-jan2009-src.tgz">src</a> + <a href="downloads/axiom-ubuntu-jan2009-bin.tgz">bin</a> + </font> + </td> </tr> <tr> @@ -809,10 +905,10 @@ ubuntu64 </font> </td> - <td align="center"> + <!--td align="center"> <font face="Helvetica, Arial, sans-serif" size="+1"> </font> - </td> + </td--> <td align="center"> <font face="Helvetica, Arial, sans-serif" size="+1"> </font> @@ -847,6 +943,10 @@ vector </font> </td> + <!--td align="center"> + <font face="Helvetica, Arial, sans-serif" size="+1"> + </font> + </td--> <td align="center"> <font face="Helvetica, Arial, sans-serif" size="+1"> </font> @@ -869,15 +969,16 @@ </td> <td align="center"> <font face="Helvetica, Arial, sans-serif" size="+1"> + <a href="downloads/axiom-vector-nov2008-bin.tgz">bin</a> </font> </td> <td align="center"> <font face="Helvetica, Arial, sans-serif" size="+1"> - <a href="downloads/axiom-vector-nov2008-bin.tgz">bin</a> + <a href="downloads/axiom-jan2009-src.tgz">src</a> + <a href="downloads/axiom-vector-jan2009-bin.tgz">bin</a> </font> </td> </tr> - </tbody> </table> @@ -1036,7 +1137,7 @@ apt-get install libxpm-dev libxt-dev po-debconf x-dev x11proto-core-dev apt-get install x11proto-input-dev x11proto-kb-dev x11proto-xext-dev apt-get install xtrans-dev libncurses5-dev libreadline5-dev libsm-dev -apt-get install libstdc++6-4.1-dev libx11-dev gawk +apt-get install libstdc++6-4.1-dev libx11-dev gawk texlive-pstricks cvs -z3 -d:pserver:ano...@ax...:/cvsroot/axiom co -P axiom cd axiom export AXIOM=`pwd`/mnt/debian Modified: trunk/axiom/src/axiom-website/patches.html =================================================================== --- trunk/axiom/src/axiom-website/patches.html 2009-01-22 21:05:42 UTC (rev 1089) +++ trunk/axiom/src/axiom-website/patches.html 2009-01-25 06:05:48 UTC (rev 1090) @@ -901,5 +901,7 @@ <a name="latest"/> In process, not yet released<br/><br/> <hr> +<a href="patches/20090124.01.tpd.patch">20090124.01.tpd.patch</a> +download.html update binary download page<br/> </body> </html> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <gi...@ax...> - 2009-01-25 06:04:36
|
Makefile | 2 +- Makefile.pamphlet | 138 ++- books/bookvol7.1.pamphlet | 226 ++ books/ps/v71jan2009.eps | 2242 +++++++++++++++++ books/ps/v71releasenotes.eps | 4604 +++++++++++++++++++---------------- changelog | 7 + src/axiom-website/download.html | 169 +- src/axiom-website/patches.html | 15 +- src/axiom-website/releasenotes.html | 221 ++ 9 files changed, 5528 insertions(+), 2096 deletions(-) New commits: commit f2022b753b2ba15b742c851746e6098801d1b542 Author: root <root@bob.(none)> Date: Sun Jan 25 01:03:05 2009 -0500 20090124 tpd src/axiom-website/download.html update binary download list 20090124 tpd Makefile add Makefile.fedora10 added 20090124 tpd Makefile add Makefile.vector added commit 75109caa5acb13dad7bd1190b992a27374a14a72 Author: root <root@bob.(none)> Date: Thu Jan 22 15:17:12 2009 -0500 20090122 tpd src/axiom-website/patches.html 20080122.01.tpd.patch 20090122 tpd src/axiom-website/releasenotes.html add January releasenotes 20090122 tpd books/ps/v71releasenotes.eps updated 20090122 tpd books/ps/v71jan2009.eps added 20090122 tpd books/bookvol7.1 add release notes 20090122 tpd Makefile.pamphlet VERSION January 2009 20090122 tpd Makefile VERSION January 2009 |
From: <da...@us...> - 2009-01-22 21:06:02
|
Revision: 1089 http://axiom.svn.sourceforge.net/axiom/?rev=1089&view=rev Author: daly Date: 2009-01-22 21:05:42 +0000 (Thu, 22 Jan 2009) Log Message: ----------- January 2009 fixes Modified Paths: -------------- trunk/axiom/books/bookvol10.1.pamphlet trunk/axiom/books/bookvol4.pamphlet trunk/axiom/src/algebra/aggcat2.spad.pamphlet trunk/axiom/src/algebra/algfact.spad.pamphlet trunk/axiom/src/algebra/alql.spad.pamphlet trunk/axiom/src/algebra/carten.spad.pamphlet trunk/axiom/src/algebra/clip.spad.pamphlet trunk/axiom/src/algebra/cmplxrt.spad.pamphlet trunk/axiom/src/algebra/combinat.spad.pamphlet trunk/axiom/src/algebra/cont.spad.pamphlet trunk/axiom/src/algebra/coordsys.spad.pamphlet trunk/axiom/src/algebra/cra.spad.pamphlet trunk/axiom/src/algebra/crfp.spad.pamphlet Added Paths: ----------- trunk/axiom/books/ps/lightbayou.png Modified: trunk/axiom/books/bookvol10.1.pamphlet =================================================================== --- trunk/axiom/books/bookvol10.1.pamphlet 2009-01-22 20:47:36 UTC (rev 1088) +++ trunk/axiom/books/bookvol10.1.pamphlet 2009-01-22 21:05:42 UTC (rev 1089) @@ -1998,434 +1998,6 @@ case. Again, the details are quite technical and can be found in \cite{2,12,13}. -\chapter{Singular Value Decomposition} -\section{Singular Value Decomposition Tutorial} - -When you browse standard web sources like Wikipedia to learn about -Singular Value Decomposition or SVD you find many equations, but -not an intuitive explanation of what it is or how it works. SVD -is a way of factoring matrices into a series of linear approximations -that expose the underlying structure of the matrix. Two important -properties are that the linear factoring is exact and optimal. Exact -means that the series of linear factors, added together, exactly -equal the original matrix. Optimal means that, for the standard -means of measuring matrix similarity (the Frobenius norm), these -factors give the best possible linear approximation at each step -in the series. - -SVD is extraordinarily useful and has many applications such as -data analysis, signal processing, pattern recognition, image -compression, weather prediction, and Latent Sematic Analysis or -LSA (also referred to as Latent Semantic Indexing). Why is SVD -so useful and how does it work? - -As a simple example, let's look at golf scores. Suppose Phil, -Tiger, and Vijay play together for 9 holes and they each make -par on every hole. Their scorecard, which can also be viewed as -a (hole x player) matrix might look like this. - -\begin{tabular}{|c|c|c|c|c|} -Hole & Par & Phil & Tiger & Vijay\\ -\hline -1 & 4 & 4 & 4 & 4\\ -2 & 5 & 5 & 5 & 5\\ -3 & 3 & 3 & 3 & 3\\ -4 & 4 & 4 & 4 & 4\\ -5 & 4 & 4 & 4 & 4\\ -6 & 4 & 4 & 4 & 4\\ -7 & 4 & 4 & 4 & 4\\ -8 & 3 & 3 & 3 & 3\\ -9 & 5 & 5 & 5 & 5\\ -\end{tabular} - -Let's look at the problem of trying to predict what score each -player will make on a given hole. One idea is give each hole a -HoleDifficulty factor, and each player a PlayerAbility factor. -The actual score is predicted by multiplying these two factors -together. - -PredictedScore = HoleDifficulty * PlayerAbility - -For the first attempt, let's make the HoleDifficulty be the par -score for the hole, and let's make the player ability equal to 1. -So on the first hole, which is par 4, we would expect a player -of ability 1 to get a score of 4. - -PredictedScore = HoleDifficulty * PlayerAbility = 4 * 1 = 4 - -For our entire scorecard or matrix, all we have to do is multiply -the PlayerAbility (assumed to be 1 for all players) by the -HoleDifficulty (ranges from par 3 to par 5) and we can exactly -predict all the scores in our example. - -In fact, this is the one dimensional (1-D) SVD factorization of -the scorecard. We can represent our scorecard or matrix as the -product of two vectors, the HoleDifficulty vector and the -PlayerAbility vector. To predict any score, simply multiply the -appropriate HoleDifficulty factor by the appropriate PlayerAbility -factor. Following normal vector multiplication rules, we can - -generate the matrix of scores by multiplying the HoleDifficulty -vector by the PlayerAbility vector, according to the following -equation. - -\begin{tabular}{|c|c|c|} -Phil & Tiger & Vijay\\ -\hline -4 & 4 & 4\\ -5 & 5 & 5\\ -3 & 3 & 3\\ -4 & 4 & 4\\ -4 & 4 & 4\\ -4 & 4 & 4\\ -4 & 4 & 4\\ -3 & 3 & 3\\ -5 & 5 & 5\\ -\end{tabular} - = -\begin{tabular}{|c|} -4\\ -5\\ -3\\ -4\\ -4\\ -4\\ -4\\ -3\\ -5\\ -\end{tabular} - * -\begin{tabular}{|c|c|c|} -Phil & Tiger & Vijay\\ -1 & 1 & 1\\ -\end{tabular} - -which is HoleDifficulty * PlayerAbility - -Mathematicians like to keep everything orderly, so the convention -is that all vectors should be scaled so they have length 1. For -example, the PlayerAbility vector is modified so that the sum of -the squares of its elements add to 1, instead of the current -$12 + 12 + 12 = 3$. To do this, we have to divide each element by -the square root of 3, so that when we square it, it becomes -and the three elements add to 1. Similarly, we have to divide -each HoleDifficulty element by the square root of 148. The square -root of 3 times the square root of 148 is our scaling factor 21.07. -The complete 1-D SVD factorization (to 2 decimal places) is: - -\begin{tabular}{|c|c|c|} -Phil & Tiger & Vijay\\ -\hline -4 & 4 & 4\\ -5 & 5 & 5\\ -3 & 3 & 3\\ -4 & 4 & 4\\ -4 & 4 & 4\\ -4 & 4 & 4\\ -4 & 4 & 4\\ -3 & 3 & 3\\ -5 & 5 & 5\\ -\end{tabular} - = -\begin{tabular}{|c|} -0.33\\ -0.41\\ -0.25\\ -0.33\\ -0.33\\ -0.33\\ -0.33\\ -0.25\\ -0.41\\ -\end{tabular} - * -\begin{tabular}{|c|} -21.07\\ -\end{tabular} - * -\begin{tabular}{|c|c|c|} -Phil & Tiger & Vijay\\ -\hline -0.58 & 0.58 & 0.58\\ -\end{tabular} - -which is HoleDifficulty * ScaleFactor * PlayerAbility - -Our HoleDifficulty vector, that starts with 0.33, is called the -Left Singular Vector. The ScaleFactor is the Singular Value, and -our PlayerAbility vector, that starts with 0.58 is the Right -Singular Vector. If we represent these 3 parts exactly, and multiply -them together, we get the exact original scores. This means our -matrix is a rank 1 matrix, another way of saying it has a simple -and predictable pattern. - -More complicated matrices cannot be completely predicted just by -using one set of factors as we have done. In that case, we have to -introduce a second set of factors to refine our predictions. To do -that, we subtract our predicted scores from the actual scores, -getting the residual scores. Then we find a second set of -HoleDifficulty2 and PlayerAbility2 numbers that best predict the -residual scores. - -Rather than guessing HoleDifficulty and PlayerAbility factors and -subtracting predicted scores, there exist powerful algorithms than -can calculate SVD factorizations for you. Let's look at the actual -scores from the first 9 holes of the 2007 Players Championship as -played by Phil, Tiger, and Vijay. - -\begin{tabular}{|c|c|c|c|c|} -Hole & Par & Phil & Tiger & Vijay\\ -\hline -1 & 4 & 4 & 4 & 5\\ -2 & 5 & 4 & 5 & 5\\ -3 & 3 & 3 & 3 & 2\\ -4 & 4 & 4 & 5 & 4\\ -5 & 4 & 4 & 4 & 4\\ -6 & 4 & 3 & 5 & 4\\ -7 & 4 & 4 & 4 & 3\\ -8 & 3 & 2 & 4 & 4\\ -9 & 5 & 5 & 5 & 5\\ -\end{tabular} - -The 1-D SVD factorization of the scores is shown below. To make -this example easier to understand, I have incorporated the ScaleFactor -into the PlayerAbility and HoleDifficulty vectors so we can ignore -the ScaleFactor for this example. - -\begin{tabular}{|c|c|c|} -Phil & Tiger & Vijay\\ -\hline -3.95 & 4.64 & 4.34\\ -4.27 & 5.02 & 4.69\\ -2.42 & 2.85 & 2.66\\ -3.97 & 4.67 & 4.36\\ -3.64 & 4.28 & 4.00\\ -3.69 & 4.33 & 4.05\\ -3.33 & 3.92 & 3.66\\ -3.08 & 3.63 & 3.39\\ -4.55 & 5.35 & 5.00\\ -\end{tabular} - = -\begin{tabular}{|c|} -4.34\\ -4.69\\ -2.66\\ -4.36\\ -4.00\\ -4.05\\ -3.66\\ -3.39\\ -5.00\\ -\end{tabular} - * -\begin{tabular}{|c|c|c|} -Phil & Tiger & Vijay\\ -0.91 & 1.07 & 1.00\\ -\end{tabular} - -which is HoleDifficulty * PlayerAbility - -Notice that the HoleDifficulty factor is almost the average of that -hole for the 3 players. For example hole 5, where everyone scored 4, -does have a factor of 4.00. However hole 6, where the average score -is also 4, has a factor of 4.05 instead of 4.00. Similarly, the -PlayerAbility is almost the percentage of par that the player -achieved, For example Tiger shot 39 with par being 36, and -$39/36 = 1.08$ which is almost his PlayerAbility factor (for these -9 holes) of 1.07. - -Why don't the hole averages and par percentages exactly match the -1-D SVD factors? The answer is that SVD further refines those -numbers in a cycle. For example, we can start by assuming -HoleDifficulty is the hole average and then ask what PlayerAbility -best matches the scores, given those HoleDifficulty numbers? Once -we have that answer we can go back and ask what HoleDifficulty best -matches the scores given those PlayerAbility numbers? We keep -iterating this way until we converge to a set of factors that best -predict the score. SVD shortcuts this process and immediately give -us the factors that we would have converged to if we carried out -the process. - -One very useful property of SVD is that it always finds the optimal -set of factors that best predict the scores, according to the -standard matrix similarity measure (the Frobenius norm). That is, -if we use SVD to find the factors of a matrix, those are the best -factors that can be found. This optimality property means that we -don't have to wonder if a different set of numbers might predict -scores better. - -Now let's look at the difference between the actual scores and our -1-D approximation. A plus difference means that the actual score is -higher than the predicted score, a minus difference means the actual -score is lower than the prediction. For example, on the first hole -Tiger got a 4 and the predicted score was 4.64 so we get -$4 - 4.64 = -0.64$. In other words, we must add -0.64 to our prediction -to get the actual score. - -Once these differences have been found, we can do the same thing -again and predict these differences using the formula -HoleDifficulty2 * PlayerAbility2. Since these factors are trying -to predict the differences, they are the 2-D factors and we have -put a 2 after their names (ex. HoleDifficulty2) to show they are -the second set of factors. - -\begin{tabular}{|c|c|c|} -Phil & Tiger & Vijay\\ -\hline -0.05 & -0.64 & 0.66\\ --0.28 & -0.02 & 0.31\\ -0.58 & 0.15 & -0.66\\ -0.03 & 0.33 & -0.36\\ -0.36 & -0.28 & 0.00\\ --0.69 & 0.67 & -0.05\\ -0.67 & 0.08 & -0.66\\ --1.08 & 0.37 & 0.61\\ -0.45 & -0.35 & 0.00\\ -\end{tabular} - = -\begin{tabular}{|c|} --0.18\\ --0.38\\ -0.80\\ -0.15\\ -0.35\\ --0.67\\ -0.89\\ --1.29\\ -0.44\\ -\end{tabular} - * -\begin{tabular}{|c|c|c|} -Phil & Tiger & Vijay\\ -0.82 & -0.20 & -0.53\\ -\end{tabular} - -which is HoleDifficulty(2) * PlayerAbility(2) - -There are some interesting observations we can make about these -factors. Notice that hole 8 has the most significant HoleDifficulty2 -factor (1.29). That means that it is the hardest hole to predict. -Indeed, it was the only hole on which none of the 3 players made -par. It was especially hard to predict because it was the most -difficult hole relative to par -$(HoleDifficulty - par) = (3.39 - 3) = 0.39$, and yet Phil birdied -it making his score more than a stroke below his predicted score -(he scored 2 versus his predicted score of 3.08). Other holes that -were hard to predict were holes 3 (0.80) and 7 (0.89) because Vijay -beat Phil on those holes even though, in general, Phil was playing -better. - -The full SVD for this example matrix (9 holes by 3 players) has 3 -sets of factors. In general, a m x n matrix where m >= n can have -at most n factors, so our $9 x 3$ matrix cannot have more than 3 sets -of factors. Here is the full SVD factorization (to two decimal places). - -\begin{tabular}{|c|c|c|} -Phil & Tiger & Vijay\\ -\hline -4 & 4 & 5\\ -4 & 5 & 5\\ -3 & 3 & 2\\ -4 & 5 & 4\\ -4 & 4 & 4\\ -3 & 5 & 4\\ -4 & 4 & 3\\ -2 & 4 & 4\\ -5 & 5 & 5\\ -\end{tabular} - = -\begin{tabular}{|c|c|c|} -4.34 & -0.18 & -0.90\\ -4.69 & -0.38 & -0.15\\ -2.66 & 0.80 & 0.40\\ -4.36 & 0.15 & 0.47\\ -4.00 & 0.35 & -0.29\\ -4.05 & -0.67 & 0.68\\ -3.66 & 0.89 & 0.33\\ -3.39 & -1.29 & 0.14\\ -5.00 & 0.44 & -0.36\\ -\end{tabular} - * -\begin{tabular}{|c|c|c|} -Phil & Tiger & Vijay\\ -\hline -0.91 & 1.07 & 1.00\\ -0.82 & -0.20 & -0.53\\ --0.21 & 0.76 & -0.62\\ -\end{tabular} - -which is HoleDifficulty(1-3) * PlayerAbility(1-3) - -By SVD convention, the HoleDifficulty and PlayerAbility vectors -should all have length 1, so the conventional SVD factorization -is: - -\begin{tabular}{|c|c|c|} -Phil & Tiger & Vijay\\ -\hline -4 & 4 & 5\\ -4 & 5 & 5\\ -3 & 3 & 2\\ -4 & 5 & 4\\ -4 & 4 & 4\\ -3 & 5 & 4\\ -4 & 4 & 3\\ -2 & 4 & 4\\ -5 & 5 & 5\\ -\end{tabular} - = -\begin{tabular}{|c|c|c|} -0.35 & 0.09 & -0.64\\ -0.38 & 0.19 & -0.10\\ -0.22 & -0.40 & 0.28\\ -0.36 & -0.08 & 0.33\\ -0.33 & -0.18 & -0.20\\ -0.33 & 0.33 & 0.48\\ -0.30 & -0.44 & 0.23\\ -0.28 & 0.64 & 0.10\\ -0.41 & -0.22 & -0.25\\ -\end{tabular} - * -\begin{tabular}{|c|c|c|} -21.07 & 0 & 0\\ -0 & 2.01 & 0\\ -0 & 0 & 1.42\\ -\end{tabular} - * -\begin{tabular}{|c|c|c|} -Phil & Tiger & Vijay\\ -\hline -0.53 & 0.62 & 0.58\\ --0.82 & 0.20 & 0.53\\ --0.21 & 0.76 & -0.62\\ -\end{tabular} - -which is HoleDifficulty(1-3)* ScaleFactor(1-3) * PlayerAbility(1-3) - -We hope that you have some idea of what SVD is and how it can be -used. The next section covers applying SVD to Latent Sematic -Analysis or LSA. Although the domain is different, the concepts -are the same. We are trying to predict patterns of how words occur -in documents instead of trying to predict patterns of how players -score on holes. -\chapter{Groebner Basis} -Groebner Basis -\chapter{Greatest Common Divisor} -Greatest Common Divisor -\chapter{Polynomial Factorization} -Polynomial Factorization -\chapter{Cylindrical Algebraic Decomposition} -Cylindrical Algebraic Decomposition -\chapter{Pade approximant} -Pade approximant -\chapter{Schwartz-Zippel lemma and testing polynomial identities} -Schwartz-Zippel lemma and testing polynomial identities -\chapter{Chinese Remainder Theorem} -Chinese Remainder Theorem -\chapter{Gaussian Elimination} -Gaussian Elimination -\chapter{Diophantine Equations} -Diophantine Equations \begin{thebibliography}{99} \bibitem{1} Laurent Bertrand. Computing a hyperelliptic integral using arithmetic in the jacobian of the curve. {\sl Applicable Algebra in @@ -2513,7 +2085,6 @@ {\bf http://www.eecs.harvard.edu/ $\tilde{}$nr/noweb} \bibitem{31} Daly, Timothy, "The Axiom Literate Documentation"\\ {\bf http://axiom.axiom-developer.org/axiom-website/documentation.html} -\bibitem{32} {\bf http://www.puffinwarellc.com/p3a.htm} \end{thebibliography} \printindex \end{document} Modified: trunk/axiom/books/bookvol4.pamphlet =================================================================== --- trunk/axiom/books/bookvol4.pamphlet 2009-01-22 20:47:36 UTC (rev 1088) +++ trunk/axiom/books/bookvol4.pamphlet 2009-01-22 21:05:42 UTC (rev 1089) @@ -4383,99 +4383,11 @@ Again we rerun the failing function and now tpd1 contains the domain vector for the domain CHAR: -\section{Graphviz file creation} -The graphviz output used on the website is a scaled vector graphics -file (SVG). The dot command to output this file is: -\begin{verbatim} - dot -Tsvg:cg <pic >pic.svg -\end{verbatim} -The SVG file that gets generated has the following preamble. -\begin{verbatim} -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" - "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd" [ - <!ATTLIST svg xmlns:xlink CDATA #FIXED "" rel="nofollow">http://www.w3.org/1999/xlink"> -]> -<!-- Generated by dot version 2.8 (Thu Sep 14 20:34:11 UTC 2006) - For user: (root) root --> -<!-- Title: AxiomSept2008 Pages: 1 --> -<svg width="3960pt" height="2312pt" - viewBox = "0 0 3960 2312" - xmlns="http://www.w3.org/2000/svg" - xmlns:xlink="" rel="nofollow">http://www.w3.org/1999/xlink"> -\end{verbatim} -There are two pieces of information that are important. First, -we need to add the following text by removing the trailing -$>$ character from the svg tag and replacing it with the -following block. This block exports some javascript functions -that we use to scale the graphics. -\begin{verbatim} - > -<script type="text/ecmascript"> -<![CDATA[ -var g_element; -var SVGDoc; -var SVGRoot; -function setDimension(w,h) { - SVGDoc.documentElement.setAttribute("width",w); - SVGDoc.documentElement.setAttribute("height",h); -} -function setScale(sw,sh) { - g_element.setAttribute("transform","scale("+sw+" "+sh+")"); -} -function RunScript(LoadEvent) { - top.SVGsetDimension=setDimension; - top.SVGsetScale=setScale; - SVGDoc=LoadEvent.target.ownerDocument; - g_element=SVGDoc.getElementById("graph0"); -} -]]> -</script> -\end{verbatim} -A second item of interest is the viewbox line which gives us the -width and height information. We use this information to place -the graph on the web page. A simple example of the web page -looks follows. We need to replace the X and Y sizes with the -sizes from the viewbox above. -\begin{verbatim} -<html> -<head> -<title>Axiom Abbreviated Category and Domain graph</title> -<script type="text/javascript"> -var W3CDOM = (document.createElement && document.getElementsByTagName); -window. -function init(evt) { - SVGscale(0.5); -} -function SVGscale(scale) { - window.SVGsetDimension(8162*scale, 3068*scale); - window.SVGsetScale(scale,scale); - var box = document.getElementById('svgid'); - box.width = 8162*scale; - box.height = 3068*scale; -} -</script> -</head> -<body> -<h1>Axiom Abbreviated Category and Domain graph</h1> -<div> - choose here: - <a href="#" >0.1</a> or - <a href="#" >0.25</a> or - <a href="#" >0.5</a> or - <a href="#" >1.0</a> or - <a href="#" >1.5</a> or ... -</div> -<div> - <object id='svgid' data="dotabb.svg" type="image/svg+xml" - width="8162" height="3068" wmode="transparent" style="overflow:hidden;" /> - </object> -</div> -</body> -</html> -\end{verbatim} + + + \section{Makefile} This book is actually a literate program\cite{2} and can contain executable source code. In particular, the Makefile for this book Added: trunk/axiom/books/ps/lightbayou.png =================================================================== (Binary files differ) Property changes on: trunk/axiom/books/ps/lightbayou.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Modified: trunk/axiom/src/algebra/aggcat2.spad.pamphlet =================================================================== --- trunk/axiom/src/algebra/aggcat2.spad.pamphlet 2009-01-22 20:47:36 UTC (rev 1088) +++ trunk/axiom/src/algebra/aggcat2.spad.pamphlet 2009-01-22 21:05:42 UTC (rev 1089) @@ -11,8 +11,6 @@ \eject \section{package FLAGG2 FiniteLinearAggregateFunctions2} <<dot>>= -"FLAGG2" [color=orange,style=filled]; -"FiniteLinearAggregateFunctions2()" [color=orange,style=filled]; "FLAGG2" -> "PACKAGE" "FiniteLinearAggregateFunctions2()" -> "Package" @ @@ -133,8 +131,6 @@ @ \section{package FSAGG2 FiniteSetAggregateFunctions2} <<dot>>= -"FSAGG2" [color=orange,style=filled]; -"FiniteSetAggregateFunctions2()" [color=orange,style=filled]; "FSAGG2" -> "PACKAGE" "FiniteSetAggregateFunctions2()" -> "Package" @ Modified: trunk/axiom/src/algebra/algfact.spad.pamphlet =================================================================== --- trunk/axiom/src/algebra/algfact.spad.pamphlet 2009-01-22 20:47:36 UTC (rev 1088) +++ trunk/axiom/src/algebra/algfact.spad.pamphlet 2009-01-22 21:05:42 UTC (rev 1089) @@ -11,9 +11,6 @@ \eject \section{package IALGFACT InnerAlgFactor} <<dot>>= -"IALGFACT" [color=orange,style=filled]; -"InnerAlgFactor(a:Field,b:UPOLYC(a),c:Join(...),d:UPOLYC(c))" - [color=orange,style=filled]; "IALGFACT" -> "PACKAGE" "InnerAlgFactor(a:Field,b:UPOLYC(a),c:Join(...),d:UPOLYC(c))" -> "Package" @ @@ -107,9 +104,6 @@ @ \section{package SAEFACT SimpleAlgebraicExtensionAlgFactor} <<dot>>= -"SAEFACT" [color=orange,style=filled]; -"SimpleAlgebraicExtensionAlgFactor(a:UPOLYC(FRAC(INT)),b:Join(...),c:UPOLYC(b))" - [color=orange,style=filled]; "SAEFACT" -> "PACKAGE" "SimpleAlgebraicExtensionAlgFactor(a:UPOLYC(FRAC(INT)),b:Join(...),c:UPOLYC(b))" -> "Package" @@ -143,9 +137,6 @@ @ \section{package RFFACT RationalFunctionFactor} <<dot>>= -"RFFACT" [color=orange,style=filled]; -"RationalFunctionFactor(a:UPOLYC(FRAC(POLY(INT))))" - [color=orange,style=filled]; "RFFACT" -> "PACKAGE" "RationalFunctionFactor(a:UPOLYC(FRAC(POLY(INT))))" -> "Package" @ @@ -189,9 +180,6 @@ @ \section{package SAERFFC SAERationalFunctionAlgFactor} <<dot>>= -"SAERFFC" [color=orange,style=filled]; -"SAERationalFunctionAlgFactor(a:UPOLYC(FRAC(POLY(INT))),b:Join(...),c:UPOLYC(b))" - [color=orange,style=filled]; "SAERFFC" -> "PACKAGE" "SAERationalFunctionAlgFactor(a:UPOLYC(FRAC(POLY(INT))),b:Join(...),c:UPOLYC(b))" -> "Package" @@ -225,8 +213,6 @@ @ \section{package ALGFACT AlgFactor} <<dot>>= -"ALGFACT" [color=orange,style=filled]; -"AlgFactor(UPOLYC(AN))" [color=orange,style=filled]; "ALGFACT" -> "PACKAGE" "AlgFactor(UPOLYC(AN))" -> "Package" @ Modified: trunk/axiom/src/algebra/alql.spad.pamphlet =================================================================== --- trunk/axiom/src/algebra/alql.spad.pamphlet 2009-01-22 20:47:36 UTC (rev 1088) +++ trunk/axiom/src/algebra/alql.spad.pamphlet 2009-01-22 21:05:42 UTC (rev 1089) @@ -9,6 +9,181 @@ \eject \tableofcontents \eject +\section{domain DLIST DataList} +<<dot>>= +"DLIST" -> "LSAGG" +"DataList(a:OrderedSet)" -> "ListAggregate(a:Type)" +@ +<<domain DLIST DataList>>= +)abbrev domain DLIST DataList +++ This domain provides some nice functions on lists +DataList(S:OrderedSet) : Exports == Implementation where + Exports == ListAggregate(S) with + coerce: List S -> % + ++ coerce(l) creates a datalist from l + coerce: % -> List S + ++ coerce(x) returns the list of elements in x + datalist: List S -> % + ++ datalist(l) creates a datalist from l + elt: (%,"unique") -> % + ++ \axiom{l.unique} returns \axiom{l} with duplicates removed. + ++ Note: \axiom{l.unique = removeDuplicates(l)}. + elt: (%,"sort") -> % + ++ \axiom{l.sort} returns \axiom{l} with elements sorted. + ++ Note: \axiom{l.sort = sort(l)} + elt: (%,"count") -> NonNegativeInteger + ++ \axiom{l."count"} returns the number of elements in \axiom{l}. + Implementation == List(S) add + elt(x,"unique") == removeDuplicates(x) + elt(x,"sort") == sort(x) + elt(x,"count") == #x + coerce(x:List S) == x pretend % + coerce(x:%):List S == x pretend (List S) + coerce(x:%): OutputForm == (x :: List S) :: OutputForm + datalist(x:List S) == x::% + +@ +\section{domain ICARD IndexCard} +<<dot>>= +"ICARD" -> "ORDSET" +"IndexCard()" -> "OrderedSet()" +@ +<<domain ICARD IndexCard>>= +)abbrev domain ICARD IndexCard +++ This domain implements a container of information +++ about the AXIOM library +IndexCard() : Exports == Implementation where + Exports == OrderedSet with + elt: (%,Symbol) -> String + ++ elt(ic,s) selects a particular field from \axiom{ic}. Valid fields + ++ are \axiom{name, nargs, exposed, type, abbreviation, kind, origin, + ++ params, condition, doc}. + display: % -> Void + ++ display(ic) prints a summary of information contained in \axiom{ic}. + fullDisplay: % -> Void + ++ fullDisplay(ic) prints all of the information contained in \axiom{ic}. + coerce: String -> % + ++ coerce(s) converts \axiom{s} into an \axiom{IndexCard}. Warning: if + ++ \axiom{s} is not of the right format then an error will occur + Implementation == add + x<y==(x pretend String) < (y pretend String) + x=y==(x pretend String) = (y pretend String) + display(x) == + name : OutputForm := dbName(x)$Lisp + type : OutputForm := dbPart(x,4,1$Lisp)$Lisp + output(hconcat(name,hconcat(" : ",type)))$OutputPackage + fullDisplay(x) == + name : OutputForm := dbName(x)$Lisp + type : OutputForm := dbPart(x,4,1$Lisp)$Lisp + origin:OutputForm := + hconcat(alqlGetOrigin(x$Lisp)$Lisp,alqlGetParams(x$Lisp)$Lisp) + fromPart : OutputForm := hconcat(" from ",origin) + condition : String := dbPart(x,6,1$Lisp)$Lisp + ifPart : OutputForm := + condition = "" => empty() + hconcat(" if ",condition::OutputForm) + exposed? : String := SUBSTRING(dbPart(x,3,1)$Lisp,0,1)$Lisp + exposedPart : OutputForm := + exposed? = "n" => " (unexposed)" + empty() + firstPart := hconcat(name,hconcat(" : ",type)) + secondPart := hconcat(fromPart,hconcat(ifPart,exposedPart)) + output(hconcat(firstPart,secondPart))$OutputPackage + coerce(s:String): % == (s pretend %) + coerce(x): OutputForm == (x pretend String)::OutputForm + elt(x,sel) == + s := PNAME(sel)$Lisp pretend String + s = "name" => dbName(x)$Lisp + s = "nargs" => dbPart(x,2,1$Lisp)$Lisp + s = "exposed" => SUBSTRING(dbPart(x,3,1)$Lisp,0,1)$Lisp + s = "type" => dbPart(x,4,1$Lisp)$Lisp + s = "abbreviation" => dbPart(x,5,1$Lisp)$Lisp + s = "kind" => alqlGetKindString(x)$Lisp + s = "origin" => alqlGetOrigin(x)$Lisp + s = "params" => alqlGetParams(x)$Lisp + s = "condition" => dbPart(x,6,1$Lisp)$Lisp + s = "doc" => dbComments(x)$Lisp + error "unknown selector" + +@ +\section{domain DBASE Database} +<<dot>>= +"DBASE" -> "SETCAT" +"Database(a:OrderedSet)" -> "SetCategory()" +@ +<<domain DBASE Database>>= +)abbrev domain DBASE Database +++ This domain implements a simple view of a database whose fields are +++ indexed by symbols +Database(S): Exports == Implementation where + S: OrderedSet with + elt: (%,Symbol) -> String + ++ elt(x,s) returns an element of x indexed by s + display: % -> Void + ++ display(x) displays x in some form + fullDisplay: % -> Void + ++ fullDisplay(x) displays x in detail + Exports == SetCategory with + elt: (%,QueryEquation) -> % + ++ elt(db,q) returns all elements of \axiom{db} which satisfy \axiom{q}. + elt: (%,Symbol) -> DataList String + ++ elt(db,s) returns the \axiom{s} field of each element of \axiom{db}. + _+: (%,%) -> % + ++ db1+db2 returns the merge of databases db1 and db2 + _-: (%,%) -> % + ++ db1-db2 returns the difference of databases db1 and db2 i.e. consisting + ++ of elements in db1 but not in db2 + coerce: List S -> % + ++ coerce(l) makes a database out of a list + display: % -> Void + ++ display(db) prints a summary line for each entry in \axiom{db}. + fullDisplay: % -> Void + ++ fullDisplay(db) prints full details of each entry in \axiom{db}. + fullDisplay: (%,PositiveInteger,PositiveInteger) -> Void + ++ fullDisplay(db,start,end ) prints full details of entries in the range + ++ \axiom{start..end} in \axiom{db}. + Implementation == List S add + s: Symbol + Rep := List S + coerce(u: List S):% == u@% + elt(data: %,s: Symbol) == [x.s for x in data] :: DataList(String) + elt(data: %,eq: QueryEquation) == + field := variable eq + val := value eq + [x for x in data | stringMatches?(val,x.field)$Lisp] + x+y==removeDuplicates_! merge(x,y) + x-y==mergeDifference(copy(x::Rep),y::Rep)$MergeThing(S) + coerce(data): OutputForm == (#data):: OutputForm + display(data) == for x in data repeat display x + fullDisplay(data) == for x in data repeat fullDisplay x + fullDisplay(data,n,m) == for x in data for i in 1..m repeat + if i >= n then fullDisplay x + +@ +\section{domain QEQUAT QueryEquation} +<<dot>>= +"QEQUAT" -> "KOERCE" +"QueryEquation()" -> "CoercibleTo(OutputForm)" +@ +<<domain QEQUAT QueryEquation>>= +)abbrev domain QEQUAT QueryEquation +++ This domain implements simple database queries +QueryEquation(): Exports == Implementation where + Exports == CoercibleTo(OutputForm) with + equation: (Symbol,String) -> % + ++ equation(s,"a") creates a new equation. + variable: % -> Symbol + ++ variable(q) returns the variable (i.e. left hand side) of \axiom{q}. + value: % -> String + ++ value(q) returns the value (i.e. right hand side) of \axiom{q}. + Implementation == add + Rep := Record(var:Symbol, val:String) + coerce(u) == coerce(u.var)$Symbol = coerce(u.val)$String + equation(x,s) == [x,s] + variable q == q.var + value q == q.val + +@ \section{package MTHING MergeThing} <<dot>>= "MTHING" -> "PACKAGE" @@ -100,6 +275,10 @@ <<*>>= <<license>> +<<domain DLIST DataList>> +<<domain ICARD IndexCard>> +<<domain DBASE Database>> +<<domain QEQUAT QueryEquation>> <<package MTHING MergeThing>> <<package OPQUERY OperationsQuery>> @ Modified: trunk/axiom/src/algebra/carten.spad.pamphlet =================================================================== --- trunk/axiom/src/algebra/carten.spad.pamphlet 2009-01-22 20:47:36 UTC (rev 1088) +++ trunk/axiom/src/algebra/carten.spad.pamphlet 2009-01-22 21:05:42 UTC (rev 1089) @@ -9,6 +9,1569 @@ \eject \tableofcontents \eject +\section{domain CARTEN CartesianTensor} +<<CartesianTensor.input>>= +-- carten.spad.pamphlet CartesianTensor.input +)spool CartesianTensor.output +)set message test on +)set message auto off +)clear all +--S 1 of 48 +CT := CARTEN(i0 := 1, 2, Integer) +--R +--R +--R (1) CartesianTensor(1,2,Integer) +--R Type: Domain +--E 1 + +--S 2 of 48 +t0: CT := 8 +--R +--R +--R (2) 8 +--R Type: CartesianTensor(1,2,Integer) +--E 2 + +--S 3 of 48 +rank t0 +--R +--R +--R (3) 0 +--R Type: NonNegativeInteger +--E 3 + +--S 4 of 48 +v: DirectProduct(2, Integer) := directProduct [3,4] +--R +--R +--R (4) [3,4] +--R Type: DirectProduct(2,Integer) +--E 4 + +--S 5 of 48 +Tv: CT := v +--R +--R +--R (5) [3,4] +--R Type: CartesianTensor(1,2,Integer) +--E 5 + +--S 6 of 48 +m: SquareMatrix(2, Integer) := matrix [ [1,2],[4,5] ] +--R +--R +--R +1 2+ +--R (6) | | +--R +4 5+ +--R Type: SquareMatrix(2,Integer) +--E 6 + +--S 7 of 48 +Tm: CT := m +--R +--R +--R +1 2+ +--R (7) | | +--R +4 5+ +--R Type: CartesianTensor(1,2,Integer) +--E 7 + +--S 8 of 48 +n: SquareMatrix(2, Integer) := matrix [ [2,3],[0,1] ] +--R +--R +--R +2 3+ +--R (8) | | +--R +0 1+ +--R Type: SquareMatrix(2,Integer) +--E 8 + +--S 9 of 48 +Tn: CT := n +--R +--R +--R +2 3+ +--R (9) | | +--R +0 1+ +--R Type: CartesianTensor(1,2,Integer) +--E 9 + +--S 10 of 48 +t1: CT := [2, 3] +--R +--R +--R (10) [2,3] +--R Type: CartesianTensor(1,2,Integer) +--E 10 + +--S 11 of 48 +rank t1 +--R +--R +--R (11) 1 +--R Type: PositiveInteger +--E 11 + +--S 12 of 48 +t2: CT := [t1, t1] +--R +--R +--R +2 3+ +--R (12) | | +--R +2 3+ +--R Type: CartesianTensor(1,2,Integer) +--E 12 + +--S 13 of 48 +t3: CT := [t2, t2] +--R +--R +--R +2 3+ +2 3+ +--R (13) [| |,| |] +--R +2 3+ +2 3+ +--R Type: CartesianTensor(1,2,Integer) +--E 13 + +--S 14 of 48 +tt: CT := [t3, t3]; tt := [tt, tt] +--R +--R +--R ++2 3+ +2 3++ ++2 3+ +2 3++ +--R || | | || || | | || +--R |+2 3+ +2 3+| |+2 3+ +2 3+| +--R (14) [| |,| |] +--R |+2 3+ +2 3+| |+2 3+ +2 3+| +--R || | | || || | | || +--R ++2 3+ +2 3++ ++2 3+ +2 3++ +--R Type: CartesianTensor(1,2,Integer) +--E 14 + +--S 15 of 48 +rank tt +--R +--R +--R (15) 5 +--R Type: PositiveInteger +--E 15 + +--S 16 of 48 +Tmn := product(Tm, Tn) +--R +--R +--R ++2 3+ +4 6+ + +--R || | | | | +--R |+0 1+ +0 2+ | +--R (16) | | +--R |+8 12+ +10 15+| +--R || | | || +--R ++0 4 + +0 5 ++ +--R Type: CartesianTensor(1,2,Integer) +--E 16 + +--S 17 of 48 +Tmv := contract(Tm,2,Tv,1) +--R +--R +--R (17) [11,32] +--R Type: CartesianTensor(1,2,Integer) +--E 17 + +--S 18 of 48 +Tm*Tv +--R +--R +--R (18) [11,32] +--R Type: CartesianTensor(1,2,Integer) +--E 18 + +--S 19 of 48 +Tmv = m * v +--R +--R +--R (19) [11,32]= [11,32] +--R Type: Equation CartesianTensor(1,2,Integer) +--E 19 + +--S 20 of 48 +t0() +--R +--R +--R (20) 8 +--R Type: PositiveInteger +--E 20 + +--S 21 of 48 +t1(1+1) +--R +--R +--R (21) 3 +--R Type: PositiveInteger +--E 21 + +--S 22 of 48 +t2(2,1) +--R +--R +--R (22) 2 +--R Type: PositiveInteger +--E 22 + +--S 23 of 48 +t3(2,1,2) +--R +--R +--R (23) 3 +--R Type: PositiveInteger +--E 23 + +--S 24 of 48 +Tmn(2,1,2,1) +--R +--R +--R (24) 0 +--R Type: NonNegativeInteger +--E 24 + +--S 25 of 48 +t0[] +--R +--R +--R (25) 8 +--R Type: PositiveInteger +--E 25 + +--S 26 of 48 +t1[2] +--R +--R +--R (26) 3 +--R Type: PositiveInteger +--E 26 + +--S 27 of 48 +t2[2,1] +--R +--R +--R (27) 2 +--R Type: PositiveInteger +--E 27 + +--S 28 of 48 +t3[2,1,2] +--R +--R +--R (28) 3 +--R Type: PositiveInteger +--E 28 + +--S 29 of 48 +Tmn[2,1,2,1] +--R +--R +--R (29) 0 +--R Type: NonNegativeInteger +--E 29 + +--S 30 of 48 +cTmn := contract(Tmn,1,2) +--R +--R +--R +12 18+ +--R (30) | | +--R +0 6 + +--R Type: CartesianTensor(1,2,Integer) +--E 30 + +--S 31 of 48 +trace(m) * n +--R +--R +--R +12 18+ +--R (31) | | +--R +0 6 + +--R Type: SquareMatrix(2,Integer) +--E 31 + +--S 32 of 48 +contract(Tmn,1,2) = trace(m) * n +--R +--R +--R +12 18+ +12 18+ +--R (32) | |= | | +--R +0 6 + +0 6 + +--R Type: Equation CartesianTensor(1,2,Integer) +--E 32 + +--S 33 of 48 +contract(Tmn,1,3) = transpose(m) * n +--R +--R +--R +2 7 + +2 7 + +--R (33) | |= | | +--R +4 11+ +4 11+ +--R Type: Equation CartesianTensor(1,2,Integer) +--E 33 + +--S 34 of 48 +contract(Tmn,1,4) = transpose(m) * transpose(n) +--R +--R +--R +14 4+ +14 4+ +--R (34) | |= | | +--R +19 5+ +19 5+ +--R Type: Equation CartesianTensor(1,2,Integer) +--E 34 + +--S 35 of 48 +contract(Tmn,2,3) = m * n +--R +--R +--R +2 5 + +2 5 + +--R (35) | |= | | +--R +8 17+ +8 17+ +--R Type: Equation CartesianTensor(1,2,Integer) +--E 35 + +--S 36 of 48 +contract(Tmn,2,4) = m * transpose(n) +--R +--R +--R +8 2+ +8 2+ +--R (36) | |= | | +--R +23 5+ +23 5+ +--R Type: Equation CartesianTensor(1,2,Integer) +--E 36 + +--S 37 of 48 +contract(Tmn,3,4) = trace(n) * m +--R +--R +--R +3 6 + +3 6 + +--R (37) | |= | | +--R +12 15+ +12 15+ +--R Type: Equation CartesianTensor(1,2,Integer) +--E 37 + +--S 38 of 48 +tTmn := transpose(Tmn,1,3) +--R +--R +--R ++2 3 + +4 6 ++ +--R || | | || +--R |+8 12+ +10 15+| +--R (38) | | +--R |+0 1+ +0 2+ | +--R || | | | | +--R ++0 4+ +0 5+ + +--R Type: CartesianTensor(1,2,Integer) +--E 38 + +--S 39 of 48 +transpose Tmn +--R +--R +--R ++2 8+ +4 10++ +--R || | | || +--R |+0 0+ +0 0 +| +--R (39) | | +--R |+3 12+ +6 15+| +--R || | | || +--R ++1 4 + +2 5 ++ +--R Type: CartesianTensor(1,2,Integer) +--E 39 + +--S 40 of 48 +transpose Tm = transpose m +--R +--R +--R +1 4+ +1 4+ +--R (40) | |= | | +--R +2 5+ +2 5+ +--R Type: Equation CartesianTensor(1,2,Integer) +--E 40 + +--S 41 of 48 +rTmn := reindex(Tmn, [1,4,2,3]) +--R +--R +--R ++2 0+ +3 1+ + +--R || | | | | +--R |+4 0+ +6 2+ | +--R (41) | | +--R |+8 0+ +12 4+| +--R || | | || +--R ++10 0+ +15 5++ +--R Type: CartesianTensor(1,2,Integer) +--E 41 + +--S 42 of 48 +tt := transpose(Tm)*Tn - Tn*transpose(Tm) +--R +--R +--R +- 6 - 16+ +--R (42) | | +--R + 2 6 + +--R Type: CartesianTensor(1,2,Integer) +--E 42 + +--S 43 of 48 +Tv*(tt+Tn) +--R +--R +--R (43) [- 4,- 11] +--R Type: CartesianTensor(1,2,Integer) +--E 43 + +--S 44 of 48 +reindex(product(Tn,Tn),[4,3,2,1])+3*Tn*product(Tm,Tm) +--R +--R +--R ++46 84 + +57 114++ +--R || | | || +--R |+174 212+ +228 285+| +--R (44) | | +--R | +18 24+ +17 30+ | +--R | | | | | | +--R + +57 63+ +63 76+ + +--R Type: CartesianTensor(1,2,Integer) +--E 44 + +--S 45 of 48 +delta: CT := kroneckerDelta() +--R +--R +--R +1 0+ +--R (45) | | +--R +0 1+ +--R Type: CartesianTensor(1,2,Integer) +--E 45 + +--S 46 of 48 +contract(Tmn, 2, delta, 1) = reindex(Tmn, [1,3,4,2]) +--R +--R +--R + +2 4+ +0 0++ + +2 4+ +0 0++ +--R | | | | || | | | | || +--R | +3 6+ +1 2+| | +3 6+ +1 2+| +--R (46) | |= | | +--R |+8 10+ +0 0+| |+8 10+ +0 0+| +--R || | | || || | | || +--R ++12 15+ +4 5++ ++12 15+ +4 5++ +--R Type: Equation CartesianTensor(1,2,Integer) +--E 46 + +--S 47 of 48 +epsilon:CT := leviCivitaSymbol() +--R +--R +--R + 0 1+ +--R (47) | | +--R +- 1 0+ +--R Type: CartesianTensor(1,2,Integer) +--E 47 + +--S 48 of 48 +contract(epsilon*Tm*epsilon, 1,2) = 2 * determinant m +--R +--R +--R (48) - 6= - 6 +--R Type: Equation CartesianTensor(1,2,Integer) +--E 48 +)spool +)lisp (bye) +@ +<<CartesianTensor.help>>= +==================================================================== +CartesianTensor examples +==================================================================== + +CartesianTensor(i0,dim,R) provides Cartesian tensors with components +belonging to a commutative ring R. Tensors can be described as a +generalization of vectors and matrices. This gives a concise tensor +algebra for multilinear objects supported by the CartesianTensor +domain. You can form the inner or outer product of any two tensors +and you can add or subtract tensors with the same number of components. +Additionally, various forms of traces and transpositions are useful. + +The CartesianTensor constructor allows you to specify the minimum +index for subscripting. In what follows we discuss in detail how to +manipulate tensors. + +Here we construct the domain of Cartesian tensors of dimension 2 over the +integers, with indices starting at 1. + + CT := CARTEN(i0 := 1, 2, Integer) + CartesianTensor(1,2,Integer) + Type: Domain + +==================================================================== +Forming tensors +==================================================================== + +Scalars can be converted to tensors of rank zero. + + t0: CT := 8 + 8 + Type: CartesianTensor(1,2,Integer) + + rank t0 + 0 + Type: NonNegativeInteger + +Vectors (mathematical direct products, rather than one dimensional array +structures) can be converted to tensors of rank one. + + v: DirectProduct(2, Integer) := directProduct [3,4] + [3, 4] + Type: DirectProduct(2,Integer) + + Tv: CT := v + [3, 4] + Type: CartesianTensor(1,2,Integer) + +Matrices can be converted to tensors of rank two. + + m: SquareMatrix(2, Integer) := matrix [ [1,2],[4,5] ] + +1 2+ + | | + +4 5+ + Type: SquareMatrix(2,Integer) + + Tm: CT := m + +1 2+ + | | + +4 5+ + Type: CartesianTensor(1,2,Integer) + + n: SquareMatrix(2, Integer) := matrix [ [2,3],[0,1] ] + +2 3+ + | | + +0 1+ + Type: SquareMatrix(2,Integer) + + Tn: CT := n + +2 3+ + | | + +0 1+ + Type: CartesianTensor(1,2,Integer) + +In general, a tensor of rank k can be formed by making a list of +rank k-1 tensors or, alternatively, a k-deep nested list of lists. + + t1: CT := [2, 3] + [2, 3] + Type: CartesianTensor(1,2,Integer) + + rank t1 + 1 + Type: PositiveInteger + + t2: CT := [t1, t1] + +2 3+ + | | + +2 3+ + Type: CartesianTensor(1,2,Integer) + + t3: CT := [t2, t2] + + +2 3+ +2 3+ + [| |,| |] + +2 3+ +2 3+ + Type: CartesianTensor(1,2,Integer) + + tt: CT := [t3, t3]; tt := [tt, tt] + ++2 3+ +2 3++ ++2 3+ +2 3++ + || | | || || | | || + |+2 3+ +2 3+| |+2 3+ +2 3+| + [| |,| |] + |+2 3+ +2 3+| |+2 3+ +2 3+| + || | | || || | | || + ++2 3+ +2 3++ ++2 3+ +2 3++ + Type: CartesianTensor(1,2,Integer) + + rank tt + 5 + Type: PositiveInteger + +==================================================================== +Multiplication +==================================================================== + +Given two tensors of rank k1 and k2, the outer product forms a new +tensor of rank k1+k2. Here + + Tmn(i,j,k,l) = Tm(i,j)Tn(k,l) + + Tmn := product(Tm, Tn) + ++2 3+ +4 6+ + + || | | | | + |+0 1+ +0 2+ | + | | + |+8 12+ +10 15+| + || | | || + ++0 4 + +0 5 ++ + Type: CartesianTensor(1,2,Integer) + +The inner product (contract) forms a tensor of rank k1+k2-2. This +product generalizes the vector dot product and matrix-vector product +by summing component products along two indices. + +Here we sum along the second index of Tm and the first index of Tv. Here + + Tmv = sum {j=1..dim} Tm(i,j) Tv(j) + + Tmv := contract(Tm,2,Tv,1) + [11,32] + Type: CartesianTensor(1,2,Integer) + +The multiplication operator * is scalar multiplication or an inner +product depending on the ranks of the arguments. + +If either argument is rank zero it is treated as scalar multiplication. +Otherwise, a*b is the inner product summing the last index of a with the +first index of b. + + Tm*Tv + [11,32] + Type: CartesianTensor(1,2,Integer) + +This definition is consistent with the inner product on matrices +and vectors. + + Tmv = m * v + [11,32] = [11,32] + Type: Equation CartesianTensor(1,2,Integer) + +==================================================================== +Selecting Components +==================================================================== + +For tensors of low rank (that is, four or less), components can be selected +by applying the tensor to its indices. + + t0() + 8 + Type: PositiveInteger + + t1(1+1) + 3 + Type: PositiveInteger + + t2(2,1) + 2 + Type: PositiveInteger + + t3(2,1,2) + 3 + Type: PositiveInteger + + Tmn(2,1,2,1) + 0 + Type: NonNegativeInteger + +A general indexing mechanism is provided for a list of indices. + + t0[] + 8 + Type: PositiveInteger + + t1[2] + 3 + Type: PositiveInteger + + t2[2,1] + 2 + Type: PositiveInteger + +The general mechanism works for tensors of arbitrary rank, but is +somewhat less efficient since the intermediate index list must be created. + + t3[2,1,2] + 3 + Type: PositiveInteger + + Tmn[2,1,2,1] + 0 + Type: NonNegativeInteger + +==================================================================== +Contraction +==================================================================== + +A "contraction" between two tensors is an inner product, as we have +seen above. You can also contract a pair of indices of a single +tensor. This corresponds to a "trace" in linear algebra. The +expression contract(t,k1,k2) forms a new tensor by summing the +diagonal given by indices in position k1 and k2. + +This is the tensor given by + xTmn = sum{k=1..dim} Tmn(k,k,i,j) + + cTmn := contract(Tmn,1,2) + +12 18+ + | | + +0 6 + + Type: CartesianTensor(1,2,Integer) + +Since Tmn is the outer product of matrix m and matrix n, the above is +equivalent to this. + + trace(m) * n + +12 18+ + | | + +0 6 + + Type: SquareMatrix(2,Integer) + +In this and the next few examples, we show all possible contractions +of Tmn and their matrix algebra equivalents. + + contract(Tmn,1,2) = trace(m) * n + +12 18+ +12 18+ + | |= | | + +0 6 + +0 6 + + Type: Equation CartesianTensor(1,2,Integer) + + contract(Tmn,1,3) = transpose(m) * n + +2 7 + +2 7 + + | |= | | + +4 11+ +4 11+ + Type: Equation CartesianTensor(1,2,Integer) + + contract(Tmn,1,4) = transpose(m) * transpose(n) + +14 4+ +14 4+ + | |= | | + +19 5+ +19 5+ + Type: Equation CartesianTensor(1,2,Integer) + + contract(Tmn,2,3) = m * n + +2 5 + +2 5 + + | |= | | + +8 17+ +8 17+ + Type: Equation CartesianTensor(1,2,Integer) + + contract(Tmn,2,4) = m * transpose(n) + +8 2+ +8 2+ + | |= | | + +23 5+ +23 5+ + Type: Equation CartesianTensor(1,2,Integer) + + contract(Tmn,3,4) = trace(n) * m + +3 6 + +3 6 + + | |= | | + +12 15+ +12 15+ + Type: Equation CartesianTensor(1,2,Integer) + +==================================================================== +Transpositions +==================================================================== + +You can exchange any desired pair of indices using the transpose +operation. + +Here the indices in positions one and three are exchanged, that is, + tTmn(i,j,k,l) = Tmn(k,j,i,l) + + tTmn := transpose(Tmn,1,3) + ++2 3 + +4 6 ++ + || | | || + |+8 12+ +10 15+| + | | + |+0 1+ +0 2+ | + || | | | | + ++0 4+ +0 5+ + + Type: CartesianTensor(1,2,Integer) + +If no indices are specified, the first and last index are exchanged. + + transpose Tmn + ++2 8+ +4 10++ + || | | || + |+0 0+ +0 0 +| + | | + |+3 12+ +6 15+| + || | | || + ++1 4 + +2 5 ++ + Type: CartesianTensor(1,2,Integer) + +This is consistent with the matrix transpose. + + transpose Tm = transpose m + +1 4+ +1 4+ + | |= | | + +2 5+ +2 5+ + Type: Equation CartesianTensor(1,2,Integer) + + +If a more complicated reordering of the indices is required, then the +reindex operation can be used. This operation allows the indices to +be arbitrarily permuted. + + rTmn(i,j,k,l) = Tmn(i,l,j,k) + + rTmn := reindex(Tmn, [1,4,2,3]) + ++2 0+ +3 1+ + + || | | | | + |+4 0+ +6 2+ | + | | + |+8 0+ +12 4+| + || | | || + ++10 0+ +15 5++ + Type: CartesianTensor(1,2,Integer) + +==================================================================== +Arithmetic +==================================================================== + +Tensors of equal rank can be added or subtracted so arithmetic +expressions can be used to produce new tensors. + + tt := transpose(Tm)*Tn - Tn*transpose(Tm) + +- 6 - 16+ + | | + + 2 6 + + Type: CartesianTensor(1,2,Integer) + + + Tv*(tt+Tn) + [- 4,- 11] + Type: CartesianTensor(1,2,Integer) + + reindex(product(Tn,Tn),[4,3,2,1])+3*Tn*product(Tm,Tm) + ++46 84 + +57 114++ + || | | || + |+174 212+ +228 285+| + | | + | +18 24+ +17 30+ | + | | | | | | + + +57 63+ +63 76+ + + Type: CartesianTensor(1,2,Integer) + +==================================================================== +Specific Tensors +==================================================================== + +Two specific tensors have properties which depend only on the dimension. + +The Kronecker delta satisfies + + +- -+ + | 1 if i = j | +delta(i,j) = | | + | 0 if i ^= j | + +- -+ + + + delta: CT := kroneckerDelta() + +1 0+ + | | + +0 1+ + Type: CartesianTensor(1,2,Integer) + +This can be used to reindex via contraction. + + contract(Tmn, 2, delta, 1) = reindex(Tmn, [1,3,4,2]) + + +2 4+ +0 0++ + +2 4+ +0 0++ + | | | | || | | | | || + | +3 6+ +1 2+| | +3 6+ +1 2+| + | |= | | + |+8 10+ +0 0+| |+8 10+ +0 0+| + || | | || || | | || + ++12 15+ +4 5++ ++12 15+ +4 5++ + Type: Equation CartesianTensor(1,2,Integer) + +The Levi Civita symbol determines the sign of a permutation of indices. + + epsilon:CT := leviCivitaSymbol() + + 0 1+ + | | + +- 1 0+ + Type: CartesianTensor(1,2,Integer) + +Here we have: + + epsilon(i1,...,idim) + = +1 if i1,...,idim is an even permutation of i0,...,i0+dim-1 + = -1 if i1,...,idim is an odd permutation of i0,...,i0+dim-1 + = 0 if i1,...,idim is not a permutation of i0,...,i0+dim-1 + +This property can be used to form determinants. + + contract(epsilon*Tm*epsilon, 1,2) = 2 * determinant m + - 6= - 6 + Type: Equation CartesianTensor(1,2,Integer) + + +==================================================================== +Properties of the CartesianTensor domain +==================================================================== + +GradedModule(R,E) denotes "E-graded R-module", that is, a collection +of R-modules indexed by an abelian monoid E. An element g of G[s] for +some specific s in E is said to be an element of G with degree s. +Sums are defined in each module G[s] so two elements of G can be added +if they have the same degree. Morphisms can be defined and composed +by degree to give the mathematical category of graded modules. + +GradedAlgebra(R,E) denotes "E-graded R-algebra". A graded algebra is +a graded module together with a degree preserving R-bilinear map, +called the product. + + degree(product(a,b)) = degree(a) + degree(b) + + product(r*a,b) = product(a,r*b) = r*product(a,b) + product(a1+a2,b) = product(a1,b) + product(a2,b) + product(a,b1+b2) = product(a,b1) + product(a,b2) + product(a,product(b,c)) = product(product(a,b),c) + +The domain CartesianTensor(i0, dim, R) belongs to the category +GradedAlgebra(R, NonNegativeInteger). The non-negative integer degree +is the tensor rank and the graded algebra product is the tensor outer +product. The graded module addition captures the notion that only +tensors of equal rank can be added. + +If V is a vector space of dimension dim over R, then the tensor module +T[k](V) is defined as + + T[0](V) = R + T[k](V) = T[k-1](V) * V + +where * denotes the R-module tensor product. CartesianTensor(i0,dim,R) +is the graded algebra in which the degree k module is T[k](V). + +==================================================================== +Tensor Calculus +==================================================================== + +It should be noted here that often tensors are used in the context of +tensor-valued manifold maps. This leads to the notion of covariant +and contravariant bases with tensor component functions transforming +in specific ways under a change of coordinates on the manifold. This +is no more directly supported by the CartesianTensor domain than it is +by the Vector domain. However, it is possible to have the components +implicitly represent component maps by choosing a polynomial or +expression type for the components. In this case, it is up to the +user to satisfy any constraints which arise on the basis of this +interpretation. + +See Also +o )show CartesianTensor +o $AXIOM/doc/src/algebra/carten.spad.dvi + +@ +<<dot>>= +"CARTEN" -> "GRALG" +"CartesianTensor(a:Integer,b:NonNegativeInteger,c:CommutativeRing)" -> + "GradedAlgebra(a:CommutativeRing,b:NonNegativeInteger)" +"CARTEN" -> "GRMOD" +"CartesianTensor(a:Integer,b:NonNegativeInteger,c:CommutativeRing)" -> + "GradedModule(a:Integer,b:NonNegativeInteger)" +@ +<<domain CARTEN CartesianTensor>>= +)abbrev domain CARTEN CartesianTensor +++ Author: Stephen M. Watt +++ Date Created: December 1986 +++ Date Last Updated: May 15, 1991 +++ Basic Operations: +++ Related Domains: +++ Also See: +++ AMS Classifications: +++ Keywords: tensor, graded algebra +++ Examples: +++ References: +++ Description: +++ CartesianTensor(minix,dim,R) provides Cartesian tensors with +++ components belonging to a commutative ring R. These tensors +++ can have any number of indices. Each index takes values from +++ \spad{minix} to \spad{minix + dim - 1}. + +CartesianTensor(minix, dim, R): Exports == Implementation where + NNI ==> NonNegativeInteger + I ==> Integer + DP ==> DirectProduct + SM ==> SquareMatrix + + minix: Integer + dim: NNI + R: CommutativeRing + + Exports ==> Join(GradedAlgebra(R, NNI), GradedModule(I, NNI)) with + + coerce: DP(dim, R) -> % + ++ coerce(v) views a vector as a rank 1 tensor. + ++ + ++X v:DirectProduct(2,Integer):=directProduct [3,4] + ++X tv:CartesianTensor(1,2,Integer):=v + + coerce: SM(dim, R) -> % + ++ coerce(m) views a matrix as a rank 2 tensor. + ++ + ++X v:SquareMatrix(2,Integer):=[[1,2],[3,4]] + ++X tv:CartesianTensor(1,2,Integer):=v + + coerce: List R -> % + ++ coerce([r_1,...,r_dim]) allows tensors to be constructed + ++ using lists. + ++ + ++X v:=[2,3] + ++X tv:CartesianTensor(1,2,Integer):=v + + coerce: List % -> % + ++ coerce([t_1,...,t_dim]) allows tensors to be constructed + ++ using lists. + ++ + ++X v:=[2,3] + ++X tv:CartesianTensor(1,2,Integer):=v + ++X tm:CartesianTensor(1,2,Integer):=[tv,tv] + + rank: % -> NNI + ++ rank(t) returns the tensorial rank of t (that is, the + ++ number of indices). This is the same as the graded module + ++ degree. + ++ + ++X CT:=CARTEN(1,2,Integer) + ++X t0:CT:=8 + ++X rank t0 + + elt: (%) -> R + ++ elt(t) gives the component of a rank 0 tensor. + ++ + ++X tv:CartesianTensor(1,2,Integer):=8 + ++X elt(tv) + ++X tv[] + + elt: (%, I) -> R + ++ elt(t,i) gives a component of a rank 1 tensor. + ++ + ++X v:=[2,3] + ++X tv:CartesianTensor(1,2,Integer):=v + ++X elt(tv,2) + ++X tv[2] + + elt: (%, I, I) -> R + ++ elt(t,i,j) gives a component of a rank 2 tensor. + ++ + ++X v:=[2,3] + ++X tv:CartesianTensor(1,2,Integer):=v + ++X tm:CartesianTensor(1,2,Integer):=[tv,tv] + ++X elt(tm,2,2) + ++X tm[2,2] + + elt: (%, I, I, I) -> R + ++ elt(t,i,j,k) gives a component of a rank 3 tensor. + ++ + ++X v:=[2,3] + ++X tv:CartesianTensor(1,2,Integer):=v + ++X tm:CartesianTensor(1,2,Integer):=[tv,tv] + ++X tn:CartesianTensor(1,2,Integer):=[tm,tm] + ++X elt(tn,2,2,2) + ++X tn[2,2,2] + + elt: (%, I, I, I, I) -> R + ++ elt(t,i,j,k,l) gives a component of a rank 4 tensor. + ++ + ++X v:=[2,3] + ++X tv:CartesianTensor(1,2,Integer):=v + ++X tm:CartesianTensor(1,2,Integer):=[tv,tv] + ++X tn:CartesianTensor(1,2,Integer):=[tm,tm] + ++X tp:CartesianTensor(1,2,Integer):=[tn,tn] + ++X elt(tp,2,2,2,2) + ++X tp[2,2,2,2] + + elt: (%, List I) -> R + ++ elt(t,[i1,...,iN]) gives a component of a rank \spad{N} tensor. + ++ + ++X v:=[2,3] + ++X tv:CartesianTensor(1,2,Integer):=v + ++X tm:CartesianTensor(1,2,Integer):=[tv,tv] + ++X tn:CartesianTensor(1,2,Integer):=[tm,tm] + ++X tp:CartesianTensor(1,2,Integer):=[tn,tn] + ++X tq:CartesianTensor(1,2,Integer):=[tp,tp] + ++X elt(tq,[2,2,2,2,2]) + + -- This specializes the documentation from GradedAlgebra. + product: (%,%) -> % + ++ product(s,t) is the outer product of the tensors s and t. + ++ For example, if \spad{r = product(s,t)} for rank 2 tensors + ++ s and t, then \spad{r} is a rank 4 tensor given by + ++ \spad{r(i,j,k,l) = s(i,j)*t(k,l)}. + ++ + ++X m:SquareMatrix(2,Integer):=matrix [[1,2],[4,5]] + ++X Tm:CartesianTensor(1,2,Integer):=m + ++X n:SquareMatrix(2,Integer):=matrix [[2,3],[0,1]] + ++X Tn:CartesianTensor(1,2,Integer):=n + ++X Tmn:=product(Tm,Tn) + + "*": (%, %) -> % + ++ s*t is the inner product of the tensors s and t which contracts + ++ the last index of s with the first index of t, i.e. + ++ \spad{t*s = contract(t,rank t, s, 1)} + ... [truncated message content] |
From: <da...@us...> - 2009-01-22 20:48:06
|
Revision: 1088 http://axiom.svn.sourceforge.net/axiom/?rev=1088&view=rev Author: daly Date: 2009-01-22 20:47:36 +0000 (Thu, 22 Jan 2009) Log Message: ----------- 20090122 tpd src/axiom-website/patches.html 20080122.01.tpd.patch 20090122 tpd src/axiom-website/releasenotes.html add January releasenotes 20090122 tpd books/ps/v71releasenotes.eps updated 20090122 tpd books/ps/v71jan2009.eps added 20090122 tpd books/bookvol7.1 add release notes 20090122 tpd Makefile.pamphlet VERSION January 2009 20090122 tpd Makefile VERSION January 2009 Modified Paths: -------------- trunk/axiom/Makefile trunk/axiom/Makefile.pamphlet trunk/axiom/books/bookvol7.1.pamphlet trunk/axiom/books/ps/v71releasenotes.eps trunk/axiom/changelog trunk/axiom/src/axiom-website/patches.html trunk/axiom/src/axiom-website/releasenotes.html Added Paths: ----------- trunk/axiom/books/ps/v71jan2009.eps Modified: trunk/axiom/Makefile =================================================================== --- trunk/axiom/Makefile 2009-01-19 22:41:01 UTC (rev 1087) +++ trunk/axiom/Makefile 2009-01-22 20:47:36 UTC (rev 1088) @@ -1,4 +1,4 @@ -VERSION="Axiom (November 2008)" +VERSION="Axiom (January 2009)" SPD=$(shell pwd) SYS=$(notdir $(AXIOM)) SPAD=${SPD}/mnt/${SYS} Modified: trunk/axiom/Makefile.pamphlet =================================================================== --- trunk/axiom/Makefile.pamphlet 2009-01-19 22:41:01 UTC (rev 1087) +++ trunk/axiom/Makefile.pamphlet 2009-01-22 20:47:36 UTC (rev 1088) @@ -292,7 +292,7 @@ to the document command. This will allow it to be changed on the command line. <<environment>>= -VERSION="Axiom (November 2008)" +VERSION="Axiom (January 2009)" SPD=$(shell pwd) SYS=$(notdir $(AXIOM)) SPAD=${SPD}/mnt/${SYS} Modified: trunk/axiom/books/bookvol7.1.pamphlet =================================================================== --- trunk/axiom/books/bookvol7.1.pamphlet 2009-01-19 22:41:01 UTC (rev 1087) +++ trunk/axiom/books/bookvol7.1.pamphlet 2009-01-22 20:47:36 UTC (rev 1088) @@ -233,6 +233,7 @@ \pagepic{ps/v71releasenotes.eps}{releasenotes} \pagefrom{Root Page}{RootPage} \pageto{Online information}{onlineInformation} +\pageto{January 2009}{jan2009} \pageto{November 2008}{nov2008} \pageto{September 2008}{sept2008} \pageto{July 2008}{july2008} @@ -246,6 +247,7 @@ \beginscroll \beginmenu \menudownlink{Online information}{onlineInformation} + \menudownlink{January 2009}{jan2009} \menudownlink{November 2008}{nov2008} \menudownlink{September 2008}{sept2008} \menudownlink{July 2008}{july2008} @@ -275,6 +277,230 @@ \end{page} @ +\pagehead{jan2009}{releasenotes.ht}{January 2009 Release Notes} +\pagepic{ps/v71jan2009.eps}{jan2009} +\pagefrom{What's New in Axiom}{releaseNotes} +<<releasenotes.ht>>= +\begin{page}{jan2009}{January 2009 Release Notes} +\beginscroll +\begin{verbatim} +January 2009 Release Notes + +One major theme of this release was restructuring the system +to move all domains to literate form in book volume 10.3 + +A second major theme was the first Axiom youtube tutorial video. + + + +Book Volume 0: Axiom Reference + + Remove obsolete references to SmallFloat + +Book Volume 1: Axiom Tutorial + + Remove obsolete references to SmallFloat + +Book Volume 4: Axiom Developers Guide + + Add section on generating graphviz graphs + +Book Volume 7.1: Axiom Hyperdoc + + Give a complete path to htadd + +Book Volume 10.3 Axiom Domains + + All domains have been removed from the algebra subdirectory + and are now in literate form in book volume 10.3. Some + domains include a help file, a regression test suite, and + --X function examples for the )display command. Future work + will extend this set. + + Each domain has a fully indexed list of functions exported. + This allows hyperlinked access to functions. + + Each domain includes a graph segment that shows the list of + categories, domains, and packages that provide immediate + support in the prior build layer. + + Each domain includes a dotabb chunk which contains the + source code necessary to recreate the graph. + + Domains which were associated with other domains in the same + original spad file have hyperlinks to connect them. + + +Book Volume 11: Axiom Browser + + Lighten Bayou theme background image + +Axiom Website (src/axiom-website) + + The axiom website is now under git control. + The source tree is in src/axiom-website in the distribution. + + The build order graph exists. It contains a graph of all the + constraints for each level. A line in the graph connects each + category, domain, and package to every category, domain, and + package in the prior layer that is required for the build. + Multilayer constraints are not shown (although the data is + in src/algebra/Makefile chunks) because the graph would be + too complex. + http://axiom-developer.org/axiom-website/hp.svg + + The Computer Algebra Test Suite (CATS) has a new test suite + for ordinary differential equations (kamke*) + http://axiom-developer.org/axiom-website/CATS + + The Ubuntu download now advises XTerm*metaSendsEscape: true + due to misconfiguration of the meta key in emacs. + http://axiom-developer.org/axiom-website/documentation.html + + A new binary for vector linux was added + http://axiom-developer.org/axiom-website/download.html + + A new binary for doyen thumbdrive was added + (work by Jose Alfredo Portes) + http://axiom-developer.org/axiom-website/download.html + + The screenshots were recreated so the sources would be available. + for matrixinmatrix.jpg, heatequation.jpg, axiomfirefox.jpg + http://axiom-developer.org/axiom-website/screenshots.html + + The Axiom Information Sources video page was added, including + a link to the youtube video, a local copy, and the supporting PDF. + http://axiom-developer.org/axiom-website/videos.html + + A broken link to Book Volume 0: Axiom Reference was fixed. + + +Algebra (src/algebra) + + All domains were removed from spad files and moved to + Book Volume 10.3 Axiom Domains + + The Makefile now contains the information necessary to + construct the build order graph as literate chunks. + + The layers were restructured. Files were moved to ensure + that each file was at its lowest possible layer. + + The Guess package was added. However, due to nonstandard + package files the guess function does not yet work properly. + These packages are being rewritten. + + The Guess package has circular references. A new clique + mechanism was added to the Makefile to handle this. + + Automatic regression test files associated with the algebra + sources were reviewed for conforming to regression standards. + + integer.spad was reverted to remove an algebra change that + causes a regression (cherry picked from Fricas in 2007) + +Interpreter (src/interp) + + Tim Lahey added to )credits + Karl Hegbloom added to )credits + + htcheck.boot moves util.ht to the mnt/doc directory + + setq.lisp no longer had redundant release data information + + nrunfast.boot Float has exp : Float -> Float now works + This change was cherry-picked from Fricas. + + +Testing (src/input) + + All regression test files were reviewed and cleaned to + conform to a standard setup. + + A parallel build race condition was fixed in the Makefile + + xpbwpoly.input was removed as it is now associated with + its source domain and automatically generated. + + hyperbolicrules.input was added + + Tim Lahey submitted a fix for bugs in schaum17.input + + A cherry-picked patch from Fricas in 2007 was removed + because it causes an algebra regression. The regression + test file was corrected. + + fixed.input was converted to a regression test file + + +Build process + + The lsp/Makefile was updated for GCL pre3 patches + + An ubuntu64 chunk was added as a system target + + src/Makefile outputs util.ht before compiles (bug 7146) + + books/Makefile uses bash SHELL to fix echo behavior. + The standard sh echo behaves badly. + + books/Makefile now has amssymb in preamble for toc.tex + + +GCL (zips) + + Axiom now includes GCL pre3, the latest snapshot of GCL. + This can be chosen as an option for building in the top + level Makefile.pamphlet + + The lsp/Makefile was updated for GCL pre3 patches + +faq + + FAQ 49: How do I get the lastest GCL? + +readme + + Tim Lahey added + Karl Hegbloom added + + The date information for releases was removed as it is + available elsewhere + + A John Gorka quote was added: + "What matters the most is what you do for free" -- John Gorka + + +Wikipedia + + http://en.wikipedia.org/wiki/Axiom_computer_algebra_system + + Add information about Documentation + + Add link to youtube video + http://www.youtube.com/watch?v=CV8y3UrpadY + + New screenshots were added + + +Youtube + + Axiom Information Sources video was created and uploaded + http://www.youtube.com/watch?v=CV8y3UrpadY + To date there have been 498 views + + +Launchpad + + Gain administrative access to launchpad.net for Axiom (Page) + https://launchpad.net/axiom + +\end{verbatim} +\endscroll +\autobuttons +\end{page} + +@ \pagehead{nov2008}{releasenotes.ht}{November 23, 2008 Release Notes} \pagepic{ps/v71nov2008.eps}{nov2008} \pagefrom{What's New in Axiom}{releaseNotes} Added: trunk/axiom/books/ps/v71jan2009.eps =================================================================== --- trunk/axiom/books/ps/v71jan2009.eps (rev 0) +++ trunk/axiom/books/ps/v71jan2009.eps 2009-01-22 20:47:36 UTC (rev 1088) @@ -0,0 +1,2242 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: GIMP PostScript file plugin V 1.17 by Peter Kirchgessner +%%Title: p71jan2009.eps +%%CreationDate: Thu Jan 22 14:52:39 2009 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%Pages: 1 +%%BoundingBox: 14 14 583 398 +%%EndComments +%%BeginProlog +% Use own dictionary to avoid conflicts +10 dict begin +%%EndProlog +%%Page: 1 1 +% Translate for offset +14.173228346456694 14.173228346456694 translate +% Translate to begin of first scanline +0 383.20424975047132 translate +568.00629921259838 -383.20424975047132 scale +% Image geometry +710 479 8 +% Transformation matrix +[ 710 0 0 479 0 0 ] +% Strings to hold RGB-samples per scanline +/rstr 710 string def +/gstr 710 string def +/bstr 710 string def +{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop} +{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop} +{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop} +true 3 +%%BeginData: 110079 ASCII Bytes +colorimage +r;V=MJQRJ*JQRJ*`E<'<J,~> +r;V=8JO=uUJO=uU`C'S'J,~> +r;V="JLuF)JLuF)`@_#fJ,~> +rr3(0=QJq%n:C([n:C([nB(/%n)RS[rr7K~> +rr3'l6a+"N\q.GD\q.GD]#hMc\?A7krr7K~> +rr3'R/U2_qK7SZ+K7SZ+K?8`JIX!Ftrr7K~> +s8N4(h!F:gJ`MCCJ`MCCJ`Or6#3G%4fi\:SJ,~> +s8N3hWj]%+JXh:]JXh:]JXjiP#,%fpPsbTOJ,~> +s8N3RF*hb0JPUhmJPUhmJPXB`#$,#H9.g2DJ,~> +"TMThkN%3QJ`21=J`2^Ll[8Zil[8Zil[8`k"6I^.s*t~> +"TLiqWhP'4JXM(WJXMUflW*nOlW*nOlW*tQ"/^rCs*t~> +"TL'!CKl?`JP:VgJP;/!lRMj,lRMj,lRMp."(ObOs*t~> +"92-Zi.9^8h1=C5h2pFnHGf.B"iGZBh0R!+oEE-Yh;*CpmIUV#HJRE,:B,h~> +"91NhT7N;ZQ@Y?QQB7C5;k`U#"eek\Q;aLEaT\A:QBkICmE#R+;jN`24o^$~> +"90iq=b01r8qBTc8ruXG.=LTR"aqgl8h#2US-=<i8kLO\m@4B/.8!3&.fY#~> +!^#N&rRq8P!V6;Bg4@t/g4@tQg&ZKfmGnH>H.pttn*T0>ms3X@H11.]#4Hikg<n8/J,~> +!\ggTrK@6^!V6;BPC\pKPC\pmP6"P"m@OR$;3R2@`U09$`DMh_;8qpp#/sH'PDtMTJ,~> +![W#&rC6kg!V6;B7tF0]7tF1*7fb!*m8X=X-V$ZSRI*uXR3tKp-^j@%#+6i/7mo`kJ,~> +!^#DorRM(j;oC9\!.i^Peq)D'et^dsG3ePO"m^?_eopBHh$*+ff%,$1mG.g/G5g%nbWC=~> +!\ga@rK%-$;oC9\!.g5_OF`LEOJ@m<:r;Uf"i=)tOANg]R0CH(OH<;Um?n!l;#ZOWM(jG~> +![Vq^rBpb-;oC9\!.dOh7"IaW7&*-N-C4$q"dUK'6me5e:^*.36prAfm8*hL-N6C65p_$~> +!A<=.dguI`qQ+s_PA6:)B9P$56BcuLJ^a2=s8W#Gs8Us)rr3*!qX``udt-!0dfFURmFDI'Fjnf^ +k5<g)JGdt%k&o/%FlrVQ!ipj%rRV"!!3?%K!TnP(dfIQCJ,~> +!@OrGN=Z%oqQ+s_PA6:)B9P$56Bct[JW95[s8W"Vs8Ur8rr3,uo&$p:JW55?k)BC:^?q*f^.sZI +:;6XipK7?W"hm`kND@4cP6,o0=T+H`=9*OBP6&Bmrf$r5-\)~> +!?Z@[64a*$qQ+s_PA6:)B9P$56BcseJO8oos8W!`s8UqBs8N9%q!-"W6\.RT6KUT8,a7Ug"d:2u +66qcm9D:%99*LM)6:)r]r(@)R/M6oos"+45r(@'S,lU+259GC~> +!A<7,ck$/arRn3jg"`aZgP!Sqn*,DMJ^Eu7s8N'\rQtTE!'B)bs8N6a6"%"tjFP[/d,r[UF5lT5 +"laUMcu\4EcN&@grr@HEcNW<Ld*Qjnr6G[ss8RJmc[>cmI/M:kicG+G!QHaB~> +!@OlEM@]`prRn3jg"`aZgP!Sqn*,C\JVs#Us8N'QrJLXT!&3;fs8N9W2H?dVf8Y?=JVrWJ!DL,m +N<QpfMMb*>r/C\Vq>UFpr/Cll9T"^$]DRWp<WE)!NK$s<s&JuV!P;&)M?/AXJ,~> +!?Z:Y57de%rRn3jg"`aZgP!Sqn*,BfJNr]is8N'FrBL>^!%$Mes8N9L.SHN8a@:_FJNr<^!@*]n +7Knku5<gBSr'gZ9q>UFEr'gjO,<nC;OShQS.f]Mu7Rem-s!mq9!K\Q*563kgJ,~> +!A<.)bRa_7q.'<BQCt)Sm;m`rDZt^9J^!]/s8N*]GQ,hdrt&<3rQi^3c27Ojs8V!NrqYRPbQQu$ +rqYXSbl@\Wiq`Vus8P0)G&FPaYK"f1jSAfNjSd:*i:[*Gi.9+'bkTB_ESg*("l=7Cb]2M;a8gJ\ +rr@<Aa9CF?bfk(`r5\k_rr<"Crr2tCr5\oqEW4/__Cg?~> +!@OfCLCaDGq.'<BQCt)Sm;m`rDZt]IJVWfOs8N*R<W7dRrt&!*q2L/bM=pn;s8TFkr:.DtLBP<Z +rUIZ%L]@Ah](,fUs8OcQ<)9CkUkFMZ_!q<m^khuF"L[Iko!a1*JVX#U!DBohLBY.[LPJO3r.b8L +q>UFlr.bHb98A9q\,;!];?$Uq;?$Rq;>c1M[nH^U!J)VK~> +!?Z4W4:hHQq.'<BQCt)Sm;m`rDZt\SJNWKcs8N*G1B'E9rt%Wtp-q/,5OSMTs8Rc0qWO(@4<QeN +jSS2.4Zkk,s,ZFD4TGF-1,:PQs-Pl15+1U3ka=X649UGnqW`og4FoWi496Ubm6Lo8+Zqk1NVl'B +-i*cB-i?76N?LDH+cZCc!%7dGs!RgG!%7\1!KA9%497GaJ,~> +!A<('aUb%;Sg;Z[PNqO4eC2_7]E!N)J][K)s8N*]GQ,_as#iHjs,Ot<g&K/Vs8Tm*?bucTaiWQB +doN+@]u\=qs0.YZ4TGFCGK7@ns5mh2j8[.tW;jWQal*3VAPTOmJ]WJbq8iYUg?l][g2G*TDqb-* +!HeA=F92D`r4rQjDop+>gAA\dFSl(<FSilTg2Hu4!Pg=<~> +!@O`AKFa_KSg;Z[PNqO4eC2_7]E!M9JV<TIs8N*R<W7[Os#i'Us+c)WW;jdjs8T`O9YLJ$KS7#< +_aBjlVLsR%s/Tcn1&q8-<J,^Hs5ce'^]1Z,U]7<GKXq-1;+%?nJV8T-q1Jc?ZgE;IZUoh'8[J>G +!DWUk9`b8gr.,$X8VDagZho:R:&Fqj:&BJBZUt.L!IcDH~> +!?Z1V3Y.lVSg;Z[PNqO4eC2_7]E!LDJNE?_s8N*G1B'?7s#h[As*m$iF8s!$s8TVs3P#0F3]`N* +Z7qIANB0-#s/.q,-3*uk1-.Ejs5Y^lR/`g5T)Xs73fa6W4?'#jJNA?Cq)SO!MX<M0MBFr@+H$(Z +!@7^B,Q[ojr&b.?+?DP+MYfL9,l@TA,l9\)MBMmZ!B2*N~> +!A;t$`VoiGR)/p$U':T##6Y89!.i+?`U_"Cs#rN.s4h"uli1iss8Q%nJ;=0cGfBIX=&jbMk&\K@ +s%64=GlRe*GK%P@s8#*Rq#=&mL&^=T`:s:4;06n]VLc^;`VROSD:\*c"kIP0`GO3(\cQjNE;d?L +E;snT\cpZ%`Pl]FqRQZGrVlk:qRQ^YD>qKT]In^~> +!@OZ?Jc5WXR)/p$U':T##6Y89!.f]PJb"Bes#r,]s4U"me,O#As8P_S>&4/u<.XN<9gE+djACI- +s$/eP<r`1R<Io^Rs8"TfnGbjDB)h!iJa`V45#YBGE.NRkJbjou8$MB-"gCLJJOcsBHNHh>9)X)< +9)hN]HNgWDJUp=qqKi37rVljiqKi7I8,e&?HRF=~> +!?Z+T2uWdcR)/p$U':T##6Y89!.d([2tAp&s#q`7s4An^\c5qas8PA61/.`,0/r%n6n1D#j"<:j +s#)>^1B7A#1,h-Rs8"'"kPmRn7fVO%2s(',.5<P-21[];2u5H6*f',A"c"-X2]dbP2Zb0&+oO>$ ++o`_`2[+sX2`De5qDSBtrVlj@qDSG1*r\)!1`q5~> +!A;Xp\GcI2/K"OJ,l%Fk\:M0\\GuU,49,<p4*TT^Dkm6h4(nTn4`H=`s8,0SrqudArBd"Rs#Y:` +[K$7gGIY0!s5lIorr5-%Q2gbKRK!4LDi(Z`PC^5p\GE]9B$0M<"j1Ge\7Wn]V?1<.AGrA,AH-3< +V?P+S\@?.nqPF7'rVlk.qPF;9B)]:@Y:b>~> +!@OE8GQ%RF/K"OJ,l%FkGCau/GQ7^@0`V.e0NH['A8qD#0MDHG1/MA$s8+ZfrVZ[@rAA6fs"I>[ +FoVIq<HiYCs5bt<rVnWNB)hccBDqic:g\6UA:\rUGPZLa6E'9h"fOb3G=&8+D?<0)6N(d'6N9CM +D?Zt*GBZBPqJH:"rVljaqJH>46N200E@68~> +!?YtP1B%7V/K"OJ,l%Fk14_4O1B7CP-3*uZ,r3XC=?Q?0,qo;u-o!J7s8+0!r;?R&r?a<"s!9BT +1B7A#r\>'Zs5YI]r;S,u2#mJ$1Aq/#0S)!11A3I(*/3c9"bdpO1)u#G1BJZu+8mts+9*G\1BiIP +1,9i'qD/*nrVlj>qD//+*<%\o0HYf~> +!A;^r])Ma4#V@VJpAfcUJ\(E`s8N'\rHJ;A(-?`Ys1"s+L.?Ifs&=3I_uJd[JbK+<rAu,aJH,X2 +GI4s]s#YG9]&3O\6[8A*9m4,Jk<+:gs&O?JJ\$EDpUUB<b5A13AGi>/b%J;sB?L.M!bD=ArMK^- +s()&*"j1Jh\nB1_VZ:9)rr?U,VZFqQrji-8/q<~> +!@OE8GlIaG#V@VJpAfbhJU$a1s8N'QrDimt(,/aVs0RpgIQ(:,s%?@5MZ;]k=ml;Wr@f?K>6"UV +<H`Wes"IGtGesEL2-05H6WA^<jtL!,s%HF7JTu`jpNQ^*W;LQ-6Mt^)W'Y`R6E'g"!^coRrGD[' +s$HX$"fOb4GXAA+D?*$#rr>C_D?6\&rceHa-\)~> +!?YtP1B.=V#V@VJpAfb"JMQdOs8N'FrA+EQ(*t_Os0-kMFso-Gs$8@p:&j/u1?AHqr$;G#s8ODE +1B7@S-2oY3T`:<)1?ea!1.M<),r4Q]6SX-IJMQpS!??gk1\W!h1BiIP1,9i'r%eBrru_1q![%Fa +r%eM1*&98hL&3Y++8c'<+8[hpKcL(I!AGUG~> +!A;as]`.s7*9u5B"o&(K]Rd`d]`8!44*U\:s8P2CGJ*&6g%.I<K`D(fHbenGO$e3Gs0d6&T%\C4 +s8P0)]Y+:E4*ns,s4K_@JD^C'G2`Ii6?q2``I,J[J\6QHpq-W@bP\:=Abl?+Ac/J1b@nQ$BZp=P +!G2<.AHDgBr29eBBY:ukbP\:=AcD`0AcD]0Ac/J-b@pmf!OFD/~> +!@OH9H2djI*9u5B"o&(KH%C83H2mmF0NJ*ts8P28<I*KteaG@d>lXi:?A$c-Lc&2=s0>m9L<rq# +s8OcQH$TGi0NjIUrm3Sj=hk!0=2Y'&1fgp^_-hl4JU)flpium-WVgZ76i$`^6i:j+WC(rV6`L!% +!CQna6NR3Sr,2b<6[<rEWVgZ76iR,c6iR)c6i:j'WC-Z1!HTW=~> +!?YtP1B.=W*9u5B"o&(K14_4O1B7@S-2fV!ruWOB1=u?Ll7+DAs8TVq6,!;M-SgV[Y!"maa"fFM +s!@Y"s8Nl]2cQ^S`[r\rSc>0;U]6?%15c+G6U7Dt14_4U1'&AKr%e<pq>UF:r%eM1*&98hL&<_- ++923[!WO8>1BiIP1,9i'r%e<prr<!?rr2s?r%eA-*<%\o0HYf~> +!A;dt^A\*=`gQi;/L:B8*$kL`J\H]Lo"P/(!BYN)^An3r4*SE]s8SfZFeo';K]N+*WB4C:^80Q] +qs(Rr^An3pGJ:fks8Mojkbp[>Fdg(QlM^Fd4^*BMUYG\>dWU2UJ\Lro!GTdUWW6Z,rr?[/WWgU\ +^:n=*r2Ka/q>UG,r2KqEBth;qbl"IIB)hmCWiB\2s(;2/!R,9W^&bVoJ,~> +!@OK:HN!mN`gQi;/L:B8*$kL`JU2lnnp:?9!AIOQHN4".0NEFns8SHC<,DU7IGt+mR4q*6HB[(Z +pXkNpHN4"!<I/uks8MlbfT@pN<+gWYl2C(J1.,5kOkKU#X&=LpJU7-<!CNjaDu`9$rr>FaE!<4. +H?qrXr,;X'q>UF^r,;h=6[F&GWVg]A6i[0RE,\2Es$Q^'!NAHcH3&+8J,~> +!?YtP1B%7[`gQi;/L:B8*$kL`JMMd3nhU7F!%%S!s8O/e1,=+Ss,SK^1B7AthYZMn,qUl-JCs_j +`+USTs8ODE1B7@krqYg!H7(-r1,bZdrTKFm/2Au1fD=``.Y0@+1AN[+*/4;H!$D%:!$D+p"bdpO +1)u#G1B8Nmrr=/=1BiIP1,9i'r%eX$s8O/s1EZYs+8dnqKcL(I!AGUG~> +!A;k!_>XE@`gZq,[EWpW`6nPaJ\coRn\P5e!-eCXs#V<H_8>p?8R-_Zs8P/h83TIKGG;pN@mrOI +>BPk?4$.Zc_>ZM45=eaaGDj2OSlnBB7U1,-_5Cd44\0^_J\coRqS<2Jc2=X:BDee6c"k/3CX)dX +pLjE)"jLi!_/%<nWre,jBDnn2B)medWr^I\rkSWF/q<~> +!@ON;I/X*P`gZq,[EWpW`6nPaJUE#rnU1?j!*/uFs"GNpI"(\]5=AY$s8OcC3&*<\<GQu"82`1Z +6;q9>0JHN+I/Yf91,hEh<*t!"C-sg32ap\[Hu;M70fN$CJUE#rqKr<4Wr-l27/V$.W^V;_7B69* +pI+q!"fb"=Hpt(5E<9<37/_-*6i^EgE<3(.rd4`i-\)~> +!?Z"Q1]@@\`gZq,[EWpW`6nPaJMVj5nMC1k!&FL/s!8aB1H"^r1b:C<s8OAs-RC,l1,:XA/ghql +.5!A3,pb>G1]A^#-3G\K1,Ahb%4`bP-S$r-1G^U1,pk6q1P%@X1BAJLr%n'hr%eM1*&BAjL&<b$ ++8dnuKcDm)*/4;H!\#35rA4Hq!%Ih%!JMNm1BB3PJ,~> +!A;q#_u9WB`gQl,3g9Tn"BYR&J]!&Vn\YE[GBa#''7tFP_q+jh5'*@6s8P0)KR%fiU&Mq:WJ,YB +G_iN?Jp2G<_]",NGBe=XKr2`)_nr$qG^+V,_Sa9jKm@liVLcX9_tq7OCsMFM"jUr%_edWcXTd!d +_o$<9mB$E7D#V<Q\h8L~> +!@OQ<IJs3Q`gQl,3g9Tn"BYR&JUN)tnU1ID<E9!G'3nO;I\m(B0iDb7s8OcQ>ujs-C]8_hE*ZOF +<aKfp>ZFf'I/mON<<?6,DZ+teCKX\<=).__"`RaJ<EO*hI=ZhCI/ud:m;W<07=BSQWpOd0W^V>a +7B5`p!NJTfI0"O>J,~> +!?Z"Q1]@@\`gQl,3g9Tn"BYR&JMVj5n2()"r%n@.$oE#)TdDKM1]RJ$1,Jkar%n=-rA4I/rA4=+ +qD8++r%n:,JMVj5q(i$kL$^Z"KcDm)*/3c9"bdpP1E;,91BE1Lr\FR0++O~> +!A;t$`W#oF&_t2%fn@#Go66o-!.i+?`TP2Jq#BPJ<dMO"s8P0)J]32Zai+9tcL%b<c>CP>D9hOO +"jUu(`GNofXoZgbrl"oN/q<~> +!@OQ<IfBBT&_t2%fn@#Go66o-!.fTMIcl.fn,D-+5Z`;]s8OcQJUW0!aaO7[WpOg1W^_Gd7]Pir +"fb%@IR^@)EWN10rdFlm-\)~> +!?Z"Q1]IF^&_t2%fn@#Go66o-!.cqW1ZpP%k5EX_.l&n:s8OB#JMVj5aYNr;L$^Z"KcDm)*/3c9 +"bdpP1E;,91BE1Lr\FR0++O~> +!A<%&aSu5I'5_SV(2[7W6#A@U!.i4BaQCPH9KYphRf:D.3rjJUaFVFSa8p4VmEc$6Dog"<VX;_6 +VJjPsDl2pK!N'f7a8s%.J,~> +!@OW>JH#TV'5_SV(2[7W6#A@U!.fZOJED@b3AENmBE!G]0E>+(J:W6mJ,r/smAgDI7t?+[M=%>I +M+<)H7u?W6!Js>GJ,ssDJ,~> +!?Z%R2#dO_'5_SV(2[7W6#A@U!.ctX2!-Ut-RC/q1B'-1,lf]O1k@L*1]\V3m=b^Y*AfSnC@-]Y +C)o,f*GXtq!GWYS1]]?RJ,~> +!A<+(b4,I_b(7^taomWJGDO3:ao[0=GCdnfb/h`k@f=I8@f=I8@f=FM^b1-~> +!@OZ?Jai_kJUrC7JHTC^<F1.RJHB(V<Io^PJ]NE.5lH9"5lH9"5lH67HRF=~> +!?Z%R2":Qs1k@LG1]oNh1,Jkc!])SeJM_p7a>E3&rA<g[rA<g[rA4O1++O~> +!A<,Xb^muhb^muhbeM@&_Cg?~> +!@OXnJq8N)Jq8N)K"lm<HmaF~> +!?Z$,1k@K71k@K71qtjJ1*;#~> +!A;WJ\:M/@\:M/@\A#HQ/q<~> +!@OCgGCashGCashGJ88$-\)~> +!?Ys*14_3314_331;5LD++O~> +!%rhHJTlZhJTlZh]lsH/J,~> +!%3=tJQ78$JQ78$]i>%[J,~> +!$?bIJMMd3JMMd3]eTR0J,~> +!BpJ^mlUOLrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE'!rrE&u3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE'!rrE'!JcC<$JcE7[3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE'!rrE'!rrE'!rrE'!rr5"ZrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE'!rrE'!rrE'!rrE'!rrE&e!SBPc~> +!BU8[lT>+HrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE'!rrE&u3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE'!rrE'!JcC<$JcE7[3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE'!rrE'!rrE'!rrE'!rr5"ZrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE'!rrE'!rrE'!rrE'!rrE&a!REfW~> +!BC,Yk<&\DrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE'!rrE&u3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE'!rrE'!JcC<$JcE7[3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE'!rrE'!rrE'!rrE'!rr5"ZrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE'!rrE'!rrE'!rrE'!rrE&]!QR0M~> +!BpJ^mlCIK!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<3'!!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<3'!rW%NLJcC<$\GnSirrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE'!rrE'!rrE'!rrE&u3ro9\rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE'!rrE'!rrE'!rrE'!s8MHffKF`~> +!BU8[lT,%G!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<3'!!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<3'!rW%NLJcC<$\GnSirrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE'!rrE'!rrE'!rrE&u3ro9\rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE'!rrE'!rrE'!rrE'!s8M<bcT6R~> +!BC,Yk;iVC!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<3'!!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<3'!rW%NLJcC<$\GnSirrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE'!rrE'!rrE'!rrE&u3ro9\rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE'!rrE'!rrE'!rrE'!s8M0^a#JS~> +!BpJ^n&PJ.!<2uu!6P9@!.k0$s+13[rr<&@s8N)urr<&@s8N)umfD'(J,~> +!BU8[lc9&*!<2uu!6P9@!.k0$s+13[rr<&@s8N)urr<&@s8N)ulN,<mJ,~> +!BC,YkK!W&!<2uu!6P9@!.k0$s+13[rr<&@s8N)urr<&@s8N)uk5iU_J,~> +!BpJ^mf3@es"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE)u!.k0$s+13[rr<&us"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<3'!!<3'!!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE'!rrE'!rrE)u!!*&umfD'(J,~> +!BU8[lMpqas"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE)u!.k0$s+13[rr<&us"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<3'!!<3'!!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE'!rrE'!rrE)u!!*&ulN,<mJ,~> +!BC,Yk5YM]s"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE)u!.k0$s+13[rr<&us"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<3'!!<3'!!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE'!rrE'!rrE)u!!*&uk5iU_J,~> +!BpJ^ml:=IrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<3'!rW%NLJcC<$\GnJfrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE'!rrE'!rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<3'!!<3'!!<3'!rW)rd!SBPc~> +!BU8[lT"nErrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<3'!rW%NLJcC<$\GnJfrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE'!rrE'!rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<3'!!<3'!!<3'!rW)r`!REfW~> +!BC,Yk;`JArrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<3'!rW%NLJcC<$\GnJfrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE'!rrE'!rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<3'!!<3'!!<3'!rW)r\!QR0M~> +!BpJ^mf3@es"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE)u!.k0$s+13[rr<&us"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<3'!!<3'!!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE'!rrE'!rrE)u!!*&umfD'(J,~> +!BU8[lMpqas"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE)u!.k0$s+13[rr<&us"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<3'!!<3'!!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE'!rrE'!rrE)u!!*&ulN,<mJ,~> +!BC,Yk5YM]s"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE)u!.k0$s+13[rr<&us"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<3'!!<3'!!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE'!rrE'!rrE)u!!*&uk5iU_J,~> +!BpJ^ml:=IrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<3'!rW%NLJcC<$\GnJfrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE'!rrE'!rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<3'!!<3'!!<3'!rW)rd!SBPc~> +!BU8[lT"nErrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<3'!rW%NLJcC<$\GnJfrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE'!rrE'!rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<3'!!<3'!!<3'!rW)r`!REfW~> +!BC,Yk;`JArrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<3'!rW%NLJcC<$\GnJfrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE'!rrE'!rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<3'!!<3'!!<3'!rW)r\!QR0M~> +!BpJ^mf3@errE-"p&G[(!<3'!!<3'!!<3'!!<3'!rW!T2!<3'!!<3'!!<3'!!<3'!!<<#urr2ru +rr3!!s82iss82j,rrE'!rrE'!rrE'!rrE)s!##;3rrE'!rrE'!rrE'!rrE'!s8E"Rs8E#Rs8N)V +s8N(Ms+11NrrE&u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE'!s8E#trr<&us"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<3'!!<<#u!<<&e!SBPc~> +!BU8[lMpqarrE-"p&G[(!<3'!!<3'!!<3'!!<3'!rW!T2!<3'!!<3'!!<3'!!<3'!!<<#urr2ru +rr3!!s82iss82j,rrE'!rrE'!rrE'!rrE)s!##;3rrE'!rrE'!rrE'!rrE'!s8E"Rs8E#Rs8N)V +s8N(Ms+11NrrE&u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE'!s8E#trr<&us"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<3'!!<<#u!<<&a!REfW~> +!BC,Yk5YM]rrE-"p&G[(!<3'!!<3'!!<3'!!<3'!rW!T2!<3'!!<3'!!<3'!!<3'!!<<#urr2ru +rr3!!s82iss82j,rrE'!rrE'!rrE'!rrE)s!##;3rrE'!rrE'!rrE'!rrE'!s8E"Rs8E#Rs8N)V +s8N(Ms+11NrrE&u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE'!s8E#trr<&us"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<3'!!<<#u!<<&]!QR0M~> +!BpJ^mfrdlrrE'!s7cR*rrE'!rrE'!rrE'!rrE'!s82j0rrE'!rrE'!rrE'!rrE'!rrE)u!<3!% +!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!!<<#uM>mPU +rr2rul2U\^rr;oss8N'!lMghap](6nli6qas8W#ti;WcWlMpe_m/I%cJcG9?2ZWjXrrE'!rrE'! +rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8E#ts#0rX!<3'!!<3'! +!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#urpKm?4b*~> +!BU8[lN[@hrrE'!s7cR*rrE'!rrE'!rrE'!rrE'!s82j0rrE'!rrE'!rrE'!rrE'!rrE)u!<3!% +!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!!<<#uM>mPU +rr2rul2U\^rr;oss8N'!lMghap](6nli6qas8W#ti;WcWlMpe_m/I%cJcG9?2ZWjXrrE'!rrE'! +rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8E#ts#0rX!<3'!!<3'! +!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#urp'U23e.~> +!BC,Yk6CqdrrE'!s7cR*rrE'!rrE'!rrE'!rrE'!s82j0rrE'!rrE'!rrE'!rrE'!rrE)u!<3!% +!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!!<<#uM>mPU +rr2rul2U\^rr;oss8N'!lMghap](6nli6qas8W#ti;WcWlMpe_m/I%cJcG9?2ZWjXrrE'!rrE'! +rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8E#ts#0rX!<3'!!<3'! +!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#uroX=&3.L~> +!BpJ^mf3@errE-"qu?fu!<<#u%fZP/!<3'!!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<<#u +rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!/^^U +!;uis!9sL`!;c]q!<2uu!:'Ra!;HNn!:'Ua!<)ot!8meV!9a@^!:9^c!.k1@rr<&us"aZT!<3'! +!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#urr2rurr4bSrrE'! +rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&umfD'(J,~> +!BU8[lMpqarrE-"qu?fu!<<#u%fZP/!<3'!!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<<#u +rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!/^^U +!;uis!9sL`!;c]q!<2uu!:'Ra!;HNn!:'Ua!<)ot!8meV!9a@^!:9^c!.k1@rr<&us"aZT!<3'! +!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#urr2rurr4bSrrE'! +rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&ulN,<mJ,~> +!BC,Yk5YM]rrE-"qu?fu!<<#u%fZP/!<3'!!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<<#u +rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!/^^U +!;uis!9sL`!;c]q!<2uu!:'Ra!;HNn!:'Ua!<)ot!8meV!9a@^!:9^c!.k1@rr<&us"aZT!<3'! +!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#urr2rurr4bSrrE'! +rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&uk5iU_J,~> +!BpJ^mfrdlrrE'!s8E!6rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!rrE)u!!rT)rrE'! +rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'! +!<<#uMZ3YVr;Q`sl2L_`rr2rurr2rurr2rulMghapAY*mlMgncrrE&u!!("<!W`6#JcFO*2ZWjX +rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8E#ts#0rX +!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#urpKm? +4b*~> +!BU8[lN[@hrrE'!s8E!6rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!rrE)u!!rT)rrE'! +rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'! +!<<#uMZ3YVr;Q`sl2L_`rr2rurr2rurr2rulMghapAY*mlMgncrrE&u!!("<!W`6#JcFO*2ZWjX +rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8E#ts#0rX +!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#urp'U2 +3e.~> +!BC,Yk6CqdrrE'!s8E!6rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!rrE)u!!rT)rrE'! +rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'! +!<<#uMZ3YVr;Q`sl2L_`rr2rurr2rurr2rulMghapAY*mlMgncrrE&u!!("<!W`6#JcFO*2ZWjX +rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8E#ts#0rX +!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#uroX=& +3.L~> +!BpJ^mf3@errE-"qu@l>!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!qu?s$!<3'!!<<#u +rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!/^^U +!;uis!9sL`!<2uu!<2uu!<3!!!<;utqu?Tpqu?KmqYpNqq>^Bn!WN/prrN3#!<2uu!;ulq!;ulr +!<3#t!;QTn!;lfr!!*&t!;6?n!<3&ss8E#us8E#rs8E#os8;rrs8N''rr<'!rr<%Wrr<&us"aZT +!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#urr2rurr4bS +rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&umfD'( +J,~> +!BU8[lMpqarrE-"qu@l>!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!qu?s$!<3'!!<<#u +rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!/^^U +!;uis!9sL`!<2uu!<2uu!<3!!!<;utqu?Tpqu?KmqYpNqq>^Bn!WN/prrN3#!<2uu!;ulq!;ulr +!<3#t!;QTn!;lfr!!*&t!;6?n!<3&ss8E#us8E#rs8E#os8;rrs8N''rr<'!rr<%Wrr<&us"aZT +!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#urr2rurr4bS +rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&ulN,<m +J,~> +!BC,Yk5YM]rrE-"qu@l>!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!qu?s$!<3'!!<<#u +rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!/^^U +!;uis!9sL`!<2uu!<2uu!<3!!!<;utqu?Tpqu?KmqYpNqq>^Bn!WN/prrN3#!<2uu!;ulq!;ulr +!<3#t!;QTn!;lfr!!*&t!;6?n!<3&ss8E#us8E#rs8E#os8;rrs8N''rr<'!rr<%Wrr<&us"aZT +!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#urr2rurr4bS +rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&uk5iU_ +J,~> +!BpJ^mfrdlrrE'!s8E!BrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'! +rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'! +!<<#uMZ3YVr;Q`sl2L_`rr2rurr2rurr;uurVlitrVlitrVlitqYpNqmf*7erVultq#:Nus8N*! +rrE#t!!)ut!!)rs!!)rs!!)]l!!)lqrrE#t!!)cn!!*#u!!)rs!!)ut!!)ip!!)lq!!)ut!!)ut +rrE*!rrE*!!!%rW2ZWjXrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE'!rrE'!s8E#ts#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<3'!!<3'!!<<#urpKm?4b*~> +!BU8[lN[@hrrE'!s8E!BrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'! +rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'! +!<<#uMZ3YVr;Q`sl2L_`rr2rurr2rurr;uurVlitrVlitrVlitqYpNqmf*7erVultq#:Nus8N*! +rrE#t!!)ut!!)rs!!)rs!!)]l!!)lqrrE#t!!)cn!!*#u!!)rs!!)ut!!)ip!!)lq!!)ut!!)ut +rrE*!rrE*!!!%rW2ZWjXrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE'!rrE'!s8E#ts#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<3'!!<3'!!<<#urp'U23e.~> +!BC,Yk6CqdrrE'!s8E!BrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'! +rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'! +!<<#uMZ3YVr;Q`sl2L_`rr2rurr2rurr;uurVlitrVlitrVlitqYpNqmf*7erVultq#:Nus8N*! +rrE#t!!)ut!!)rs!!)rs!!)]l!!)lqrrE#t!!)cn!!*#u!!)rs!!)ut!!)ip!!)lq!!)ut!!)ut +rrE*!rrE*!!!%rW2ZWjXrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE'!rrE'!s8E#ts#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<3'!!<3'!!<<#uroX=&3.L~> +!BpJ^mf3@errE-"qu?`srW!$"!<;rs!<;rs!ri9#qu?m"!<3'!p&G0o!<<#urr2rurr3!!s82is +s82iurrE)q!!`H'rrE'!s8E!$rrE'!s8Duus82j"rrE'!s8E"Trr<&srr<&_rrrK'!<3'!!<)ot +!;uis!;QQo!;c]q!:Kje!;uis!;QQu!<<'!s8N)urr<&rrr<&trrrK'rrE*!!;6?l!;c]q!;uis +!;HKn!<2uu!;lcu!<<'!q#:<oqu6Wrqu6Wrrr2rurr2rurr2ruN;ikXrr4bSrrE'!rrE'!rrE'! +rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!<2uu!<3!S!<3'!!<3'!!<3'! +!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rVururpKm?4b*~> +!BU8[lMpqarrE-"qu?`srW!$"!<;rs!<;rs!ri9#qu?m"!<3'!p&G0o!<<#urr2rurr3!!s82is +s82iurrE)q!!`H'rrE'!s8E!$rrE'!s8Duus82j"rrE'!s8E"Trr<&srr<&_rrrK'!<3'!!<)ot +!;uis!;QQo!;c]q!:Kje!;uis!;QQu!<<'!s8N)urr<&rrr<&trrrK'rrE*!!;6?l!;c]q!;uis +!;HKn!<2uu!;lcu!<<'!q#:<oqu6Wrqu6Wrrr2rurr2rurr2ruN;ikXrr4bSrrE'!rrE'!rrE'! +rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!<2uu!<3!S!<3'!!<3'!!<3'! +!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rVururp'U23e.~> +!BC,Yk5YM]rrE-"qu?`srW!$"!<;rs!<;rs!ri9#qu?m"!<3'!p&G0o!<<#urr2rurr3!!s82is +s82iurrE)q!!`H'rrE'!s8E!$rrE'!s8Duus82j"rrE'!s8E"Trr<&srr<&_rrrK'!<3'!!<)ot +!;uis!;QQo!;c]q!:Kje!;uis!;QQu!<<'!s8N)urr<&rrr<&trrrK'rrE*!!;6?l!;c]q!;uis +!;HKn!<2uu!;lcu!<<'!q#:<oqu6Wrqu6Wrrr2rurr2rurr2ruN;ikXrr4bSrrE'!rrE'!rrE'! +rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!<2uu!<3!S!<3'!!<3'!!<3'! +!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rVururoX=&3.L~> +!BpJ^mfrdlrrE'!s7u]srrE)s!!<0#s8E!$rrE'!s82j"rrE'!s7cQsrrE'!s8E#trriE&!<3'! +p](Bq!<;fo"TJK%!<;rs"TJK%!<;fo"TJK%!<<#uMZ3YVr;Q`skl1herrE'!rrE#t!!)rs!!)ut +qZ-Km!!)EdrW)Wk!!*#u!W`6#rr;corVm'%s8N*!rrD`l!!)lq!!)rs!!)fo!!)rs!!)orrrDfn +!!)or!!)or!!*#u!!*#u!!*#u!!%rW2ZWjXrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE'!rrE'!rrE'!rrE'!rrE'!s8E#ts#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<3'!!<3'!!<3'!!<3'!!<3'!!<<#urpKm?4b*~> +!BU8[lN[@hrrE'!s7u]srrE)s!!<0#s8E!$rrE'!s82j"rrE'!s7cQsrrE'!s8E#trriE&!<3'! +p](Bq!<;fo"TJK%!<;rs"TJK%!<;fo"TJK%!<<#uMZ3YVr;Q`skl1herrE'!rrE#t!!)rs!!)ut +qZ-Km!!)EdrW)Wk!!*#u!W`6#rr;corVm'%s8N*!rrD`l!!)lq!!)rs!!)fo!!)rs!!)orrrDfn +!!)or!!)or!!*#u!!*#u!!*#u!!%rW2ZWjXrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE'!rrE'!rrE'!rrE'!rrE'!s8E#ts#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<3'!!<3'!!<3'!!<3'!!<3'!!<<#urp'U23e.~> +!BC,Yk6CqdrrE'!s7u]srrE)s!!<0#s8E!$rrE'!s82j"rrE'!s7cQsrrE'!s8E#trriE&!<3'! +p](Bq!<;fo"TJK%!<;rs"TJK%!<;fo"TJK%!<<#uMZ3YVr;Q`skl1herrE'!rrE#t!!)rs!!)ut +qZ-Km!!)EdrW)Wk!!*#u!W`6#rr;corVm'%s8N*!rrD`l!!)lq!!)rs!!)fo!!)rs!!)orrrDfn +!!)or!!)or!!*#u!!*#u!!*#u!!%rW2ZWjXrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE'!rrE'!rrE'!rrE'!rrE'!s8E#ts#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<3'!!<3'!!<3'!!<3'!!<3'!!<<#uroX=&3.L~> +!BpJ^mf3@errE-"p](Bq!<;rs!<<#u#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt!!*#u +!<E/n!!*&s!!*&s!!N<%rrE)u!!N<%rrE)s!!*&s!!<0#s8E"Trr<&srr<&_rrrK'!<3'!!<)ot +!;uis!<2uu!;uis!;c]q!:'Ua!;HKn!<3!"!<3&urr<&mrrrK'!<3'!!;6?l!;c]q!;uis!;QTj +!;lfr!;HKn!;lcr!;lcr!<2uu!<2uu!<2uu!0$pX!<3!S!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rW)rt!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'! +rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8Duus8MHffKF`~> +!BU8[lMpqarrE-"p](Bq!<;rs!<<#u#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt!!*#u +!<E/n!!*&s!!*&s!!N<%rrE)u!!N<%rrE)s!!*&s!!<0#s8E"Trr<&srr<&_rrrK'!<3'!!<)ot +!;uis!<2uu!;uis!;c]q!:'Ua!;HKn!<3!"!<3&urr<&mrrrK'!<3'!!;6?l!;c]q!;uis!;QTj +!;lfr!;HKn!;lcr!;lcr!<2uu!<2uu!<2uu!0$pX!<3!S!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rW)rt!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'! +rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8Duus8M<bcT6R~> +!BC,Yk5YM]rrE-"p](Bq!<;rs!<<#u#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt!!*#u +!<E/n!!*&s!!*&s!!N<%rrE)u!!N<%rrE)s!!*&s!!<0#s8E"Trr<&srr<&_rrrK'!<3'!!<)ot +!;uis!<2uu!;uis!;c]q!:'Ua!;HKn!<3!"!<3&urr<&mrrrK'!<3'!!;6?l!;c]q!;uis!;QTj +!;lfr!;HKn!;lcr!;lcr!<2uu!<2uu!<2uu!0$pX!<3!S!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rW)rt!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'! +rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8Duus8M0^a#JS~> +!BpJ^mfrdlrrE'!s8E!(rrE'!rrE'!s7u^"rrE'!rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t +rriE&!<3'!rW!$"!<<#u!<;rs!ri9#rW!*$!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%iU!!)rs +!!)6_"p"Z'rrE'!rVlitr;Q`srr2rur;Q`sqYpNqmf*7er;Q`sq#:<orVultrr2rupAY<srrE'! +rrD`l!!)lq!!)rs!!)ip!!)lq!!)ut!s&B$!;QQo!;lcr!;lcr!<2uu!<2uu!<2uu!/pk9!<3'! +!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rW)rt2ZWjX +rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8E#tmfD'( +J,~> +!BU8[lN[@hrrE'!s8E!(rrE'!rrE'!s7u^"rrE'!rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t +rriE&!<3'!rW!$"!<<#u!<;rs!ri9#rW!*$!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%iU!!)rs +!!)6_"p"Z'rrE'!rVlitr;Q`srr2rur;Q`sqYpNqmf*7er;Q`sq#:<orVultrr2rupAY<srrE'! +rrD`l!!)lq!!)rs!!)ip!!)lq!!)ut!s&B$!;QQo!;lcr!;lcr!<2uu!<2uu!<2uu!/pk9!<3'! +!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rW)rt2ZWjX +rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8E#tlN,<m +J,~> +!BC,Yk6CqdrrE'!s8E!(rrE'!rrE'!s7u^"rrE'!rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t +rriE&!<3'!rW!$"!<<#u!<;rs!ri9#rW!*$!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%iU!!)rs +!!)6_"p"Z'rrE'!rVlitr;Q`srr2rur;Q`sqYpNqmf*7er;Q`sq#:<orVultrr2rupAY<srrE'! +rrD`l!!)lq!!)rs!!)ip!!)lq!!)ut!s&B$!;QQo!;lcr!;lcr!<2uu!<2uu!<2uu!/pk9!<3'! +!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rW)rt2ZWjX +rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8E#tk5iU_ +J,~> +!BpJ^mf3@errE-"qu@$&!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt +!!*#u!<E/t!!*&s!!*&m!!N<%rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!/UXT!<2uu!;c`q!:Tpf +!<2uu!;uis!;uis!<2uu!<)rt!;c]q!<)ot!;$6j!<)ot!;QQo!<)rt!<)ot!<)rt!;uis!<2uu +!;-9k!;c]q!;uis!;ZWp!;c]q!<2uu!<)ot!;ZWp!;c]q!<)ot!<)ot!<2uu!<2uu!0$pX!<3!S +!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rW)rt!!*#u +1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8Duus8MHf +fKF`~> +!BU8[lMpqarrE-"qu@$&!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt +!!*#u!<E/t!!*&s!!*&m!!N<%rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!/UXT!<2uu!;c`q!:Tpf +!<2uu!;uis!;uis!<2uu!<)rt!;c]q!<)ot!;$6j!<)ot!;QQo!<)rt!<)ot!<)rt!;uis!<2uu +!;-9k!;c]q!;uis!;ZWp!;c]q!<2uu!<)ot!;ZWp!;c]q!<)ot!<)ot!<2uu!<2uu!0$pX!<3!S +!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rW)rt!!*#u +1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8Duus8M<b +cT6R~> +!BC,Yk5YM]rrE-"qu@$&!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt +!!*#u!<E/t!!*&s!!*&m!!N<%rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!/UXT!<2uu!;c`q!:Tpf +!<2uu!;uis!;uis!<2uu!<)rt!;c]q!<)ot!;$6j!<)ot!;QQo!<)rt!<)ot!<)rt!;uis!<2uu +!;-9k!;c]q!;uis!;ZWp!;c]q!<2uu!<)ot!;ZWp!;c]q!<)ot!<)ot!<2uu!<2uu!0$pX!<3!S +!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rW)rt!!*#u +1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8Duus8M0^ +a#JS~> +!BpJ^mfrdlrrE'!s8E!*rrE'!rrE'!rrE)s!!`H'rrE'!s82j$rrE'!rrE)u!!rT)rrE'!rrE)u +!<3!%!<3'!!<<#u!ri9#rVurup&G6q!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%cSrW)corrDNf +!!*#u!!)utrW)rtrW)rtr;ZitrW)iqr;cEg!<E/u!;QTm!<2uu!;ulq!;c]q!<2uu!;HNi!<3#t +!<3#t!;lfp!<3#s!!*&u!<<)u!<)ro!;ulq!<)rs!<<*!!<<*!!0$q:!<3'!!<3'!!<3'!!<3'! +!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rW)rt2ZWjXrrE'!rrE'!rrE'! +rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8E#tmfD'(J,~> +!BU8[lN[@hrrE'!s8E!*rrE'!rrE'!rrE)s!!`H'rrE'!s82j$rrE'!rrE)u!!rT)rrE'!rrE)u +!<3!%!<3'!!<<#u!ri9#rVurup&G6q!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%cSrW)corrDNf +!!*#u!!)utrW)rtrW)rtr;ZitrW)iqr;cEg!<E/u!;QTm!<2uu!;ulq!;c]q!<2uu!;HNi!<3#t +!<3#t!;lfp!<3#s!!*&u!<<)u!<)ro!;ulq!<)rs!<<*!!<<*!!0$q:!<3'!!<3'!!<3'!!<3'! +!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rW)rt2ZWjXrrE'!rrE'!rrE'! +rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8E#tlN,<mJ,~> +!BC,Yk6CqdrrE'!s8E!*rrE'!rrE'!rrE)s!!`H'rrE'!s82j$rrE'!rrE)u!!rT)rrE'!rrE)u +!<3!%!<3'!!<<#u!ri9#rVurup&G6q!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%cSrW)corrDNf +!!*#u!!)utrW)rtrW)rtr;ZitrW)iqr;cEg!<E/u!;QTm!<2uu!;ulq!;c]q!<2uu!;HNi!<3#t +!<3#t!;lfp!<3#s!!*&u!<<)u!<)ro!;ulq!<)rs!<<*!!<<*!!0$q:!<3'!!<3'!!<3'!!<3'! +!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rW)rt2ZWjXrrE'!rrE'!rrE'! +rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8E#tk5iU_J,~> +!BpJ^mf3@errE-"qu@*(!<3'!!<3'!!<;rs#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt +!!*#u!<E/t!!*&s!!*&u!"Al-rrE'!rrE'!rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!.k0$s+13[ +rr<&us"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u +rr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u +!!*&umfD'(J,~> +!BU8[lMpqarrE-"qu@*(!<3'!!<3'!!<;rs#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt +!!*#u!<E/t!!*&s!!*&u!"Al-rrE'!rrE'!rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!.k0$s+13[ +rr<&us"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u +rr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u +!!*&ulN,<mJ,~> +!BC,Yk5YM]rrE-"qu@*(!<3'!!<3'!!<;rs#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt +!!*#u!<E/t!!*&s!!*&u!"Al-rrE'!rrE'!rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!.k0$s+13[ +rr<&us"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u +rr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u +!!*&uk5iU_J,~> +!BpJ^mfrdlrrE'!s8E!*rrE'!rrE'!rrE)q!!N<%rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t +rriE&!<3'!rW!$"!<<#u!<;rs$NC,+!<3'!!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLJcC<$ +\GnJfrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u +!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +rW)rd!SBPc~> +!BU8[lN[@hrrE'!s8E!*rrE'!rrE'!rrE)q!!N<%rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t +rriE&!<3'!rW!$"!<<#u!<;rs$NC,+!<3'!!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLJcC<$ +\GnJfrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u +!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +rW)r`!REfW~> +!BC,Yk6CqdrrE'!s8E!*rrE'!rrE'!rrE)q!!N<%rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t +rriE&!<3'!rW!$"!<<#u!<;rs$NC,+!<3'!!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW%NLJcC<$ +\GnJfrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u +!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +rW)r\!QR0M~> +!BpJ^mf3@errE-"qu?fu!<<#u!ri9#rVuruqu?m"!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt +!!*#u!<E/t!!*&s!!*&s!!<0#s8E!$rrE'!s8E!$rrE'!s82iss82iurrE)u!.k0$s+13[rr<&u +s"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#urr2ru +rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&u +mfD'(J,~> +!BU8[lMpqarrE-"qu?fu!<<#u!ri9#rVuruqu?m"!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt +!!*#u!<E/t!!*&s!!*&s!!<0#s8E!$rrE'!s8E!$rrE'!s82iss82iurrE)u!.k0$s+13[rr<&u +s"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#urr2ru +rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&u +lN,<mJ,~> +!BC,Yk5YM]rrE-"qu?fu!<<#u!ri9#rVuruqu?m"!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt +!!*#u!<E/t!!*&s!!*&s!!<0#s8E!$rrE'!s8E!$rrE'!s82iss82iurrE)u!.k0$s+13[rr<&u +s"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#urr2ru +rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&u +k5iU_J,~> +!BpJ^mfrdlrrE'!s7cQqrrE)u!!<0#s82iurrE)s!!`H'rrE'!s7u]urrE'!s8E#trriE&!<3'! +rW!$"!<<#u!ri9#p](Hs!<3'!qu?m"!<3'!p](Hs!<3'!rW%NLJcC<$\GnJfrrE'!rrE'!rrE'! +rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!<3!W!<3'!!<3'!!<3'! +!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rW)rd!SBPc~> +!BU8[lN[@hrrE'!s7cQqrrE)u!!<0#s82iurrE)s!!`H'rrE'!s7u]urrE'!s8E#trriE&!<3'! +rW!$"!<<#u!ri9#p](Hs!<3'!qu?m"!<3'!p](Hs!<3'!rW%NLJcC<$\GnJfrrE'!rrE'!rrE'! +rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!<3!W!<3'!!<3'!!<3'! +!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rW)r`!REfW~> +!BC,Yk6CqdrrE'!s7cQqrrE)u!!<0#s82iurrE)s!!`H'rrE'!s7u]urrE'!s8E#trriE&!<3'! +rW!$"!<<#u!ri9#p](Hs!<3'!qu?m"!<3'!p](Hs!<3'!rW%NLJcC<$\GnJfrrE'!rrE'!rrE'! +rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!<3!W!<3'!!<3'!!<3'! +!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!rW)r\!QR0M~> +!BpJ^mf3@errE-"p&G*mqu?`squ?fu!<;lq#6+]'!<3'!qu?m"!<3'!rW)rt!!*#u!<E/t!!*&s +!!<0#s7u]urrE'!s7u]srrE)o!!N<%rrE)u!.k0$s+13[rr<&us"aZT!<3'!!<3'!!<3'!!<3'! +!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'! +rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&umfD'(J,~> +!BU8[lMpqarrE-"p&G*mqu?`squ?fu!<;lq#6+]'!<3'!qu?m"!<3'!rW)rt!!*#u!<E/t!!*&s +!!<0#s7u]urrE'!s7u]srrE)o!!N<%rrE)u!.k0$s+13[rr<&us"aZT!<3'!!<3'!!<3'!!<3'! +!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'! +rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&ulN,<mJ,~> +!BC,Yk5YM]rrE-"p&G*mqu?`squ?fu!<;lq#6+]'!<3'!qu?m"!<3'!rW)rt!!*#u!<E/t!!*&s +!!<0#s7u]urrE'!s7u]srrE)o!!N<%rrE)u!.k0$s+13[rr<&us"aZT!<3'!!<3'!!<3'!!<3'! +!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'! +rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&uk5iU_J,~> +!BpJ^ml:=IrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'! +!<3'!rW%NLJcC<$\GnJfrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE'!rrE'!rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<3'!!<3'!!<3'!rW)rd!SBPc~> +!BU8[lT"nErrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'! +!<3'!rW%NLJcC<$\GnJfrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE'!rrE'!rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<3'!!<3'!!<3'!rW)r`!REfW~> +!BC,Yk;`JArrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'! +!<3'!rW%NLJcC<$\GnJfrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE'!rrE'!rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<3'!!<3'!!<3'!rW)r\!QR0M~> +!BpJ^mf3@es"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<<#urr2rurr48ErrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s82j&rrE'!rrE'! +s8E"Ls+13$s1&(/!<3!S!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<3'!!<3'!rW)rt!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE'!rrE'!s8Duus8MHffKF`~> +!BU8[lMpqas"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<<#urr2rurr48ErrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s82j&rrE'!rrE'! +s8E"Ls+13$s1&(/!<3!S!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<3'!!<3'!rW)rt!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE'!rrE'!s8Duus8M<bcT6R~> +!BC,Yk5YM]s"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<<#urr2rurr48ErrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s82j&rrE'!rrE'! +s8E"Ls+13$s1&(/!<3!S!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<3'!!<3'!rW)rt!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE'!rrE'!s8Duus8M0^a#JS~> +!BpJ^ml:=IrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'! +!<3'!rW%NLJcC<$\GnJfrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE'!rrE'!rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<3'!!<3'!!<3'!rW)rd!SBPc~> +!BU8[lT"nErrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'! +!<3'!rW%NLJcC<$\GnJfrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE'!rrE'!rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<3'!!<3'!!<3'!rW)r`!REfW~> +!BC,Yk;`JArrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'! +!<3'!rW%NLJcC<$\GnJfrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'! +rrE'!rrE'!rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<3'!!<3'!!<3'!rW)r\!QR0M~> +!BpJ^mf<Fga8l5>!W`9#aT-nlJcC<$\GlU1s8U1@rr3$"s8U1@!<<&e!SBPc~> +!BU8[lN%"ca8l5>!W`9#aT-nlJcC<$\GlU1s8U1@rr3$"s8U1@!<<&a!REfW~> +!BC,Yk5bS_a8l5>!W`9#aT-nlJcC<$\GlU1s8U1@rr3$"s8U1@!<<&]!QR0M~> +!BpJ^mf<C-!<<)<!.k0$s+13[s2G'<s2G'<mfD'(J,~> +!BU8[lN$t)!<<)<!.k0$s+13[s2G'<s2G'<lN,<mJ,~> +!BC,Yk5bP%!<<)<!.k0$s+13[s2G'<s2G'<k5iU_J,~> +!BpJ^mlCIK!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<3'!!<3!Z!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<3'!!<3%Ms+13$s1&(i!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<3'!!<3'!!<3'!!<3&us#U5\!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<3'!!<3'!!<3'!!<3'!!<<&e!SBPc~> +!BU8[lT,%G!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<3'!!<3!Z!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<3'!!<3%Ms+13$s1&(i!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<3'!!<3'!!<3'!!<3&us#U5\!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<3'!!<3'!!<3'!!<3'!!<<&a!REfW~> +!BC,Yk;iVC!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<3'!!<3!Z!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<3'!!<3%Ms+13$s1&(i!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<3'!!<3'!!<3'!!<3&us#U5\!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'! +!<3'!!<3'!!<3'!!<3'!!<<&]!QR0M~> +!BpJ^mstIi!.b-$!.b-h!<2EffKF`~> +!BU8[l[]%e!.b-$!.b-h!<29bcT6R~> +!BC,YkCEVa!.b-$!.b-h!<2-^a#JS~> +!BpJ^mstIi!.b-$!.b-h!<2EffKF`~> +!BU8[l[]%e!.b-$!.b-h!<29bcT6R~> +!BC,YkCEVa!.b-$!.b-h!<2-^a#JS~> +!BpJ^mt(Lis+13$s+13hs8MHffKF`~> +!BU8[l[f(es+13$s+13hs8M<bcT6R~> +!BC,YkCNYas+13$s+13hs8M0^a#JS~> +!BpJ^mt(Lis+13$s+13hs8MHffKF`~> +!BU8[l[f(es+13$s+13hs8M<bcT6R~> +!BC,YkCNYas+13$s+13hs8M0^a#JS~> +!BpJ^mt(Lis+13$s+13hs8MHffKF`~> +!BU8[l[f(es+13$s+13hs8M<bcT6R~> +!BC,YkCNYas+13$s+13hs8M0^a#JS~> +!BpJ^mt(Lis+13$s+13hs8MHffKF`~> +!BU8[l[f(es+13$s+13hs8M<bcT6R~> +!BC,YkCNYas+13$s+13hs8M0^a#JS~> +!BpJ^mt(Lis+13$s+13hs8MHffKF`~> +!BU8[l[f(es+13$s+13hs8M<bcT6R~> +!BC,YkCNYas+13$s+13hs8M0^a#JS~> +!BpJ^mt(Lis+13$s+13hs8MHffKF`~> +!BU8[l[f(es+13$s+13hs8M<bcT6R~> +!BC,YkCNYas+13$s+13hs8M0^a#JS~> +!BpJ^mt(Lis+13$s+13hs8MHffKF`~> +!BU8[l[f(es+13$s+13hs8M<bcT6R~> +!BC,YkCNYas+13$s+13hs8M0^a#JS~> +!BpJ^mt(Lis+13$s+13hs8MHffKF`~> +!BU8[l[f(es+13$s+13hs8M<bcT6R~> +!BC,YkCNYas+13$s+13hs8M0^a#JS~> +!BpJ^mt(Lis+13$s+13hs8MHffKF`~> +!BU8[l[f(es+13$s+13hs8M<bcT6R~> +!BC,YkCNYas+13$s+13hs8M0^a#JS~> +!BpJ^mt(Lis+13$s+13hs8MHffKF`~> +!BU8[l[f(es+13$s+13hs8M<bcT6R~> +!BC,YkCNYas+13$s+13hs8M0^a#JS~> +!BpJ^mt(Lis+13$s+13hs8MHffKF`~> +!BU8[l[f(es+13$s+13hs8M<bcT6R~> +!BC,YkCNYas+13$s+13hs8M0^a#JS~> +!BpJ^mt(Lis+13$s+13hs8MHffKF`~> +!BU8[l[f(es+13$s+13hs8M<bcT6R~> +!BC,YkCNYas+13$s+13hs8M0^a#JS~> +!BpJ^mt(Lis+13$s+13hs8MHffKF`~> +!BU8[l[f(es+13$s+13hs8M<bcT6R~> +!BC,YkCNYas+13$s+13hs8M0^a#JS~> +!BpJ^mt(Lis+13$s+13hs8MHffKF`~> +!BU8[l[f(es+13$s+13hs8M<bcT6R~> +!BC,YkCNYas+13$s+13hs8M0^a#JS~> +!BpJ^mt(Lis+13$s+13hs8MHffKF`~> +!BU8[l[f(es+13$s+13hs8M<bcT6R~> +!BC,YkCNYas+13$s+13hs8M0^a#JS~> +!BpJ^mt(Lis+13$s+13hs8MHffKF`~> +!BU8[l[f(es+13$s+13hs8M<bcT6R~> +!BC,YkCNYas+13$s+13hs8M0^a#JS~> +!BpJ^mt(Lis+13$s+13hs8MHffKF`~> +!BU8[l[f(es+13$s+13hs8M<bcT6R~> +!BC,YkCNYas+13$s+13hs8M0^a#JS~> +!BpJ^n&GD*!;QTo!8[\T!:Bg`!7LoI!;?Hm!.k0$s+131s8MHffKF`~> +!BU8[lc/u&!;QTo!8[\T!:Bg`!7LoI!;?Hm!.k0$s+131s8M<bcT6R~> +!BC,YkJmQ"!;QTo!8[\T!:Bg`!7LoI!;?Hm!.k0$s+131s8M0^a#JS~> +!BpJ^n(Rg?!:g*e!;QTo!8[\T!:Km`!7LoI!;?Hm!.k0$s+131s8MHffKF`~> +!BU8[le;C;!:g*e!;QTo!8[\T!:Km`!7LoI!;?Hm!.k0$s+131s8M<bcT6R~> +!BC,YkM#t7!:g*e!;QTo!8[\T!:Km`!7LoI!;?Hm!.k0$s+131s8M0^a#JS~> +!BpJ^n*U/J!;ulm!:^$g!58F4!6tQD!.k0$s+13$s8MHffKF`~> +!BU8[lg=`F!;ulm!:^$g!58F4!6tQD!.k0$s+13$s8M<bcT6R~> +!BC,YkO&<B!;ulm!:^$g!58F4!6tQD!.k0$s+13$s8M0^a#JS~> +!BpJ^n*U/J!;uls!<)rt!<<)u!!*&t!;c`q!;lfo!;ulr!!*&t!;lfp!;HNk!;ulr!!*&t!<)rn +!;ulq!<)rr!<<)u!!*&u!!E6$!<<#urVu`prr;corVucqq>^BnrVuis!<;utJcC<$JcDVIrpKm? +4b*~> +!BU8[lg=`F!;uls!<)rt!<<)u!!*&t!;c`q!;lfo!;ulr!!*&t!;lfp!;HNk!;ulr!!*&t!<)rn +!;ulq!<)rr!<<)u!!*&u!!E6$!<<#urVu`prr;corVucqq>^BnrVuis!<;utJcC<$JcDVIrp'U2 +3e.~> +!BC,YkO&<B!;uls!<)rt!<<)u!!*&t!;c`q!;lfo!;ulr!!*&t!;lfp!;HNk!;ulr!!*&t!<)rn +!;ulq!<)rr!<<)u!!*&u!!E6$!<<#urVu`prr;corVucqq>^BnrVuis!<;utJcC<$JcDVIroX=& +3.L~> +!BpJ^n*U/T!!`H'rrE'!s8E#ss8N)rs8N'!s7cTks8N)rs82lps7cTns7lZjs82lps7cTns7lZo +s7lZps6Kacs7lZps7lZns82los7lZps7cSFs+13$s/5nrmfD'(J,~> +!BU8[lg=`P!!`H'rrE'!s8E#ss8N)rs8N'!s7cTks8N)rs82lps7cTns7lZjs82lps7cTns7lZo +s7lZps6Kacs7lZps7lZns82los7lZps7cSFs+13$s/5nrlN,<mJ,~> +!BC,YkO&<L!!`H'rrE'!s8E#ss8N)rs8N'!s7cTks8N)rs82lps7cTns7lZjs82lps7cTns7lZo +s7lZps6Kacs7lZps7lZns82los7lZps7cSFs+13$s/5nrk5iU_J,~> +!BpJ^n*U/S!!rT)rrE'!rr<&ts8N)rs8N*!s8E#ts8N)rs8N)os8N)rs8E#ts8N*!s8E#ss8E#m +s8N)rs8E#ts8N)ss8N)rs8E#ss8E#ts8;rts8N'!s8Duus8E!&rr<'!rr<&ts8N)ts8N)ms8N)s +s8E#ss8E#us8E#ts8N(Ms+13$s/5nrmfD'(J,~> +!BU8[lg=`O!!rT)rrE'!rr<&ts8N)rs8N*!s8E#ts8N)rs8N)os8N)rs8E#ts8N*!s8E#ss8E#m +s8N)rs8E#ts8N)ss8N)rs8E#ss8E#ts8;rts8N'!s8Duus8E!&rr<'!rr<&ts8N)ts8N)ms8N)s +s8E#ss8E#us8E#ts8N(Ms+13$s/5nrlN,<mJ,~> +!BC,YkO&<K!!rT)rrE'!rr<&ts8N)rs8N*!s8E#ts8N)rs8N)os8N)rs8E#ts8N*!s8E#ss8E#m +s8N)rs8E#ts8N)ss8N)rs8E#ss8E#ts8;rts8N'!s8Duus8E!&rr<'!rr<&ts8N)ts8N)ms8N)s +s8E#ss8E#us8E#ts8N(Ms+13$s/5nrk5iU_J,~> +!BpJ^n*U/T!!`H'rrE'!s8E#ss8N)rs8N*!s8N)ts8N)rs8N)os8N)rs8N)ts8N*!s8N)rs8N)n +s8N)rs8N)ts8N)ss8N)rs8N)rs8N)us8E#qs8N*!s8N*!s8N)ps8N)ts8N)ms8N)ss8N)rs8N*! +s8N)ts8N(Ms+13$s/5nrmfD'(J,~> +!BU8[lg=`P!!`H'rrE'!s8E#ss8N)rs8N*!s8N)ts8N)rs8N)os8N)rs8N)ts8N*!s8N)rs8N)n +s8N)rs8N)ts8N)ss8N)rs8N)rs8N)us8E#qs8N*!s8N*!s8N)ps8N)ts8N)ms8N)ss8N)rs8N*! +s8N)ts8N(Ms+13$s/5nrlN,<mJ,~> +!BC,YkO&<L!!`H'rrE'!s8E#ss8N)rs8N*!s8N)ts8N)rs8N)os8N)rs8N)ts8N*!s8N)rs8N)n +s8N)rs8N)ts8N)ss8N)rs8N)rs8N)us8E#qs8N*!s8N*!s8N)ps8N)ts8N)ms8N)ss8N)rs8N*! +s8N)ts8N(Ms+13$s/5nrk5iU_J,~> +!BpJ^n*U/S!!rT)rrE'!rr<&ts8N)rs8N*!s8N)ts8N)rs8N)os8N)rs8N)ts8N*!s7ZNfs8N)r +s8N)ts8N)ss8N)rs8N)rs8N)us8N)qs8N*!s8N*!s8N*!s7lZns8N)ms8N)ss8N)rs8N*!s8N)t +s8N(Ms+13$s/5nrmfD'(J,~> +!BU8[lg=`O!!rT)rrE'!rr<&ts8N)rs8N*!s8N)ts8N)rs8N)os8N)rs8N)ts8N*!s7ZNfs8N)r +s8N)ts8N)ss8N)rs8N)rs8N)us8N)qs8N*!s8N*!s8N*!s7lZns8N)ms8N)ss8N)rs8N*!s8N)t +s8N(Ms+13$s/5nrlN,<mJ,~> +!BC,YkO&<K!!rT)rrE'!rr<&ts8N)rs8N*!s8N)ts8N)rs8N)os8N)rs8N)ts8N*!s7ZNfs8N)r +s8N)ts8N)ss8N)rs8N)rs8N)us8N)qs8N*!s8N*!s8N*!s7lZns8N)ms8N)ss8N)rs8N*!s8N)t +s8N(Ms+13$s/5nrk5iU_J,~> +!BpJ^n*U/T!!`H'rrE'!s8E#ss8N)rs8N*!s8N)ts8N)rs8N)os8N)rs8N)ts8N*!s7ZNfs8N)r +s8N)ts8N)ss8N)rs8N)rs8N)us8N)qs8N*!s8N*!s8N'!s7cTms8N)ms8N)ss8N)rs8N*!s8N)t +s8N(Ms+13$s/5nrmfD'(J,~> +!BU8[lg=`P!!`H'rrE'!s8E#ss8N)rs8N*!s8N)ts8N)rs8N)os8N)rs8N)ts8N*!s7ZNfs8N)r +s8N)ts8N)ss8N)rs8N)rs8N)us8N)qs8N*!s8N*!s8N'!s7cTms8N)ms8N)ss8N)rs8N*!s8N)t +s8N(Ms+13$s/5nrlN,<mJ,~> +!BC,YkO&<L!!`H'rrE'!s8E#ss8N)rs8N*!s8N)ts8N)rs8N)os8N)rs8N)ts8N*!s7ZNfs8N)r +s8N)ts8N)ss8N)rs8N)rs8N)us8N)qs8N*!s8N*!s8N'!s7cTms8N)ms8N)ss8N)rs8N*!s8N)t +s8N(Ms+13$s/5nrk5iU_J,~> +!BpJ^n*U/S!!rT)rrE'!rr<&ss8N)ts8N)us8N)ts8N)rs8N)os8N)rs8N)ts8N*!s8E#fs8N)r +s8N)ts8N)ss8N)rs8E#ss8E#ts8N)qs8N*!s8N*!s8N'#rr<&ss8N)ts8N)ts8N)ss8N)ss8E#s +s8E#us8N)ts8N(Ms+13$s/5nrmfD'(J,~> +!BU8[lg=`O!!rT)rrE'!rr<&ss8N)ts8N)us8N)ts8N)rs8N)os8N)rs8N)ts8N*!s8E#fs8N)r +s8N)ts8N)ss8N)rs8E#ss8E#ts8N)qs8N*!s8N*!s8N'#rr<&ss8N)ts8N)ts8N)ss8N)ss8E#s +s8E#us8N)ts8N(Ms+13$s/5nrlN,<mJ,~> +!BC,YkO&<K!!rT)rrE'!rr<&ss8N)ts8N)us8N)ts8N)rs8N)os8N)rs8N)ts8N*!s8E#fs8N)r +s8N)ts8N)ss8N)rs8E#ss8E#ts8N)qs8N*!s8N*!s8N'#rr<&ss8N)ts8N)ts8N)ss8N)ss8E#s +s8E#us8N)ts8N(Ms+13$s/5nrk5iU_J,~> +!BpJ^n*U/T!!`H'rrE'!s8E#rs7lZps8;rts8;rts7lZos7lZps8;rts8;rts7lZjs7lZps8;rt +s8;rts7lZos7lZps7lZps8;ots8Duus7?<js7lZps7lZos7lZps8;rts8;qKs+13$s/>tsmfD'( +J,~> +!BU8[lg=`P!!`H'rrE'!s8E#rs7lZps8;rts8;rts7lZos7lZps8;rts8;rts7lZjs7lZps8;rt +s8;rts7lZos7lZps7lZps8;ots8Duus7?<js7lZps7lZos7lZps8;rts8;qKs+13$s/>tslN,<m +J,~> +!BC,YkO&<L!!`H'rrE'!s8E#rs7lZps8;rts8;rts7lZos7lZps8;rts8;rts7lZjs7lZps8;rt +s8;rts7lZos7lZps7lZps8;ots8Duus7?<js7lZps7lZos7lZps8;rts8;qKs+13$s/>tsk5iU_ +J,~> +!BpJ^n*U/S!!rT)rrE'!rr<&qs8;rrs8;rts8;rts7lZos7lZps8;rts8;rrs8)fls7lZps8;rt +s8;rts7lZms8;rrs7lZps8;ots8Duus8Duus82iss8E#ss82lqs7lZms8;rrs8;rts8;qKs+13$ +s/>tsmfD'(J,~> +!BU8[lg=`O!!rT)rrE'!rr<&qs8;rrs8;rts8;rts7lZos7lZps8;rts8;rrs8)fls7lZps8;rt +s8;rts7lZms8;rrs7lZps8;ots8Duus8Duus82iss8E#ss82lqs7lZms8;rrs8;rts8;qKs+13$ +s/>tslN,<mJ,~> +!BC,YkO&<K!!rT)rrE'!rr<&qs8;rrs8;rts8;rts7lZos7lZps8;rts8;rrs8)fls7lZps8;rt +s8;rts7lZms8;rrs7lZps8;ots8Duus8Duus82iss8E#ss82lqs7lZms8;rrs8;rts8;qKs+13$ +s/>tsk5iU_J,~> +!BpJ^n*U/J!.k0$s+13$s+143s8MHffKF`~> +!BU8[lg=`F!.k0$s+13$s+143s8M<bcT6R~> +!BC,YkO&<B!.k0$s+13$s+143s8M0^a#JS~> +!BpJ^n*U/J!.k0$s+13$s+143s8MHffKF`~> +!BU8[lg=`F!.k0$s+13$s+143s8M<bcT6R~> +!BC,YkO&<B!.k0$s+13$s+143s8M0^a#JS~> +!BpJ^mt(Lis+13$s+13hs8MHffKF`~> +!BU8[l[f(es+13$s+13hs8M<bcT6R~> +!BC,YkCNYas+13$s+13hs8M0^a#JS~> +!BpJ^mt(Lis+13$s+13hs8MHffKF`~> +!BU8[l[f(es+13$s+13hs8M<bcT6R~> +!BC,YkCNYas+13$s+13hs8M0^a#JS~> +!BpJ^mt(Lis+13$s+13hs8MHffKF`~> +!BU8[l[f(es+13$s+13hs8M<bcT6R~> +!BC,YkCNYas+13$s+13hs8M0^a#JS~> +!BpJ^mt(Lis+13$s+13hs8MHffKF`~> +!BU8[l[f(es+13$s+13hs8M<bcT6R~> +!BC,YkCNYas+13$s+13hs8M0^a#JS~> +!BpJ^mt(Lis+13$s+13hs8MHffKF`~> +!BU8[l[f(es+13$s+13hs8M<bcT6R~> +!BC,YkCNYas+13$s+13hs8M0^a#JS~> +!BpJ^mt(Lis+13$s+13hs8MHffKF`~> +!BU8[l[f(es+13$s+13hs8M<bcT6R~> +!BC,YkCNYas+13$s+13hs8M0^a#JS~> +!BpJ^mt(Lis+13$s+13hs8MHffKF`~> +!BU8[l[f(es+13$s+13hs8M<bcT6R~> +!BC,YkCNYas+13$s+13hs8M0^a#JS~> +!BpJ^mt(Lis+13$s+13hs8MHffKF`~> +!BU8[l[f(es+13$s+13hs8M<bcT6R~> +!BC,YkCNYas+13$s+13hs8M0^a#JS~> +!BpJ^mt(Lis+13$s+13hs8MHffKF`~> +!BU8[l[f(es+13$s+13hs8M<bcT6R~> +!BC,YkCNYas+13$s+13hs8M0^a#JS~> +!BpJ^mth#B!;c`o!;c`o!;c`o!.k0$s+13$s5X.YmfD'(J,~> +!BU8[l\PT>!;c`o!;c`o!;c`o!.k0$s+13$s5X.YlN,<mJ,~> +!BC,YkD90:!;c`o!;c`o!;c`o!.k0$s+13$s5X.Yk5iU_J,~> +!BpJ^n(Rg<!4W"*!;ulo!;ulo!;ulo!.k0$s+13$s5a4ZmfD'(J,~> +!BU8[le;C8!4W"*!;ulo!;ulo!;ulo!.k0$s+13$s5a4ZlN,<mJ,~> +!BC,YkM#t4!4W"*!;ulo!;ulo!;ulo!.k0$s+13$s5a4Zk5iU_J,~> +!BpJ^n*U/J!;c`l!4`(/!<3#t!<)rt!<<*!!;uls!<<*!!<)rt!<)rt!.k0$s+13$s5j:[mfD'( +J,~> +!BU8[lg=`F!;c`l!4`(/!<3#t!<)rt!<<*!!;uls!<<*!!<)rt!<)rt!.k0$s+13$s5j:[lN,<m +J,~> +!BC,YkO&<B!;c`l!4`(/!<3#t!<)rt!<<*!!;uls!<<*!!<)rt!<)rt!.k0$s+13$s5j:[k5iU_ +J,~> +!BpJ^n*U/J!;HNn!;ulo!<3#t!!*&t!<3#t!<<)t!<)rp!<3#s!<<)u!<<)t!<<)t!;c`q!<)rt +!<3#u!<)rt!<3#u!<)rt!<3#u!<)rt!.k0$s+13$s5j:[mfD'(J,~> +!BU8[lg=`F!;HNn!;ulo!<3#t!!*&t!<3#t!<<)t!<)rp!<3#s!<<)u!<<)t!<<)t!;c`q!<)rt +!<3#u!<)rt!<3#u!<)rt!<3#u!<)rt!.k0$s+13$s5j:[lN,<mJ,~> +!BC,YkO&<B!;HNn!;ulo!<3#t!!*&t!<3#t!<<)t!<)rp!<3#s!<<)u!<<)t!<<)t!;c`q!<)rt +!<3#u!<)rt!<3#u!<)rt!<3#u!<)rt!.k0$s+13$s5j:[k5iU_J,~> +!BpJ^n*U/T!!`H'rrE'!s8E#ms8N)ts7lZps7cTos8E#us8;rss7lZps7ZKns8;rts8;ris8N)u +s8N)ts8N)us8N)ts8N)us8N)ts8N(Ms+13$s+143s8MHffKF`~> +!BU8[lg=`P!!`H'rrE'!s8E#ms8N)ts7lZps7cTos8E#us8;rss7lZps7ZKns8;rts8;ris8N)u +s8N)ts8N)us8N)ts8N)us8N)ts8N(Ms+13$s+143s8M<bcT6R~> +!BC,YkO&<L!!`H'rrE'!s8E#ms8N)ts7lZps7cTos8E#us8;rss7lZps7ZKns8;rts8;ris8N)u +s8N)ts8N)us8N)ts8N)us8N)ts8N(Ms+13$s+143s8M0^a#JS~> +!BpJ^n*U/S!!rT)rrE'!rr<&ns8N)ts8N)ts8N)us8E#ts8N)us8N)ts8N)us8N)ts8N)ts8;rt +s8N*!s8N)ts8N)ks8E#ts8N)ts8N)us8N)ts8N)us8N)us8E"Ls+13$s+143s8MHffKF`~> +!BU8[lg=`O!!rT)rrE'!rr<&ns8N)ts8N)ts8N)us8E#ts8N)us8N)ts8N)us8N)ts8N)ts8;rt +s8N*!s8N)ts8N)ks8E#ts8N)ts8N)us8N)ts8N)us8N)us8E"Ls+13$s+143s8M<bcT6R~> +!BC,YkO&<K!!rT)rrE'!rr<&ns8N)ts8N)ts8N)us8E#ts8N)us8N)ts8N)us8N)ts8N)ts8;rt +s8N*!s8N)ts8N)ks8E#ts8N)ts8N)us8N)ts8N)us8N)us8E"Ls+13$s+143s8M0^a#JS~> +!BpJ^n*U/T!!`H'rrE'!s8E#ms8N)ns8N)us8N)ts8N)us8N)ts8N)os8N)ts8E#ps8N)ts8N)l +s8E#ss8N)ts8N)us8N)ts8N)ts7u_Hs+13$s+143s8MHffKF`~> +!BU8[lg=`P!!`H'rrE'!s8E#ms8N)ns8N)us8N)ts8N)us8N)ts8N)os8N)ts8E#ps8N)ts8N)l +s8E#ss8N)ts8N)us8N)ts8N)ts7u_Hs+13$s+143s8M<bcT6R~> +!BC,YkO&<L!!`H'rrE'!s8E#ms8N)ns8N)us8N)ts8N)us8N)ts8N)os8N)ts8E#ps8N)ts8N)l +s8E#ss8N)ts8N)us8N)ts8N)ts7u_Hs+13$s+143s8M0^a#JS~> +!BpJ^n*U/S!!rT)rrE'!rr<&ts8N)ts8N)ts7lZos8N)ts8N)us8N)ts8N)us7lZns8N)os8N*! +s8N)ls8E#rs8N)ts8N)us8N)ts8N)ss8E!"rr<%Ms+13$s+143s8MHffKF`~> +!BU8[lg=`O!!rT)rrE'!rr<&ts8N)ts8N)ts7lZos8N)ts8N)us8N)ts8N)us7lZns8N)os8N*! +s8N)ls8E#rs8N)ts8N)us8N)ts8N)ss8E!"rr<%Ms+13$s+143s8M<bcT6R~> +!BC,YkO&<K!!rT)rrE'!rr<&ts8N)ts8N)ts7lZos8N)ts8N)us8N)ts8N)us7lZns8N)os8N*! +s8N)ls8E#rs8N)ts8N)us8N)ts8N)ss8E!"rr<%Ms+13$s+143s8M0^a#JS~> +!BpJ^n*U/T!!`H'rrE'!s8E#ss8N)ts8N)us7cTns8N)ts8N)us8N)ts8N*!s7cTms8N)os8N'# +rr<&ls8E#qs8N)ts8N)us8N)ts8N)os8N(Ms+13$s+143s8MHffKF`~> +!BU8[lg=`P!!`H'rrE'!s8E#ss8N)ts8N)us7cTns8N... [truncated message content] |
From: ASEE 2. <as...@as...> - 2009-01-21 01:06:24
|
Dear Colleagues, If you received this email in error, please forward it to the appropriate department at your institution. If you wish to unsubscribe please follow the unsubscribe link at bottom of the email. Please do not reply to this message. If you need to contact us please email us at in...@as... ********************************************************************* * American Society for Engineering Education * * ASEE Spring 2009 Northeast Conference * * * * * * University of Bridgeport * * * * * * http://www.asee2009conference.org * * * * * * April 3-4, 2009 * * * ********************************************************************* --------------------------------------------------------------------- CONFERENCE OVERVIEW --------------------------------------------------------------------- The Spring 2009 Northeast ASEE Conference will be held on April 3-4, 2009 at the University of Bridgeport, Bridgeport, Connecticut, U.S.A. This year's conference theme is: Engineering in the New Global Economy. In the coming years, our world will continue to face economical, environmental and energy related problems. How is Engineering and Engineering Technology Education responding to the needs of our society and the world? This will be the theme for an exhilarating and thought provoking weekend of professional workshops, presentations, and discussions at the University of Bridgeport. The ASEE Northeast Section is soliciting faculty papers, student papers and student posters which address the various challenges and paradigms in this technological world through research and instructional programs in Engineering and Engineering Technology education. There are three conference tracks: 1. Regular/ faculty papers 2. Student papers and 3. Student posters The deadline for abstract submission is February 27th, 2009. Prospective authors are invited to submit their abstracts online in Microsoft Word or Adobe PDF format through the conference website at http://www.asee2009conference.org Suggested conference topics are listed below. Other innovations in course and laboratory experiences and assessments are also most welcome for submission: Chemical and Biological Engineering Civil & Environmental Engineering Electrical & Computer Engineering Engineering Technology/ Community Colleges Industrial, Automation and Manufacturing Engineering Engineering Technology and Community Colleges Innovations In Engineering Education First Year Experiences K-12 Education (Engineering Curriculum Integration) Mechanical Engineering Computer Science and Information Technology Women in Engineering and Computer Science Robotics Service Learning Sustainability Design Projects Engineering and Technology in the Liberal Arts Systems Engineering Globalization Ethics Diversity In Engineering Multidisciplinary Research Paper and other Proposal Submissions ================= Prospective authors are invited to submit their abstracts online in Microsoft Word or Adobe PDF format through the website of the conference at http://www.asee2009conference.org. Proposals for special sessions, tutorials, worskshops and exhibitions are also weclcome. Please check the conference website regarding instructions for these proposal submissions. Important Dates =============== Abstracts due 27th February, 2009 Acceptance notification 6th March, 2009 Final manuscript & Registration due 20th March, 2009 ------------------------------------------------------------------------ Sarosh Patel ASEE NE 2009 Technical Support Team University of Bridgeport 221 University Avenue e-mail:in...@as... Bridgeport, CT 06604, U.S.A. http://www.asee2009conference.org ------------------------------------------------------------------------ Click here on http://server1.streamsend.com/streamsend/unsubscribe.php?cd=3326&md=182&ud=b6239efea3a223856496b914a2e58d33 <" rel="nofollow">http://server1.streamsend.com/streamsend/unsubscribe.php?cd=3326&md=182&ud=b6239efea3a223856496b914a2e58d33> to update your profile or Unsubscribe |
From: <da...@us...> - 2009-01-19 22:41:04
|
Revision: 1087 http://axiom.svn.sourceforge.net/axiom/?rev=1087&view=rev Author: daly Date: 2009-01-19 22:41:01 +0000 (Mon, 19 Jan 2009) Log Message: ----------- 20090118 tpd src/axiom-website/patches.html 20090118.01.tpd.patch 20090118 tpd books/bookvol10.3 add exports 20090118 tpd books/ps/v103colorchart.ps added 20090118 tpd books/ps/v103tuple.ps fixed 20090118 tpd books/ps/v103openmathdevice.ps fixed 20090118 tpd books/ps/v103openmathconnection.ps fixed 20090118 tpd books/ps/v103odeintensityfunctionstable.ps fixed 20090118 tpd books/ps/v103indexedtwodimensionalarray.ps fixed 20090118 tpd books/ps/v103indexeddirectproductorderedabelianmonoid.ps fixed Modified Paths: -------------- trunk/axiom/books/bookvol10.3.pamphlet trunk/axiom/books/ps/v103indexeddirectproductorderedabelianmonoid.ps trunk/axiom/books/ps/v103indexedtwodimensionalarray.ps trunk/axiom/books/ps/v103odeintensityfunctionstable.ps trunk/axiom/books/ps/v103openmathconnection.ps trunk/axiom/books/ps/v103openmathdevice.ps trunk/axiom/books/ps/v103tuple.ps trunk/axiom/changelog trunk/axiom/src/axiom-website/patches.html Added Paths: ----------- trunk/axiom/books/ps/v103colorchart.ps Modified: trunk/axiom/books/bookvol10.3.pamphlet =================================================================== --- trunk/axiom/books/bookvol10.3.pamphlet 2009-01-19 00:25:38 UTC (rev 1086) +++ trunk/axiom/books/bookvol10.3.pamphlet 2009-01-19 22:41:01 UTC (rev 1087) @@ -297,6 +297,13 @@ domains, categories, and packages that are in the layer immediately below in the build order. For the full list see the algebra Makefile where this information is maintained. + +Each domain is preceded by a picture. The picture indicates several +things. The colors indicate whether the name refers to a category, +domain, or package. An ellipse means that the name refers to something +in the bootstrap set. Thus, + +\includegraphics[scale=0.85]{ps/v103colorchart.ps} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %\pagehead{Domain}{ABB} %\pagepic{ps/v103domain.ps}{ABB}{1.00} @@ -6570,79 +6577,79 @@ \pageto{LieSquareMatrix}{LSQM} {\bf Exports:}\\ -\begin{tabular}{lll} +\begin{tabular}{ll} \cross{LIE}{0} & -\cross{LIE}{alternative?} & -\cross{LIE}{antiAssociative?} \\ -\cross{LIE}{antiCommutative?} & +\cross{LIE}{alternative?} \\ +\cross{LIE}{antiAssociative?} & +\cross{LIE}{antiCommutative?} \\ \cross{LIE}{antiCommutator} & \cross{LIE}{apply} \\ \cross{LIE}{associative?} & -\cross{LIE}{associator} & -\cross{LIE}{associatorDependence} \\ -\cross{LIE}{basis} & +\cross{LIE}{associator} \\ +\cross{LIE}{associatorDependence} & +\cross{LIE}{basis} \\ \cross{LIE}{coerce} & \cross{LIE}{commutative?} \\ \cross{LIE}{commutator} & -\cross{LIE}{conditionsForIdempotents} & -\cross{LIE}{convert} \\ -\cross{LIE}{coordinates} & +\cross{LIE}{conditionsForIdempotents} \\ +\cross{LIE}{convert} & +\cross{LIE}{coordinates} \\ \cross{LIE}{flexible?} & \cross{LIE}{hash} \\ \cross{LIE}{jacobiIdentity?} & -\cross{LIE}{jordanAdmissible?} & -\cross{LIE}{jordanAlgebra?} \\ -\cross{LIE}{latex} & +\cross{LIE}{jordanAdmissible?} \\ +\cross{LIE}{jordanAlgebra?} & +\cross{LIE}{latex} \\ \cross{LIE}{leftAlternative?} & \cross{LIE}{leftCharacteristicPolynomial} \\ \cross{LIE}{leftDiscriminant} & -\cross{LIE}{leftMinimalPolynomial} & -\cross{LIE}{leftNorm} \\ -\cross{LIE}{leftPower} & +\cross{LIE}{leftMinimalPolynomial} \\ +\cross{LIE}{leftNorm} & +\cross{LIE}{leftPower} \\ \cross{LIE}{leftRankPolynomial} & \cross{LIE}{leftRecip} \\ \cross{LIE}{leftRegularRepresentation} & -\cross{LIE}{leftTrace} & -\cross{LIE}{leftTraceMatrix} \\ -\cross{LIE}{leftUnit} & +\cross{LIE}{leftTrace} \\ +\cross{LIE}{leftTraceMatrix} & +\cross{LIE}{leftUnit} \\ \cross{LIE}{leftUnits} & \cross{LIE}{lieAdmissible?} \\ \cross{LIE}{lieAlgebra?} & -\cross{LIE}{noncommutativeJordanAlgebra?} & -\cross{LIE}{plenaryPower} \\ -\cross{LIE}{powerAssociative?} & +\cross{LIE}{noncommutativeJordanAlgebra?} \\ +\cross{LIE}{plenaryPower} & +\cross{LIE}{powerAssociative?} \\ \cross{LIE}{rank} & \cross{LIE}{recip} \\ \cross{LIE}{represents} & -\cross{LIE}{represents} & -\cross{LIE}{rightAlternative?} \\ -\cross{LIE}{rightCharacteristicPolynomial} & +\cross{LIE}{represents} \\ +\cross{LIE}{rightAlternative?} & +\cross{LIE}{rightCharacteristicPolynomial} \\ \cross{LIE}{rightDiscriminant} & \cross{LIE}{rightMinimalPolynomial} \\ \cross{LIE}{rightNorm} & -\cross{LIE}{rightPower} & -\cross{LIE}{rightRankPolynomial} \\ -\cross{LIE}{rightRecip} & +\cross{LIE}{rightPower} \\ +\cross{LIE}{rightRankPolynomial} & +\cross{LIE}{rightRecip} \\ \cross{LIE}{rightRegularRepresentation} & \cross{LIE}{rightTrace} \\ \cross{LIE}{rightTraceMatrix} & -\cross{LIE}{rightUnit} & -\cross{LIE}{rightUnits} \\ -\cross{LIE}{sample} & +\cross{LIE}{rightUnit} \\ +\cross{LIE}{rightUnits} & +\cross{LIE}{sample} \\ \cross{LIE}{someBasis} & \cross{LIE}{structuralConstants} \\ \cross{LIE}{structuralConstants} & -\cross{LIE}{subtractIfCan} & -\cross{LIE}{unit} \\ -\cross{LIE}{zero?} & +\cross{LIE}{subtractIfCan} \\ +\cross{LIE}{unit} & +\cross{LIE}{zero?} \\ \cross{LIE}{?*?} & \cross{LIE}{?**?} \\ \cross{LIE}{?+?} & -\cross{LIE}{?-?} & -\cross{LIE}{-?} \\ -\cross{LIE}{?=?} & +\cross{LIE}{?-?} \\ +\cross{LIE}{-?} & +\cross{LIE}{?=?} \\ \cross{LIE}{?\~{}=?} & -\cross{LIE}{?.?} +\cross{LIE}{?.?} \end{tabular} <<domain LIE AssociatedLieAlgebra>>= @@ -10244,8 +10251,8 @@ \cross{CARD}{countable?} & \cross{CARD}{finite?} \\ \cross{CARD}{generalizedContinuumHypothesisAssumed} & -\cross{CARD}{generalizedContinuumHypothesisAssumed?} \\ -\cross{CARD}{hash} & +\cross{CARD}{hash} \\ +\cross{CARD}{generalizedContinuumHypothesisAssumed?} & \cross{CARD}{latex} \\ \cross{CARD}{max} & \cross{CARD}{min} \\ @@ -15653,23 +15660,23 @@ \pageto{QueryEquation}{QEQUAT} {\bf Exports:}\\ -\begin{tabular}{lllll} +\begin{tabular}{llll} \cross{DLIST}{any?} & \cross{DLIST}{child?} & \cross{DLIST}{children} & -\cross{DLIST}{coerce} & -\cross{DLIST}{concat} \\ +\cross{DLIST}{coerce} \\ +\cross{DLIST}{concat} & \cross{DLIST}{concat!} & \cross{DLIST}{construct} & -\cross{DLIST}{convert} & +\cross{DLIST}{convert} \\ \cross{DLIST}{copy} & -\cross{DLIST}{copyInto!} \\ +\cross{DLIST}{copyInto!} & \cross{DLIST}{count} & -\cross{DLIST}{cycleEntry} & +\cross{DLIST}{cycleEntry} \\ \cross{DLIST}{cycleLength} & \cross{DLIST}{cycleSplit!} & -\cross{DLIST}{cycleTail} \\ -\cross{DLIST}{cyclic?} & +\cross{DLIST}{cycleTail} & +\cross{DLIST}{cyclic?} \\ \cross{DLIST}{datalist} & \cross{DLIST}{delete} & \cross{DLIST}{delete!} & @@ -15677,19 +15684,19 @@ \cross{DLIST}{elt} & \cross{DLIST}{empty} & \cross{DLIST}{empty?} & -\cross{DLIST}{entries} & -\cross{DLIST}{entry?} \\ +\cross{DLIST}{entries} \\ +\cross{DLIST}{entry?} & \cross{DLIST}{eq?} & \cross{DLIST}{eval} & -\cross{DLIST}{every?} & +\cross{DLIST}{every?} \\ \cross{DLIST}{explicitlyFinite?} & -\cross{DLIST}{fill!} \\ +\cross{DLIST}{fill!} & \cross{DLIST}{find} & -\cross{DLIST}{first} & +\cross{DLIST}{first} \\ \cross{DLIST}{hash} & \cross{DLIST}{index?} & -\cross{DLIST}{indices} \\ -\cross{DLIST}{insert} & +\cross{DLIST}{indices} & +\cross{DLIST}{insert} \\ \cross{DLIST}{insert!} & \cross{DLIST}{last} & \cross{DLIST}{latex} & @@ -15697,19 +15704,19 @@ \cross{DLIST}{leaves} & \cross{DLIST}{less?} & \cross{DLIST}{list} & -\cross{DLIST}{map} & -\cross{DLIST}{map!} \\ +\cross{DLIST}{map} \\ +\cross{DLIST}{map!} & \cross{DLIST}{max} & \cross{DLIST}{maxIndex} & -\cross{DLIST}{member?} & +\cross{DLIST}{member?} \\ \cross{DLIST}{members} & -\cross{DLIST}{merge} \\ +\cross{DLIST}{merge} & \cross{DLIST}{merge!} & -\cross{DLIST}{min} & +\cross{DLIST}{min} \\ \cross{DLIST}{minIndex} & \cross{DLIST}{more?} & -\cross{DLIST}{new} \\ -\cross{DLIST}{node?} & +\cross{DLIST}{new} & +\cross{DLIST}{node?} \\ \cross{DLIST}{nodes} & \cross{DLIST}{parts} & \cross{DLIST}{position} & @@ -15717,19 +15724,19 @@ \cross{DLIST}{qelt} & \cross{DLIST}{qsetelt!} & \cross{DLIST}{reduce} & -\cross{DLIST}{remove} & -\cross{DLIST}{remove!} \\ +\cross{DLIST}{remove} \\ +\cross{DLIST}{remove!} & \cross{DLIST}{removeDuplicates} & \cross{DLIST}{removeDuplicates!} & -\cross{DLIST}{rest} & +\cross{DLIST}{rest} \\ \cross{DLIST}{reverse} & -\cross{DLIST}{reverse!} \\ +\cross{DLIST}{reverse!} & \cross{DLIST}{sample} & -\cross{DLIST}{second} & +\cross{DLIST}{second} \\ \cross{DLIST}{select} & \cross{DLIST}{select!} & -\cross{DLIST}{setchildren!} \\ -\cross{DLIST}{setelt} & +\cross{DLIST}{setchildren!} & +\cross{DLIST}{setelt} \\ \cross{DLIST}{setfirst!} & \cross{DLIST}{setlast!} & \cross{DLIST}{setrest!} & @@ -15737,19 +15744,19 @@ \cross{DLIST}{size?} & \cross{DLIST}{sort} & \cross{DLIST}{sort!} & -\cross{DLIST}{sorted?} & -\cross{DLIST}{split!} \\ +\cross{DLIST}{sorted?} \\ +\cross{DLIST}{split!} & \cross{DLIST}{swap!} & \cross{DLIST}{tail} & -\cross{DLIST}{third} & +\cross{DLIST}{third} \\ \cross{DLIST}{value} & -\cross{DLIST}{\#{}?} \\ +\cross{DLIST}{\#{}?} & \cross{DLIST}{?$<$?} & -\cross{DLIST}{?$<=$?} & +\cross{DLIST}{?$<=$?} \\ \cross{DLIST}{?=?} & \cross{DLIST}{?$>$?} & -\cross{DLIST}{?$>=$?} \\ -\cross{DLIST}{?.?} & +\cross{DLIST}{?$>=$?} & +\cross{DLIST}{?.?} \\ \cross{DLIST}{?\~{}=?} & \cross{DLIST}{?.count} & \cross{DLIST}{?.sort} & @@ -15757,7 +15764,7 @@ \cross{DLIST}{?.last} & \cross{DLIST}{?.rest} & \cross{DLIST}{?.first} & -\cross{DLIST}{?.value} & +\cross{DLIST}{?.value} \end{tabular} <<domain DLIST DataList>>= @@ -19584,11 +19591,11 @@ \cross{DMP}{retractIfCan} & \cross{DMP}{reorder} \\ \cross{DMP}{retract} & -\cross{DMP}{sample} & -\cross{DMP}{solveLinearPolynomialEquation} \\ +\cross{DMP}{solveLinearPolynomialEquation} & +\cross{DMP}{sample} \\ \cross{DMP}{squareFree} & -\cross{DMP}{squareFreePart} & -\cross{DMP}{squareFreePolynomial} \\ +\cross{DMP}{squareFreePolynomial} & +\cross{DMP}{squareFreePart} \\ \cross{DMP}{subtractIfCan} & \cross{DMP}{totalDegree} & \cross{DMP}{unit?} \\ @@ -23321,6 +23328,16 @@ @ \pagehead{Exit}{EXIT} \pagepic{ps/v103exit.ps}{EXIT}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{EXIT}{coerce} & +\cross{EXIT}{hash} & +\cross{EXIT}{latex} & +\cross{EXIT}{?=?} & +\cross{EXIT}{?\~{}=?} +\end{tabular} + <<domain EXIT Exit>>= )abbrev domain EXIT Exit ++ Author: Stephen M. Watt @@ -23379,13 +23396,13 @@ \cross{EXPEXPAN}{differentiate} & \cross{EXPEXPAN}{divide} \\ \cross{EXPEXPAN}{euclideanSize} & -\cross{EXPEXPAN}{eval} & -\cross{EXPEXPAN}{expressIdealMember} \\ +\cross{EXPEXPAN}{expressIdealMember} & +\cross{EXPEXPAN}{eval} \\ \cross{EXPEXPAN}{exquo} & \cross{EXPEXPAN}{extendedEuclidean} & \cross{EXPEXPAN}{factor} \\ +\cross{EXPEXPAN}{factorSquareFreePolynomial} & \cross{EXPEXPAN}{factorPolynomial} & -\cross{EXPEXPAN}{factorSquareFreePolynomial} & \cross{EXPEXPAN}{floor} \\ \cross{EXPEXPAN}{fractionPart} & \cross{EXPEXPAN}{gcd} & @@ -33933,23 +33950,23 @@ \pageto{TheSymbolTable}{SYMS} {\bf Exports:}\\ -\begin{tabular}{lllll} +\begin{tabular}{llll} \cross{FT}{coerce} & \cross{FT}{construct} & \cross{FT}{dimensionsOf} & -\cross{FT}{external?} & -\cross{FT}{fortranCharacter} \\ +\cross{FT}{external?} \\ +\cross{FT}{fortranCharacter} & \cross{FT}{fortranComplex} & \cross{FT}{fortranDouble} & -\cross{FT}{fortranDoubleComplex} & +\cross{FT}{fortranDoubleComplex} \\ \cross{FT}{fortranInteger} & -\cross{FT}{fortranLogical} \\ +\cross{FT}{fortranLogical} & \cross{FT}{fortranReal} & -\cross{FT}{hash} & +\cross{FT}{hash} \\ \cross{FT}{latex} & \cross{FT}{scalarTypeOf} & -\cross{FT}{?=?} \\ -\cross{FT}{?\~{}=?} &&&& +\cross{FT}{?=?} & +\cross{FT}{?\~{}=?} \end{tabular} <<domain FT FortranType>>= @@ -34189,13 +34206,15 @@ Algebra(R) with if E has canonical and R has canonical then canonical coerce: R -> $ - ++ coerce(r) converts coefficients into Fourier Series + ++ coerce(r) converts coefficients into Fourier Series coerce: FourierComponent(E) -> $ - ++ coerce(c) converts sin/cos terms into Fourier Series + ++ coerce(c) converts sin/cos terms into Fourier Series makeSin: (E,R) -> $ - ++ makeSin(e,r) makes a sin expression with given argument and coefficient + ++ makeSin(e,r) makes a sin expression with given + ++ argument and coefficient makeCos: (E,R) -> $ - ++ makeCos(e,r) makes a sin expression with given argument and coefficient + ++ makeCos(e,r) makes a sin expression with given + ++argument and coefficient == FreeModule(R,FourierComponent(E)) add --representations @@ -35290,6 +35309,40 @@ \pageto{FreeGroup}{FGROUP} \pageto{InnerFreeAbelianMonoid}{IFAMON} \pageto{FreeAbelianMonoid}{FAMONOID} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{FAGROUP}{0} & +\cross{FAGROUP}{coefficient} & +\cross{FAGROUP}{coerce} & +\cross{FAGROUP}{hash} & +\cross{FAGROUP}{highCommonTerms} \\ +\cross{FAGROUP}{latex} & +\cross{FAGROUP}{mapCoef} & +\cross{FAGROUP}{mapGen} & +\cross{FAGROUP}{max} & +\cross{FAGROUP}{min} \\ +\cross{FAGROUP}{nthCoef} & +\cross{FAGROUP}{nthFactor} & +\cross{FAGROUP}{retract} & +\cross{FAGROUP}{retractIfCan} & +\cross{FAGROUP}{sample} \\ +\cross{FAGROUP}{size} & +\cross{FAGROUP}{subtractIfCan} & +\cross{FAGROUP}{terms} & +\cross{FAGROUP}{zero?} & +\cross{FAGROUP}{?\~{}=?} \\ +\cross{FAGROUP}{?*?} & +\cross{FAGROUP}{?$<$?} & +\cross{FAGROUP}{?$<=$?} & +\cross{FAGROUP}{?$>$?} & +\cross{FAGROUP}{?$>=$?} \\ +\cross{FAGROUP}{?+?} & +\cross{FAGROUP}{?-?} & +\cross{FAGROUP}{-?} & +\cross{FAGROUP}{?=?} & +\end{tabular} + <<domain FAGROUP FreeAbelianGroup>>= )abbrev domain FAGROUP FreeAbelianGroup ++ Free abelian group on any set of generators @@ -41282,6 +41335,7 @@ @ <<IDPOAM.dotabb>>= "IDPOAM" [color="#88FF44",href="bookvol10.3.pdf#nameddest=IDPOAM"] +"OAMON" [color="#4488FF",href="bookvol10.2.pdf#nameddest=OAMON"] "IDPOAM" -> "OAMON" @ @@ -42804,6 +42858,7 @@ <<IARRAY2.dotabb>>= "IARRAY2" [color="#88FF44",href="bookvol10.3.pdf#nameddest=IARRAY2"] "A1AGG" [color="#4488FF",href="bookvol10.2.pdf#nameddest=A1AGG"] +"ARR2CAT" [color="#4488FF",href="bookvol10.2.pdf#nameddest=ARR2CAT"] "IARRAY2" -> "ARR2CAT" "IARRAY2" -> "A1AGG" @@ -42981,23 +43036,23 @@ \pageto{AlgebraicNumber}{AN} {\bf Exports:}\\ -\begin{tabular}{lllll} +\begin{tabular}{llll} \cross{IAN}{0} & \cross{IAN}{1} & \cross{IAN}{associates?} & -\cross{IAN}{belong?} & -\cross{IAN}{box} \\ +\cross{IAN}{belong?} \\ +\cross{IAN}{box} & \cross{IAN}{characteristic} & \cross{IAN}{coerce} & -\cross{IAN}{convert} & +\cross{IAN}{convert} \\ \cross{IAN}{D} & -\cross{IAN}{definingPolynomial} \\ +\cross{IAN}{definingPolynomial} & \cross{IAN}{denom} & -\cross{IAN}{differentiate} & +\cross{IAN}{differentiate} \\ \cross{IAN}{distribute} & \cross{IAN}{divide} & -\cross{IAN}{elt} \\ -\cross{IAN}{euclideanSize} & +\cross{IAN}{elt} & +\cross{IAN}{euclideanSize} \\ \cross{IAN}{eval} & \cross{IAN}{even?} & \cross{IAN}{expressIdealMember} & @@ -43005,19 +43060,19 @@ \cross{IAN}{extendedEuclidean} & \cross{IAN}{factor} & \cross{IAN}{freeOf?} & -\cross{IAN}{gcd} & -\cross{IAN}{gcdPolynomial} \\ +\cross{IAN}{gcd} \\ +\cross{IAN}{gcdPolynomial} & \cross{IAN}{hash} & \cross{IAN}{height} & -\cross{IAN}{inv} & +\cross{IAN}{inv} \\ \cross{IAN}{is?} & -\cross{IAN}{kernel} \\ +\cross{IAN}{kernel} & \cross{IAN}{kernels} & -\cross{IAN}{latex} & +\cross{IAN}{latex} \\ \cross{IAN}{lcm} & \cross{IAN}{mainKernel} & -\cross{IAN}{map} \\ -\cross{IAN}{max} & +\cross{IAN}{map} & +\cross{IAN}{max} \\ \cross{IAN}{min} & \cross{IAN}{minPoly} & \cross{IAN}{multiEuclidean} & @@ -43025,19 +43080,19 @@ \cross{IAN}{nthRoot} & \cross{IAN}{numer} & \cross{IAN}{odd?} & -\cross{IAN}{one?} & -\cross{IAN}{operator} \\ +\cross{IAN}{one?} \\ +\cross{IAN}{operator} & \cross{IAN}{operators} & \cross{IAN}{paren} & -\cross{IAN}{prime?} & +\cross{IAN}{prime?} \\ \cross{IAN}{principalIdeal} & -\cross{IAN}{recip} \\ +\cross{IAN}{recip} & \cross{IAN}{reduce} & -\cross{IAN}{reducedSystem} & +\cross{IAN}{reducedSystem} \\ \cross{IAN}{retract} & \cross{IAN}{retractIfCan} & -\cross{IAN}{rootOf} \\ -\cross{IAN}{rootsOf} & +\cross{IAN}{rootOf} & +\cross{IAN}{rootsOf} \\ \cross{IAN}{sample} & \cross{IAN}{sizeLess?} & \cross{IAN}{sqrt} & @@ -43045,19 +43100,19 @@ \cross{IAN}{squareFreePart} & \cross{IAN}{subst} & \cross{IAN}{subtractIfCan} & -\cross{IAN}{tower} & -\cross{IAN}{trueEqual} \\ +\cross{IAN}{tower} \\ +\cross{IAN}{trueEqual} & \cross{IAN}{unit?} & \cross{IAN}{unitCanonical} & -\cross{IAN}{unitNormal} & +\cross{IAN}{unitNormal} \\ \cross{IAN}{zero?} & -\cross{IAN}{zeroOf} \\ +\cross{IAN}{zeroOf} & \cross{IAN}{zerosOf} & -\cross{IAN}{?*?} & +\cross{IAN}{?*?} \\ \cross{IAN}{?**?} & \cross{IAN}{?+?} & -\cross{IAN}{-?} \\ -\cross{IAN}{?-?} & +\cross{IAN}{-?} & +\cross{IAN}{?-?} \\ \cross{IAN}{?/?} & \cross{IAN}{?$<$?} & \cross{IAN}{?$<=$?} & @@ -43065,11 +43120,11 @@ \cross{IAN}{?$>$?} & \cross{IAN}{?$>=$?} & \cross{IAN}{?\^{}?} & -\cross{IAN}{?\~{}=?} & -\cross{IAN}{?*?} \\ +\cross{IAN}{?\~{}=?} \\ +\cross{IAN}{?*?} & \cross{IAN}{?**?} & \cross{IAN}{?quo?} & -\cross{IAN}{?rem?} && +\cross{IAN}{?rem?} \end{tabular} <<domain IAN InnerAlgebraicNumber>>= @@ -50100,135 +50155,134 @@ \pageto{AssociatedJordanAlgebra}{JORDAN} {\bf Exports:}\\ -\begin{tabular}{ll} +\begin{tabular}{lll} \cross{LSQM}{0} & -\cross{LSQM}{1} \\ -\cross{LSQM}{alternative?} & -\cross{LSQM}{antiAssociative?} \\ +\cross{LSQM}{1} & +\cross{LSQM}{alternative?} \\ +\cross{LSQM}{antiAssociative?} & \cross{LSQM}{antiCommutator} & \cross{LSQM}{antisymmetric?} \\ \cross{LSQM}{any?} & -\cross{LSQM}{apply} \\ -\cross{LSQM}{associative?} & -\cross{LSQM}{associator} \\ +\cross{LSQM}{apply} & +\cross{LSQM}{associative?} \\ +\cross{LSQM}{associator} & \cross{LSQM}{associatorDependence} & \cross{LSQM}{basis} \\ \cross{LSQM}{characteristic} & -\cross{LSQM}{coerce} \\ -\cross{LSQM}{column} & -\cross{LSQM}{commutative?} \\ +\cross{LSQM}{coerce} & +\cross{LSQM}{column} \\ +\cross{LSQM}{commutative?} & \cross{LSQM}{commutator} & \cross{LSQM}{conditionsForIdempotents} \\ \cross{LSQM}{convert} & -\cross{LSQM}{coordinates} \\ -\cross{LSQM}{copy} & -\cross{LSQM}{count} \\ +\cross{LSQM}{coordinates} & +\cross{LSQM}{copy} \\ +\cross{LSQM}{count} & \cross{LSQM}{D} & \cross{LSQM}{determinant} \\ \cross{LSQM}{diagonal} & -\cross{LSQM}{diagonal?} \\ -\cross{LSQM}{diagonalMatrix} & -\cross{LSQM}{diagonalProduct} \\ +\cross{LSQM}{diagonal?} & +\cross{LSQM}{diagonalMatrix} \\ +\cross{LSQM}{diagonalProduct} & \cross{LSQM}{differentiate} & \cross{LSQM}{elt} \\ \cross{LSQM}{empty} & -\cross{LSQM}{empty?} \\ -\cross{LSQM}{eq?} & -\cross{LSQM}{eval} \\ +\cross{LSQM}{empty?} & +\cross{LSQM}{eq?} \\ +\cross{LSQM}{eval} & \cross{LSQM}{every?} & \cross{LSQM}{exquo} \\ \cross{LSQM}{flexible?} & -\cross{LSQM}{hash} \\ -\cross{LSQM}{inverse} & -\cross{LSQM}{jacobiIdentity?} \\ +\cross{LSQM}{hash} & +\cross{LSQM}{inverse} \\ +\cross{LSQM}{jacobiIdentity?} & \cross{LSQM}{jordanAdmissible?} & \cross{LSQM}{jordanAlgebra?} \\ \cross{LSQM}{latex} & -\cross{LSQM}{leftAlternative?} \\ -\cross{LSQM}{leftCharacteristicPolynomial} & -\cross{LSQM}{leftDiscriminant} \\ +\cross{LSQM}{leftAlternative?} & +\cross{LSQM}{leftCharacteristicPolynomial} \\ \cross{LSQM}{leftDiscriminant} & +\cross{LSQM}{leftDiscriminant} & \cross{LSQM}{leftMinimalPolynomial} \\ \cross{LSQM}{leftNorm} & -\cross{LSQM}{leftPower} \\ -\cross{LSQM}{leftRankPolynomial} & -\cross{LSQM}{leftRecip} \\ +\cross{LSQM}{leftPower} & +\cross{LSQM}{leftRankPolynomial} \\ +\cross{LSQM}{leftRecip} & \cross{LSQM}{leftRegularRepresentation} & \cross{LSQM}{leftRegularRepresentation} \\ \cross{LSQM}{leftTrace} & -\cross{LSQM}{leftTraceMatrix} \\ -\cross{LSQM}{leftUnit} & -\cross{LSQM}{leftUnits} \\ +\cross{LSQM}{leftTraceMatrix} & +\cross{LSQM}{leftUnit} \\ +\cross{LSQM}{leftUnits} & \cross{LSQM}{less?} & \cross{LSQM}{lieAdmissible?} \\ \cross{LSQM}{lieAlgebra?} & -\cross{LSQM}{listOfLists} \\ -\cross{LSQM}{map} & -\cross{LSQM}{map!} \\ +\cross{LSQM}{listOfLists} & +\cross{LSQM}{map} \\ +\cross{LSQM}{map!} & \cross{LSQM}{matrix} & \cross{LSQM}{maxColIndex} \\ \cross{LSQM}{maxRowIndex} & -\cross{LSQM}{member?} \\ -\cross{LSQM}{members} & -\cross{LSQM}{minColIndex} \\ +\cross{LSQM}{member?} & +\cross{LSQM}{members} \\ +\cross{LSQM}{minColIndex} & \cross{LSQM}{minordet} & \cross{LSQM}{minRowIndex} \\ \cross{LSQM}{more?} & -\cross{LSQM}{ncols} \\ -\cross{LSQM}{noncommutativeJordanAlgebra?} & -\cross{LSQM}{nrows} \\ +\cross{LSQM}{ncols} & +\cross{LSQM}{noncommutativeJordanAlgebra?} \\ +\cross{LSQM}{nrows} & \cross{LSQM}{nullSpace} & \cross{LSQM}{nullity} \\ \cross{LSQM}{one?} & -\cross{LSQM}{parts} \\ -\cross{LSQM}{plenaryPower} & -\cross{LSQM}{powerAssociative?} \\ +\cross{LSQM}{parts} & +\cross{LSQM}{plenaryPower} \\ +\cross{LSQM}{powerAssociative?} & \cross{LSQM}{qelt} & \cross{LSQM}{rank} \\ \cross{LSQM}{recip} & -\cross{LSQM}{reducedSystem} \\ -\cross{LSQM}{represents} & -\cross{LSQM}{retract} \\ +\cross{LSQM}{reducedSystem} & +\cross{LSQM}{represents} \\ +\cross{LSQM}{retract} & \cross{LSQM}{retractIfCan} & \cross{LSQM}{rightAlternative?} \\ \cross{LSQM}{rightCharacteristicPolynomial} & -\cross{LSQM}{rightDiscriminant} \\ -\cross{LSQM}{rightMinimalPolynomial} & -\cross{LSQM}{rightNorm} \\ +\cross{LSQM}{rightDiscriminant} & +\cross{LSQM}{rightMinimalPolynomial} \\ +\cross{LSQM}{rightNorm} & \cross{LSQM}{rightPower} & \cross{LSQM}{rightRankPolynomial} \\ \cross{LSQM}{rightRecip} & -\cross{LSQM}{rightRegularRepresentation} \\ \cross{LSQM}{rightRegularRepresentation} & \cross{LSQM}{rightTrace} \\ \cross{LSQM}{rightTraceMatrix} & -\cross{LSQM}{rightUnit} \\ -\cross{LSQM}{rightUnits} & -\cross{LSQM}{row} \\ +\cross{LSQM}{rightUnit} & +\cross{LSQM}{rightUnits} \\ +\cross{LSQM}{row} & \cross{LSQM}{rowEchelon} & \cross{LSQM}{sample} \\ \cross{LSQM}{scalarMatrix} & -\cross{LSQM}{size?} \\ -\cross{LSQM}{someBasis} & -\cross{LSQM}{square?} \\ +\cross{LSQM}{size?} & +\cross{LSQM}{someBasis} \\ +\cross{LSQM}{square?} & \cross{LSQM}{structuralConstants} & \cross{LSQM}{structuralConstants} \\ \cross{LSQM}{subtractIfCan} & -\cross{LSQM}{symmetric?} \\ -\cross{LSQM}{trace} & -\cross{LSQM}{unit} \\ +\cross{LSQM}{symmetric?} & +\cross{LSQM}{trace} \\ +\cross{LSQM}{unit} & \cross{LSQM}{zero?} & \cross{LSQM}{\#{}?} \\ \cross{LSQM}{?\~{}=?} & -\cross{LSQM}{?*?} \\ -\cross{LSQM}{?**?} & -\cross{LSQM}{?+?} \\ +\cross{LSQM}{?*?} & +\cross{LSQM}{?**?} \\ +\cross{LSQM}{?+?} & \cross{LSQM}{?-?} & \cross{LSQM}{-?} \\ \cross{LSQM}{?/?} & -\cross{LSQM}{?=?} \\ -\cross{LSQM}{?\^{}?} & -\cross{LSQM}{?.?} +\cross{LSQM}{?=?} & +\cross{LSQM}{?\^{}?} \\ +\cross{LSQM}{?.?} && \end{tabular} <<domain LSQM LieSquareMatrix>>= @@ -53971,143 +54025,143 @@ \pageto{MachineFloat}{MFLOAT} {\bf Exports:}\\ -\begin{tabular}{ll} +\begin{tabular}{lll} \cross{MCMPLX}{0} & -\cross{MCMPLX}{1} \\ -\cross{MCMPLX}{abs} & -\cross{MCMPLX}{acos} \\ +\cross{MCMPLX}{1} & +\cross{MCMPLX}{abs} \\ +\cross{MCMPLX}{acos} & \cross{MCMPLX}{acosh} & \cross{MCMPLX}{acot} \\ \cross{MCMPLX}{acoth} & -\cross{MCMPLX}{acsc} \\ -\cross{MCMPLX}{acsch} & -\cross{MCMPLX}{argument} \\ +\cross{MCMPLX}{acsc} & +\cross{MCMPLX}{acsch} \\ +\cross{MCMPLX}{argument} & \cross{MCMPLX}{asec} & \cross{MCMPLX}{asech} \\ \cross{MCMPLX}{asin} & -\cross{MCMPLX}{asinh} \\ -\cross{MCMPLX}{associates?} & -\cross{MCMPLX}{atan} \\ +\cross{MCMPLX}{asinh} & +\cross{MCMPLX}{associates?} \\ +\cross{MCMPLX}{atan} & \cross{MCMPLX}{atanh} & \cross{MCMPLX}{basis} \\ \cross{MCMPLX}{characteristic} & -\cross{MCMPLX}{characteristicPolynomial} \\ -\cross{MCMPLX}{charthRoot} & -\cross{MCMPLX}{coerce} \\ +\cross{MCMPLX}{characteristicPolynomial} & +\cross{MCMPLX}{charthRoot} \\ +\cross{MCMPLX}{coerce} & \cross{MCMPLX}{complex} & \cross{MCMPLX}{conditionP} \\ \cross{MCMPLX}{conjugate} & -\cross{MCMPLX}{convert} \\ -\cross{MCMPLX}{coordinates} & -\cross{MCMPLX}{cos} \\ +\cross{MCMPLX}{convert} & +\cross{MCMPLX}{coordinates} \\ +\cross{MCMPLX}{cos} & \cross{MCMPLX}{cosh} & \cross{MCMPLX}{cot} \\ \cross{MCMPLX}{coth} & -\cross{MCMPLX}{createPrimitiveElement} \\ -\cross{MCMPLX}{csc} & -\cross{MCMPLX}{csch} \\ +\cross{MCMPLX}{createPrimitiveElement} & +\cross{MCMPLX}{csc} \\ +\cross{MCMPLX}{csch} & \cross{MCMPLX}{D} & \cross{MCMPLX}{definingPolynomial} \\ \cross{MCMPLX}{derivationCoordinates} & -\cross{MCMPLX}{differentiate} \\ -\cross{MCMPLX}{discreteLog} & -\cross{MCMPLX}{discriminant} \\ +\cross{MCMPLX}{differentiate} & +\cross{MCMPLX}{discreteLog} \\ +\cross{MCMPLX}{discriminant} & \cross{MCMPLX}{divide} & \cross{MCMPLX}{euclideanSize} \\ \cross{MCMPLX}{eval} & -\cross{MCMPLX}{exp} \\ -\cross{MCMPLX}{expressIdealMember} & -\cross{MCMPLX}{exquo} \\ +\cross{MCMPLX}{exp} & +\cross{MCMPLX}{expressIdealMember} \\ +\cross{MCMPLX}{exquo} & \cross{MCMPLX}{extendedEuclidean} & \cross{MCMPLX}{factor} \\ \cross{MCMPLX}{factorPolynomial} & -\cross{MCMPLX}{factorSquareFreePolynomial} \\ +\cross{MCMPLX}{factorSquareFreePolynomial} & +\cross{MCMPLX}{gcdPolynomial} \\ +\cross{MCMPLX}{gcd} & \cross{MCMPLX}{factorsOfCyclicGroupSize} & -\cross{MCMPLX}{gcd} \\ -\cross{MCMPLX}{gcdPolynomial} & \cross{MCMPLX}{generator} \\ \cross{MCMPLX}{hash} & -\cross{MCMPLX}{imag} \\ -\cross{MCMPLX}{imaginary} & -\cross{MCMPLX}{index} \\ +\cross{MCMPLX}{imag} & +\cross{MCMPLX}{imaginary} \\ +\cross{MCMPLX}{index} & \cross{MCMPLX}{init} & \cross{MCMPLX}{inv} \\ \cross{MCMPLX}{latex} & -\cross{MCMPLX}{lcm} \\ -\cross{MCMPLX}{lift} & -\cross{MCMPLX}{log} \\ +\cross{MCMPLX}{lcm} & +\cross{MCMPLX}{lift} \\ +\cross{MCMPLX}{log} & \cross{MCMPLX}{lookup} & \cross{MCMPLX}{map} \\ \cross{MCMPLX}{max} & -\cross{MCMPLX}{min} \\ -\cross{MCMPLX}{minimalPolynomial} & -\cross{MCMPLX}{multiEuclidean} \\ +\cross{MCMPLX}{min} & +\cross{MCMPLX}{minimalPolynomial} \\ +\cross{MCMPLX}{multiEuclidean} & \cross{MCMPLX}{nextItem} & \cross{MCMPLX}{norm} \\ \cross{MCMPLX}{nthRoot} & -\cross{MCMPLX}{one?} \\ -\cross{MCMPLX}{order} & -\cross{MCMPLX}{patternMatch} \\ +\cross{MCMPLX}{one?} & +\cross{MCMPLX}{order} \\ +\cross{MCMPLX}{patternMatch} & \cross{MCMPLX}{pi} & \cross{MCMPLX}{polarCoordinates} \\ \cross{MCMPLX}{prime?} & -\cross{MCMPLX}{primeFrobenius} \\ -\cross{MCMPLX}{primitive?} & -\cross{MCMPLX}{primitiveElement} \\ +\cross{MCMPLX}{primeFrobenius} & +\cross{MCMPLX}{primitive?} \\ +\cross{MCMPLX}{primitiveElement} & \cross{MCMPLX}{principalIdeal} & \cross{MCMPLX}{random} \\ \cross{MCMPLX}{rank} & -\cross{MCMPLX}{rational} \\ -\cross{MCMPLX}{rational?} & -\cross{MCMPLX}{rationalIfCan} \\ +\cross{MCMPLX}{rational} & +\cross{MCMPLX}{rational?} \\ +\cross{MCMPLX}{rationalIfCan} & \cross{MCMPLX}{real} & \cross{MCMPLX}{recip} \\ \cross{MCMPLX}{reduce} & -\cross{MCMPLX}{reducedSystem} \\ -\cross{MCMPLX}{regularRepresentation} & -\cross{MCMPLX}{representationType} \\ +\cross{MCMPLX}{reducedSystem} & +\cross{MCMPLX}{regularRepresentation} \\ +\cross{MCMPLX}{representationType} & \cross{MCMPLX}{represents} & \cross{MCMPLX}{retract} \\ \cross{MCMPLX}{retractIfCan} & -\cross{MCMPLX}{sample} \\ -\cross{MCMPLX}{sec} & -\cross{MCMPLX}{sech} \\ +\cross{MCMPLX}{sample} & +\cross{MCMPLX}{sec} \\ +\cross{MCMPLX}{sech} & \cross{MCMPLX}{sin} & \cross{MCMPLX}{sinh} \\ \cross{MCMPLX}{size} & +\cross{MCMPLX}{solveLinearPolynomialEquation} & \cross{MCMPLX}{sizeLess?} \\ -\cross{MCMPLX}{solveLinearPolynomialEquation} & -\cross{MCMPLX}{sqrt} \\ +\cross{MCMPLX}{sqrt} & \cross{MCMPLX}{squareFree} & \cross{MCMPLX}{squareFreePart} \\ \cross{MCMPLX}{squareFreePolynomial} & +\cross{MCMPLX}{tableForDiscreteLogarithm} & \cross{MCMPLX}{subtractIfCan} \\ -\cross{MCMPLX}{tableForDiscreteLogarithm} & -\cross{MCMPLX}{tan} \\ +\cross{MCMPLX}{tan} & \cross{MCMPLX}{tanh} & \cross{MCMPLX}{trace} \\ \cross{MCMPLX}{traceMatrix} & -\cross{MCMPLX}{traceMatrix} \\ -\cross{MCMPLX}{unit?} & -\cross{MCMPLX}{unitCanonical} \\ +\cross{MCMPLX}{traceMatrix} & +\cross{MCMPLX}{unit?} \\ +\cross{MCMPLX}{unitCanonical} & \cross{MCMPLX}{unitNormal} & \cross{MCMPLX}{zero?} \\ \cross{MCMPLX}{?*?} & -\cross{MCMPLX}{?**?} \\ -\cross{MCMPLX}{?+?} & -\cross{MCMPLX}{?-?} \\ +\cross{MCMPLX}{?**?} & +\cross{MCMPLX}{?+?} \\ +\cross{MCMPLX}{?-?} & \cross{MCMPLX}{-?} & \cross{MCMPLX}{?$<$?} \\ \cross{MCMPLX}{?$<=$?} & -\cross{MCMPLX}{?=?} \\ -\cross{MCMPLX}{?$>$?} & -\cross{MCMPLX}{?$>=$?} \\ +\cross{MCMPLX}{?=?} & +\cross{MCMPLX}{?$>$?} \\ +\cross{MCMPLX}{?$>=$?} & \cross{MCMPLX}{?\^{}?} & \cross{MCMPLX}{?\~{}=?} \\ \cross{MCMPLX}{?/?} & -\cross{MCMPLX}{?.?} \\ -\cross{MCMPLX}{?quo?} & -\cross{MCMPLX}{?rem?} +\cross{MCMPLX}{?.?} & +\cross{MCMPLX}{?quo?} \\ +\cross{MCMPLX}{?rem?} && \end{tabular} <<domain MCMPLX MachineComplex>>= @@ -55060,7 +55114,7 @@ ++ Description: ++ This type is the basic representation of ++ parenthesized words (binary trees over arbitrary symbols) -++ useful in \spadtype{LiePolynomial}. \newline Author: Michel Petitot (pe...@li...). +++ useful in \spadtype{LiePolynomial}. Magma(VarSet:OrderedSet):Public == Private where WORD ==> OrderedFreeMonoid(VarSet) @@ -55070,7 +55124,8 @@ "*" : ($,$) -> $ ++ \axiom{x*y} returns the tree \axiom{[x,y]}. coerce : $ -> WORD - ++ \axiom{coerce(x)} returns the element of \axiomType{OrderedFreeMonoid}(VarSet) + ++ \axiom{coerce(x)} returns the element of + ++\axiomType{OrderedFreeMonoid}(VarSet) ++ corresponding to \axiom{x} by removing parentheses. first : $ -> VarSet ++ \axiom{first(x)} returns the first entry of the tree \axiom{x}. @@ -55086,7 +55141,8 @@ ++ its arguments. Thus this is not a total ordering. mirror : $ -> $ ++ \axiom{mirror(x)} returns the reversed word of \axiom{x}. - ++ That is \axiom{x} itself if \axiomOpFrom{retractable?}{Magma}(\axiom{x}) is true and + ++ That is \axiom{x} itself if + ++ \axiomOpFrom{retractable?}{Magma}(\axiom{x}) is true and ++ \axiom{mirror(z) * mirror(y)} if \axiom{x} is \axiom{y*z}. rest : $ -> $ ++ \axiom{rest(x)} return \axiom{x} without the first entry or @@ -57529,7 +57585,8 @@ ++ coefficient(f,m) extracts the coefficient of m in f with respect ++ to the canonical basis M. coerce: List Term -> % - ++ coerce(lt) converts a list of terms and coefficients to a member of the domain. + ++ coerce(lt) converts a list of terms and + ++ coefficients to a member of the domain. terms : % -> List Term ++ terms(f) gives the list of non-zero coefficients combined ++ with their corresponding basis element as records. @@ -58583,88 +58640,88 @@ \pageto{IndexedExponents}{INDE} {\bf Exports:}\\ -\begin{tabular}{llll} +\begin{tabular}{lll} \cross{MPOLY}{0} & \cross{MPOLY}{1} & -\cross{MPOLY}{associates?} & -\cross{MPOLY}{binomThmExpt} \\ +\cross{MPOLY}{associates?} \\ +\cross{MPOLY}{binomThmExpt} & \cross{MPOLY}{characteristic} & -\cross{MPOLY}{charthRoot} & +\cross{MPOLY}{charthRoot} \\ \cross{MPOLY}{coefficient} & -\cross{MPOLY}{coefficients} \\ -\cross{MPOLY}{coerce} & +\cross{MPOLY}{coefficients} & +\cross{MPOLY}{coerce} \\ \cross{MPOLY}{conditionP} & \cross{MPOLY}{content} & \cross{MPOLY}{convert} \\ \cross{MPOLY}{D} & \cross{MPOLY}{degree} & -\cross{MPOLY}{differentiate} & -\cross{MPOLY}{discriminant} \\ +\cross{MPOLY}{differentiate} \\ +\cross{MPOLY}{discriminant} & \cross{MPOLY}{eval} & -\cross{MPOLY}{exquo} & +\cross{MPOLY}{exquo} \\ \cross{MPOLY}{factor} & -\cross{MPOLY}{factorPolynomial} \\ -\cross{MPOLY}{factorSquareFreePolynomial} & +\cross{MPOLY}{factorPolynomial} & +\cross{MPOLY}{factorSquareFreePolynomial} \\ \cross{MPOLY}{gcd} & \cross{MPOLY}{gcdPolynomial} & \cross{MPOLY}{ground} \\ \cross{MPOLY}{ground?} & \cross{MPOLY}{hash} & -\cross{MPOLY}{isExpt} & -\cross{MPOLY}{isPlus} \\ +\cross{MPOLY}{isExpt} \\ +\cross{MPOLY}{isPlus} & \cross{MPOLY}{isTimes} & -\cross{MPOLY}{latex} & +\cross{MPOLY}{latex} \\ \cross{MPOLY}{lcm} & -\cross{MPOLY}{leadingCoefficient} \\ -\cross{MPOLY}{leadingMonomial} & +\cross{MPOLY}{leadingCoefficient} & +\cross{MPOLY}{leadingMonomial} \\ \cross{MPOLY}{mainVariable} & \cross{MPOLY}{map} & \cross{MPOLY}{mapExponents} \\ \cross{MPOLY}{max} & \cross{MPOLY}{min} & -\cross{MPOLY}{minimumDegree} & -\cross{MPOLY}{monicDivide} \\ +\cross{MPOLY}{minimumDegree} \\ +\cross{MPOLY}{monicDivide} & \cross{MPOLY}{monomial} & -\cross{MPOLY}{monomial?} & +\cross{MPOLY}{monomial?} \\ \cross{MPOLY}{monomials} & -\cross{MPOLY}{multivariate} \\ -\cross{MPOLY}{numberOfMonomials} & +\cross{MPOLY}{multivariate} & +\cross{MPOLY}{numberOfMonomials} \\ \cross{MPOLY}{one?} & \cross{MPOLY}{patternMatch} & \cross{MPOLY}{pomopo!} \\ \cross{MPOLY}{prime?} & \cross{MPOLY}{primitivePart} & -\cross{MPOLY}{primitiveMonomials} & -\cross{MPOLY}{recip} \\ +\cross{MPOLY}{primitiveMonomials} \\ +\cross{MPOLY}{recip} & \cross{MPOLY}{reducedSystem} & -\cross{MPOLY}{reductum} & +\cross{MPOLY}{reductum} \\ \cross{MPOLY}{resultant} & -\cross{MPOLY}{retract} \\ -\cross{MPOLY}{retractIfCan} & +\cross{MPOLY}{retract} & +\cross{MPOLY}{retractIfCan} \\ \cross{MPOLY}{sample} & \cross{MPOLY}{solveLinearPolynomialEquation} & \cross{MPOLY}{squareFree} \\ \cross{MPOLY}{squareFreePart} & \cross{MPOLY}{squareFreePolynomial} & -\cross{MPOLY}{subtractIfCan} & -\cross{MPOLY}{totalDegree} \\ +\cross{MPOLY}{subtractIfCan} \\ +\cross{MPOLY}{totalDegree} & \cross{MPOLY}{unit?} & -\cross{MPOLY}{unitCanonical} & +\cross{MPOLY}{unitCanonical} \\ \cross{MPOLY}{unitNormal} & -\cross{MPOLY}{univariate} \\ -\cross{MPOLY}{variables} & +\cross{MPOLY}{univariate} & +\cross{MPOLY}{variables} \\ \cross{MPOLY}{zero?} & \cross{MPOLY}{?*?} & \cross{MPOLY}{?**?} \\ \cross{MPOLY}{?+?} & \cross{MPOLY}{?-?} & -\cross{MPOLY}{-?} & -\cross{MPOLY}{?=?} \\ +\cross{MPOLY}{-?} \\ +\cross{MPOLY}{?=?} & \cross{MPOLY}{?\^{}?} & -\cross{MPOLY}{?\~{}=?} & +\cross{MPOLY}{?\~{}=?} \\ \cross{MPOLY}{?/?} & -\cross{MPOLY}{?$<$?} \\ -\cross{MPOLY}{?$<=$?} & +\cross{MPOLY}{?$<$?} & +\cross{MPOLY}{?$<=$?} \\ \cross{MPOLY}{?$>$?} & \cross{MPOLY}{?$>=$?} & \end{tabular} @@ -59072,9 +59129,9 @@ \cross{NSMP}{factorSquareFreePolynomial} & \cross{NSMP}{gcd} & \cross{NSMP}{gcdPolynomial} \\ +\cross{NSMP}{halfExtendedSubResultantGcd1} & \cross{NSMP}{ground} & -\cross{NSMP}{ground?} & -\cross{NSMP}{halfExtendedSubResultantGcd1} \\ +\cross{NSMP}{ground?} \\ \cross{NSMP}{halfExtendedSubResultantGcd2} & \cross{NSMP}{hash} & \cross{NSMP}{head} \\ @@ -59129,9 +59186,9 @@ \cross{NSMP}{patternMatch} & \cross{NSMP}{pomopo!} & \cross{NSMP}{pquo} \\ -\cross{NSMP}{prem} & +\cross{NSMP}{primPartElseUnitCanonical!} & \cross{NSMP}{primPartElseUnitCanonical} & -\cross{NSMP}{primPartElseUnitCanonical!} \\ +\cross{NSMP}{prem} \\ \cross{NSMP}{prime?} & \cross{NSMP}{primitiveMonomials} & \cross{NSMP}{primitivePart} \\ @@ -59596,134 +59653,134 @@ \pageto{NewSparseMultivariatePolynomial}{NSMP} {\bf Exports:}\\ -\begin{tabular}{ll} +\begin{tabular}{lll} \cross{NSUP}{0} & -\cross{NSUP}{1} \\ -\cross{NSUP}{associates?} & -\cross{NSUP}{binomThmExpt} \\ +\cross{NSUP}{1} & +\cross{NSUP}{associates?} \\ +\cross{NSUP}{binomThmExpt} & \cross{NSUP}{characteristic} & \cross{NSUP}{charthRoot} \\ \cross{NSUP}{coefficient} & -\cross{NSUP}{coefficients} \\ -\cross{NSUP}{coerce} & -\cross{NSUP}{composite} \\ +\cross{NSUP}{coefficients} & +\cross{NSUP}{coerce} \\ +\cross{NSUP}{composite} & \cross{NSUP}{conditionP} & \cross{NSUP}{content} \\ \cross{NSUP}{convert} & -\cross{NSUP}{D} \\ -\cross{NSUP}{degree} & -\cross{NSUP}{differentiate} \\ +\cross{NSUP}{D} & +\cross{NSUP}{degree} \\ +\cross{NSUP}{differentiate} & \cross{NSUP}{discriminant} & \cross{NSUP}{divide} \\ \cross{NSUP}{divideExponents} & -\cross{NSUP}{elt} \\ -\cross{NSUP}{euclideanSize} & -\cross{NSUP}{eval} \\ +\cross{NSUP}{elt} & +\cross{NSUP}{euclideanSize} \\ +\cross{NSUP}{eval} & \cross{NSUP}{expressIdealMember} & \cross{NSUP}{exquo} \\ \cross{NSUP}{extendedEuclidean} & -\cross{NSUP}{extendedResultant} \\ -\cross{NSUP}{extendedSubResultantGcd} & -\cross{NSUP}{factor} \\ +\cross{NSUP}{extendedResultant} & +\cross{NSUP}{extendedSubResultantGcd} \\ +\cross{NSUP}{factor} & \cross{NSUP}{factorPolynomial} & \cross{NSUP}{factorSquareFreePolynomial} \\ \cross{NSUP}{fmecg} & -\cross{NSUP}{gcd} \\ -\cross{NSUP}{gcdPolynomial} & -\cross{NSUP}{ground} \\ +\cross{NSUP}{gcd} & +\cross{NSUP}{gcdPolynomial} \\ +\cross{NSUP}{ground} & \cross{NSUP}{ground?} & \cross{NSUP}{halfExtendedResultant1} \\ \cross{NSUP}{halfExtendedResultant2} & -\cross{NSUP}{halfExtendedSubResultantGcd1} \\ -\cross{NSUP}{halfExtendedSubResultantGcd2} & -\cross{NSUP}{hash} \\ +\cross{NSUP}{halfExtendedSubResultantGcd1} & +\cross{NSUP}{halfExtendedSubResultantGcd2} \\ +\cross{NSUP}{hash} & \cross{NSUP}{init} & \cross{NSUP}{integrate} \\ \cross{NSUP}{isExpt} & -\cross{NSUP}{isPlus} \\ -\cross{NSUP}{isTimes} & -\cross{NSUP}{karatsubaDivide} \\ +\cross{NSUP}{isPlus} & +\cross{NSUP}{isTimes} \\ +\cross{NSUP}{karatsubaDivide} & \cross{NSUP}{lastSubResultant} & \cross{NSUP}{latex} \\ \cross{NSUP}{lazyPseudoDivide} & -\cross{NSUP}{lazyPseudoQuotient} \\ -\cross{NSUP}{lazyPseudoRemainder} & -\cross{NSUP}{lazyResidueClass} \\ +\cross{NSUP}{lazyPseudoQuotient} & +\cross{NSUP}{lazyPseudoRemainder} \\ +\cross{NSUP}{lazyResidueClass} & \cross{NSUP}{lcm} & \cross{NSUP}{leadingCoefficient} \\ \cross{NSUP}{leadingMonomial} & -\cross{NSUP}{mainVariable} \\ -\cross{NSUP}{makeSUP} & -\cross{NSUP}{map} \\ +\cross{NSUP}{mainVariable} & +\cross{NSUP}{makeSUP} \\ +\cross{NSUP}{map} & \cross{NSUP}{mapExponents} & \cross{NSUP}{max} \\ \cross{NSUP}{min} & -\cross{NSUP}{minimumDegree} \\ -\cross{NSUP}{monicDivide} & -\cross{NSUP}{monicModulo} \\ +\cross{NSUP}{minimumDegree} & +\cross{NSUP}{monicDivide} \\ +\cross{NSUP}{monicModulo} & \cross{NSUP}{monomial} & \cross{NSUP}{monomial?} \\ \cross{NSUP}{monomials} & -\cross{NSUP}{multiEuclidean} \\ -\cross{NSUP}{multiplyExponents} & -\cross{NSUP}{multivariate} \\ +\cross{NSUP}{multiEuclidean} & +\cross{NSUP}{multiplyExponents} \\ +\cross{NSUP}{multivariate} & \cross{NSUP}{nextItem} & \cross{NSUP}{numberOfMonomials} \\ \cross{NSUP}{one?} & -\cross{NSUP}{order} \\ -\cross{NSUP}{patternMatch} & -\cross{NSUP}{pomopo!} \\ +\cross{NSUP}{order} & +\cross{NSUP}{patternMatch} \\ +\cross{NSUP}{pomopo!} & \cross{NSUP}{prime?} & \cross{NSUP}{primitiveMonomials} \\ \cross{NSUP}{primitivePart} & -\cross{NSUP}{principalIdeal} \\ -\cross{NSUP}{pseudoDivide} & -\cross{NSUP}{pseudoQuotient} \\ +\cross{NSUP}{principalIdeal} & +\cross{NSUP}{pseudoDivide} \\ +\cross{NSUP}{pseudoQuotient} & \cross{NSUP}{pseudoRemainder} & \cross{NSUP}{recip} \\ \cross{NSUP}{reducedSystem} & -\cross{NSUP}{reductum} \\ -\cross{NSUP}{resultant} & -\cross{NSUP}{retract} \\ +\cross{NSUP}{reductum} & +\cross{NSUP}{resultant} \\ +\cross{NSUP}{retract} & \cross{NSUP}{retractIfCan} & \cross{NSUP}{sample} \\ \cross{NSUP}{separate} & -\cross{NSUP}{shiftLeft} \\ -\cross{NSUP}{shiftRight} & -\cross{NSUP}{sizeLess?} \\ +\cross{NSUP}{shiftLeft} & +\cross{NSUP}{shiftRight} \\ +\cross{NSUP}{sizeLess?} & \cross{NSUP}{solveLinearPolynomialEquation} & \cross{NSUP}{squareFree} \\ \cross{NSUP}{squareFreePart} & -\cross{NSUP}{squareFreePolynomial} \\ -\cross{NSUP}{subResultantGcd} & -\cross{NSUP}{subResultantsChain} \\ +\cross{NSUP}{squareFreePolynomial} & +\cross{NSUP}{subResultantGcd} \\ +\cross{NSUP}{subResultantsChain} & \cross{NSUP}{subtractIfCan} & \cross{NSUP}{totalDegree} \\ \cross{NSUP}{totalDegree} & -\cross{NSUP}{unit?} \\ -\cross{NSUP}{unitCanonical} & -\cross{NSUP}{unitNormal} \\ +\cross{NSUP}{unit?} & +\cross{NSUP}{unitCanonical} \\ +\cross{NSUP}{unitNormal} & \cross{NSUP}{univariate} & \cross{NSUP}{unmakeSUP} \\ \cross{NSUP}{variables} & -\cross{NSUP}{vectorise} \\ -\cross{NSUP}{zero?} & -\cross{NSUP}{?*?} \\ +\cross{NSUP}{vectorise} & +\cross{NSUP}{zero?} \\ +\cross{NSUP}{?*?} & \cross{NSUP}{?**?} & \cross{NSUP}{?+?} \\ \cross{NSUP}{?-?} & -\cross{NSUP}{-?} \\ -\cross{NSUP}{?=?} & -\cross{NSUP}{?\^{}?} \\ +\cross{NSUP}{-?} & +\cross{NSUP}{?=?} \\ +\cross{NSUP}{?\^{}?} & \cross{NSUP}{?.?} & \cross{NSUP}{?\~{}=?} \\ \cross{NSUP}{?/?} & -\cross{NSUP}{?$<$?} \\ -\cross{NSUP}{?$<=$?} & -\cross{NSUP}{?$>$?} \\ +\cross{NSUP}{?$<$?} & +\cross{NSUP}{?$<=$?} \\ +\cross{NSUP}{?$>$?} & \cross{NSUP}{?$>=$?} & \cross{NSUP}{?quo?} \\ -\cross{NSUP}{?rem?} & +\cross{NSUP}{?rem?} && \end{tabular} <<domain NSUP NewSparseUnivariatePolynomial>>= @@ -61024,6 +61081,7 @@ @ <<ODEIFTBL.dotabb>>= "ODEIFTBL" [color="#88FF44",href="bookvol10.3.pdf#nameddest=ODEIFTBL"] +"Domain" [color="#88FF44"] "ODEIFTBL" -> "Domain" @ @@ -61460,13 +61518,13 @@ \pageto{OpenMathDevice}{OMDEV} {\bf Exports:}\\ -\begin{tabular}{llllll} +\begin{tabular}{llll} \cross{OMCONN}{OMbindTCP} & \cross{OMCONN}{OMcloseConn} & \cross{OMCONN}{OMconnectTCP} & -\cross{OMCONN}{OMconnInDevice} & +\cross{OMCONN}{OMconnInDevice} \\ \cross{OMCONN}{OMconnOutDevice} & -\cross{OMCONN}{OMmakeConn} +\cross{OMCONN}{OMmakeConn} && \end{tabular} <<domain OMCONN OpenMathConnection>>= @@ -61508,6 +61566,7 @@ @ <<OMCONN.dotabb>>= "OMCONN" [color="#88FF44",href="bookvol10.3.pdf#nameddest=OMCONN"] +"Domain" [color="#88FF44"] "OMCONN" -> "Domain" @ @@ -61520,23 +61579,23 @@ \pageto{OpenMathConnection}{OMCONN} {\bf Exports:}\\ -\begin{tabular}{lllll} +\begin{tabular}{llll} \cross{OMDEV}{OMclose} & \cross{OMDEV}{OMgetApp} & \cross{OMDEV}{OMgetAtp} & -\cross{OMDEV}{OMgetAttr} & -\cross{OMDEV}{OMgetBVar} \\ +\cross{OMDEV}{OMgetAttr} \\ +\cross{OMDEV}{OMgetBVar} & \cross{OMDEV}{OMgetBind} & \cross{OMDEV}{OMgetEndApp} & -\cross{OMDEV}{OMgetEndAtp} & +\cross{OMDEV}{OMgetEndAtp} \\ \cross{OMDEV}{OMgetEndAttr} & -\cross{OMDEV}{OMgetEndBVar} \\ +\cross{OMDEV}{OMgetEndBVar} & \cross{OMDEV}{OMgetEndBind} & -\cross{OMDEV}{OMgetEndError} & +\cross{OMDEV}{OMgetEndError} \\ \cross{OMDEV}{OMgetEndObject} & \cross{OMDEV}{OMgetError} & -\cross{OMDEV}{OMgetFloat} \\ -\cross{OMDEV}{OMgetInteger} & +\cross{OMDEV}{OMgetFloat} & +\cross{OMDEV}{OMgetInteger} \\ \cross{OMDEV}{OMgetObject} & \cross{OMDEV}{OMgetString} & \cross{OMDEV}{OMgetType} & @@ -61544,26 +61603,26 @@ \cross{OMDEV}{OMputApp} & \cross{OMDEV}{OMputAtp} & \cross{OMDEV}{OMputAttr} & -\cross{OMDEV}{OMputBVar} & -\cross{OMDEV}{OMputBind} \\ +\cross{OMDEV}{OMputBVar} \\ +\cross{OMDEV}{OMputBind} & \cross{OMDEV}{OMputEndApp} & \cross{OMDEV}{OMputEndAtp} & -\cross{OMDEV}{OMputEndAttr} & +\cross{OMDEV}{OMputEndAttr} \\ \cross{OMDEV}{OMputEndBVar} & -\cross{OMDEV}{OMputEndBind} \\ +\cross{OMDEV}{OMputEndBind} & \cross{OMDEV}{OMputEndError} & -\cross{OMDEV}{OMputEndObject} & +\cross{OMDEV}{OMputEndObject} \\ \cross{OMDEV}{OMputError} & \cross{OMDEV}{OMputObject} & -\cross{OMDEV}{OMputString} \\ -\cross{OMDEV}{OMgetSymbol} & +\cross{OMDEV}{OMputString} & +\cross{OMDEV}{OMgetSymbol} \\ \cross{OMDEV}{OMopenFile} & \cross{OMDEV}{OMopenString} & \cross{OMDEV}{OMputFloat} & \cross{OMDEV}{OMputInteger} \\ \cross{OMDEV}{OMputSymbol} & \cross{OMDEV}{OMputVariable} & -\cross{OMDEV}{OMsetEncoding} && +\cross{OMDEV}{OMsetEncoding} & \end{tabular} <<domain OMDEV OpenMathDevice>>= @@ -61734,6 +61793,7 @@ @ <<OMDEV.dotabb>>= "OMDEV" [color="#88FF44",href="bookvol10.3.pdf#nameddest=OMDEV"] +"Domain" [color="#88FF44"] "OMDEV" -> "Domain" @ @@ -61746,16 +61806,16 @@ \pageto{OpenMathConnection}{OMCONN} {\bf Exports:}\\ -\begin{tabular}{lllllllll} +\begin{tabular}{lllll} \cross{OMENC}{coerce} & \cross{OMENC}{hash} & \cross{OMENC}{latex} & \cross{OMENC}{OMencodingBinary} & -\cross{OMENC}{OMencodingSGML} & +\cross{OMENC}{OMencodingSGML} \\ \cross{OMENC}{OMencodingUnknown} & \cross{OMENC}{OMencodingXML} & \cross{OMENC}{?=?} & -\cross{OMENC}{?\~{}=?} +\cross{OMENC}{?\~{}=?} & \end{tabular} <<domain OMENC OpenMathEncoding>>= @@ -61818,12 +61878,12 @@ \pageto{OpenMathErrorKind}{OMERRK} {\bf Exports:}\\ -\begin{tabular}{llllllll} +\begin{tabular}{lllll} \cross{OMERR}{coerce} & \cross{OMERR}{errorInfo} & \cross{OMERR}{errorKind} & \cross{OMERR}{hash} & -\cross{OMERR}{latex} & +\cross{OMERR}{latex} \\ \cross{OMERR}{omError} & \cross{OMERR}{?=?} & \cross{OMERR}{?~=?} @@ -64826,23 +64886,23 @@ \pageto{BalancedPAdicRational}{BPADICRT} {\bf Exports:}\\ -\begin{tabular}{lllll} +\begin{tabular}{llll} \cross{PADIC}{0} & \cross{PADIC}{1} & \cross{PADIC}{approximate} & -\cross{PADIC}{associates?} & -\cross{PADIC}{characteristic} \\ +\cross{PADIC}{associates?} \\ +\cross{PADIC}{characteristic} & \cross{PADIC}{coerce} & \cross{PADIC}{complete} & -\cross{PADIC}{digits} & +\cross{PADIC}{digits} \\ \cross{PADIC}{divide} & -\cross{PADIC}{euclideanSize} \\ +\cross{PADIC}{euclideanSize} & \cross{PADIC}{expressIdealMember} & -\cross{PADIC}{exquo} & +\cross{PADIC}{exquo} \\ \cross{PADIC}{extend} & \cross{PADIC}{extendedEuclidean} & -\cross{PADIC}{gcd} \\ -\cross{PADIC}{gcdPolynomial} & +\cross{PADIC}{gcd} & +\cross{PADIC}{gcdPolynomial} \\ \cross{PADIC}{hash} & \cross{PADIC}{latex} & \cross{PADIC}{lcm} & @@ -64850,19 +64910,19 @@ \cross{PADIC}{moduloP} & \cross{PADIC}{modulus} & \cross{PADIC}{multiEuclidean} & -\cross{PADIC}{one?} & -\cross{PADIC}{order} \\ +\cross{PADIC}{one?} \\ +\cross{PADIC}{order} & \cross{PADIC}{principalIdeal} & \cross{PADIC}{quotientByP} & -\cross{PADIC}{recip} & +\cross{PADIC}{recip} \\ \cross{PADIC}{root} & -\cross{PADIC}{sample} \\ +\cross{PADIC}{sample} & \cross{PADIC}{sizeLess?} & -\cross{PADIC}{sqrt} & +\cross{PADIC}{sqrt} \\ \cross{PADIC}{subtractIfCan} & \cross{PADIC}{unit?} & -\cross{PADIC}{unitCanonical} \\ -\cross{PADIC}{unitNormal} & +\cross{PADIC}{unitCanonical} & +\cross{PADIC}{unitNormal} \\ \cross{PADIC}{zero?} & \cross{PADIC}{?*?} & \cross{PADIC}{?**?} & @@ -64870,10 +64930,10 @@ \cross{PADIC}{?-?} & \cross{PADIC}{-?} & \cross{PADIC}{?=?} & -\cross{PADIC}{?\^{}?} & -\cross{PADIC}{?\~{}=?} \\ +\cross{PADIC}{?\^{}?} \\ +\cross{PADIC}{?\~{}=?} & \cross{PADIC}{?quo?} & -\cross{PADIC}{?rem?} &&& +\cross{PADIC}{?rem?} & \end{tabular} <<domain PADIC PAdicInteger>>= @@ -65035,88 +65095,88 @@ \pageto{BalancedPAdicRational}{BPADICRT} {\bf Exports:}\\ -\begin{tabular}{llll} +\begin{tabular}{lll} \cross{PADICRC}{0} & \cross{PADICRC}{1} & -\cross{PADICRC}{abs} & -\cross{PADICRC}{approximate} \\ +\cross{PADICRC}{abs} \\ +\cross{PADICRC}{approximate} & \cross{PADICRC}{associates?} & -\cross{PADICRC}{ceiling} & +\cross{PADICRC}{ceiling} \\ \cross{PADICRC}{characteristic} & -\cross{PADICRC}{charthRoot} \\ -\cross{PADICRC}{coerce} & +\cross{PADICRC}{charthRoot} & +\cross{PADICRC}{coerce} \\ \cross{PADICRC}{conditionP} & \cross{PADICRC}{continuedFraction} & \cross{PADICRC}{convert} \\ \cross{PADICRC}{D} & \cross{PADICRC}{denom} & -\cross{PADICRC}{denominator} & -\cross{PADICRC}{differentiate} \\ +\cross{PADICRC}{denominator} \\ +\cross{PADICRC}{differentiate} & \cross{PADICRC}{divide} & -\cross{PADICRC}{euclideanSize} & +\cross{PADICRC}{euclideanSize} \\ \cross{PADICRC}{eval} & -\cross{PADICRC}{expressIdealMember} \\ -\cross{PADICRC}{exquo} & +\cross{PADICRC}{expressIdealMember} & +\cross{PADICRC}{exquo} \\ \cross{PADICRC}{extendedEuclidean} & \cross{PADICRC}{factor} & \cross{PADICRC}{factorPolynomial} \\ \cross{PADICRC}{factorSquareFreePolynomial} & \cross{PADICRC}{floor} & -\cross{PADICRC}{fractionPart} & +\cross{PADICRC}{fractionPart} \\ +\cross{PADICRC}{gcd} & +\cross{PADICRC}{gcdPolynomial} & \cross{PADICRC}{gcd} \\ -\cross{PADICRC}{gcdPolynomial} & -\cross{PADICRC}{gcd} & \cross{PADICRC}{hash} & -\cross{PADICRC}{init} \\ -\cross{PADICRC}{inv} & +\cross{PADICRC}{init} & +\cross{PADICRC}{inv} \\ \cross{PADICRC}{latex} & \cross{PADICRC}{lcm} & \cross{PADICRC}{map} \\ \cross{PADICRC}{max} & \cross{PADICRC}{min} & -\cross{PADICRC}{multiEuclidean} & -\cross{PADICRC}{negative?} \\ +\cross{PADICRC}{multiEuclidean} \\ +\cross{PADICRC}{negative?} & \cross{PADICRC}{nextItem} & -\cross{PADICRC}{numer} & +\cross{PADICRC}{numer} \\ \cross{PADICRC}{numerator} & -\cross{PADICRC}{one?} \\ -\cross{PADICRC}{patternMatch} & +\cross{PADICRC}{one?} & +\cross{PADICRC}{patternMatch} \\ \cross{PADICRC}{positive?} & \cross{PADICRC}{prime?} & \cross{PADICRC}{principalIdeal} \\ \cross{PADICRC}{random} & \cross{PADICRC}{recip} & -\cross{PADICRC}{reducedSystem} & -\cross{PADICRC}{removeZeroes} \\ +\cross{PADICRC}{reducedSystem} \\ +\cross{PADICRC}{removeZeroes} & \cross{PADICRC}{retract} & -\cross{PADICRC}{retractIfCan} & +\cross{PADICRC}{retractIfCan} \\ \cross{PADICRC}{sample} & -\cross{PADICRC}{sign} \\ -\cross{PADICRC}{sizeLess?} & +\cross{PADICRC}{sign} & +\cross{PADICRC}{sizeLess?} \\ \cross{PADICRC}{solveLinearPolynomialEquation} & \cross{PADICRC}{squareFree} & \cross{PADICRC}{squareFreePart} \\ \cross{PADICRC}{squareFreePolynomial} & \cross{PADICRC}{subtractIfCan} & -\cross{PADICRC}{unit?} & -\cross{PADICRC}{unitCanonical} \\ +\cross{PADICRC}{unit?} \\ +\cross{PADICRC}{unitCanonical} & \cross{PADICRC}{unitNormal} & -\cross{PADICRC}{wholePart} & +\cross{PADICRC}{wholePart} \\ \cross{PADICRC}{zero?} & -\cross{PADICRC}{?*?} \\ -\cross{PADICRC}{?**?} & +\cross{PADICRC}{?*?} & +\cross{PADICRC}{?**?} \\ \cross{PADICRC}{?+?} & \cross{PADICRC}{?-?} & \cross{PADICRC}{-?} \\ \cross{PADICRC}{?/?} & \cross{PADICRC}{?=?} & -\cross{PADICRC}{?\^{}?} & -\cross{PADICRC}{?\~{}=?} \\ +\cross{PADICRC}{?\^{}?} \\ +\cross{PADICRC}{?\~{}=?} & \cross{PADICRC}{?$<$?} & -\cross{PADICRC}{?$<=$?} & +\cross{PADICRC}{?$<=$?} \\ \cross{PADICRC}{?$>$?} & -\cross{PADICRC}{?$>=$?} \\ -\cross{PADICRC}{?.?} & +\cross{PADICRC}{?$>=$?} & +\cross{PADICRC}{?.?} \\ \cross{PADICRC}{?quo?} & \cross{PADICRC}{?rem?} & \end{tabular} @@ -81186,6 +81246,25 @@ \section{domain FORMULA ScriptFormulaFormat} \pagehead{ScriptFormulaFormat}{FORMULA} \pagepic{ps/v103scriptformulaformat.ps}{FORMULA}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{FORMULA}{coerce} & +\cross{FORMULA}{display} & +\cross{FORMULA}{epilogue} & +\cross{FORMULA}{formula} & +\cross{FORMULA}{hash} \\ +\cross{FORMULA}{latex} & +\cross{FORMULA}{new} & +\cross{FORMULA}{prologue} & +\cross{FORMULA}{convert} & +\cross{FORMULA}{setEpilogue!} \\ +\cross{FORMULA}{setFormula!} & +\cross{FORMULA}{setPrologue!} & +\cross{FORMULA}{?=?} & +\cross{FORMULA}{?\~{}=?} & +\end{tabular} + <<domain FORMULA ScriptFormulaFormat>>= )abbrev domain FORMULA ScriptFormulaFormat ++ Author: Robert S. Sutor @@ -81796,6 +81875,27 @@ {\bf See}\\ \pageto{SegmentBinding}{SEGBIND} \pageto{UniversalSegment}{UNISEG} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{SEG}{BY} & +\cross{SEG}{coerce} & +\cross{SEG}{convert} & +\cross{SEG}{expand} & +\cross{SEG}{hash} \\ +\cross{SEG}{hi} & +\cross{SEG}{high} & +\cross{SEG}{incr} & +\cross{SEG}{latex} & +\cross{SEG}{lo} \\ +\cross{SEG}{low} & +\cross{SEG}{map} & +\cross{SEG}{segment} & +\cross{SEG}{?=?} & +\cross{SEG}{?\~{}=?} \\ +\cross{SEG}{?..?} &&&& +\end{tabular} + <<domain SEG Segment>>= )abbrev domain SEG Segment ++ Author: Stephen M. Watt @@ -81997,6 +82097,19 @@ {\bf See}\\ \pageto{Segment}{SEG} \pageto{UniversalSegment}{UNISEG} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{SEGBIND}{coerce} & +\cross{SEGBIND}{equation} & +\cross{SEGBIND}{hash} & +\cross{SEGBIND}{latex} & +\cross{SEGBIND}{segment} \\ +\cross{SEGBIND}{variable} & +\cross{SEGBIND}{?=?} & +\cross{SEGBIND}{?\~{}=?} && +\end{tabular} + <<domain SEGBIND SegmentBinding>>= )abbrev domain SEGBIND SegmentBinding ++ Author: @@ -82358,6 +82471,65 @@ @ \pagehead{Set}{SET} \pagepic{ps/v103set.ps}{SET}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{SET}{any?} & +\cross{SET}{bag} & +\cross{SET}{brace} & +\cross{SET}{cardinality} & +\cross{SET}{coerce} \\ +\cross{SET}{complement} & +\cross{SET}{construct} & +\cross{SET}{convert} & +\cross{SET}{copy} & +\cross{SET}{count} \\ +\cross{SET}{dictionary} & +\cross{SET}{difference} & +\cross{SET}{empty} & +\cross{SET}{empty?} & +\cross{SET}{eq?} \\ +\cross{SET}{eval} & +\cross{SET}{every?} & +\cross{SET}{extract!} & +\cross{SET}{find} & +\cross{SET}{hash} \\ +\cross{SET}{index} & +\cross{SET}{insert!} & +\cross{SET}{inspect} & +\cross{SET}{intersect} & +\cross{SET}{latex} \\ +\cross{SET}{less?} & +\cross{SET}{lookup} & +\cross{SET}{map} & +\cross{SET}{map!} & +\cross{SET}{max} \\ +\cross{SET}{member?} & +\cross{SET}{members} & +\cross{SET}{min} & +\cross{SET}{more?} & +\cross{SET}{parts} \\ +\cross{SET}{random} & +\cross{SET}{reduce} & +\cross{SET}{remove} & +\cross{SET}{remove!} & +\cross{SET}{removeDuplicates} \\ +\cross{SET}{sample} & +\cross{SET}{select} & +\cross{SET}{select!} & +\cross{SET}{set} & +\cross{SET}{size} \\ +\cross{SET}{size?} & +\cross{SET}{subset?} & +\cross{SET}{symmetricDifference} & +\cross{SET}{union} & +\cross{SET}{universe} \\ +\cross{SET}{\#{}?} & +\cross{SET}{?\~{}=?} & +\cross{SET}{?$<$?} & +\cross{SET}{?=?} & +\end{tabular} + <<domain SET Set>>= )abbrev domain SET Set ++ Author: Michael Monagan; revised by Richard Jenks @@ -82546,6 +82718,27 @@ \section{domain SETMN SetOfMIntegersInOneToN} \pagehead{SetOfMIntegersInOneToN}{SETMN} \pagepic{ps/v103setofmintegersinoneton.ps}{SETMN}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{SETMN}{coerce} & +\cross{SETMN}{delta} & +\cross{SETMN}{elements} & +\cross{SETMN}{enumerate} & +\cross{SETMN}{hash} \\ +\cross{SETMN}{incrementKthElement} & +\cross{SETMN}{index} & +\cross{SETMN}{latex} & +\cross{SETMN}{lookup} & +\cross{SETMN}{member?} \\ +\cross{SETMN}{random} & +\cross{SETMN}{replaceKthElement} & +\cross{SETMN}{setOfMinN} & +\cross{SETMN}{size} & +\cross{SETMN}{?=?} \\ +\cross{SETMN}{?\~{}=?} &&&& +\end{tabular} + <<domain SETMN SetOfMIntegersInOneToN>>= )abbrev domain SETMN SetOfMIntegersInOneToN ++ Author: Manuel Bronstein @@ -82707,6 +82900,103 @@ \pageto{SequentialDifferentialVariable}{SDVAR} \pageto{DifferentialSparseMultivariatePolynomial}{DSMP} \pageto{OrderlyDifferentialPolynomial}{ODPOL} + +{\bf Exports:}\\ +\begin{tabular}{lll} +\cross{SDPOL}{0} & +\cross{SDPOL}{1} & +\cross{SDPOL}{associates?} \\ +\cross{SDPOL}{binomThmExpt} & +\cross{SDPOL}{characteristic} & +\cross{SDPOL}{charthRoot} \\ +\cross{SDPOL}{coefficient} & +\cross{SDPOL}{coefficients} & +\cross{SDPOL}{coerce} \\ +\cross{SDPOL}{conditionP} & +\cross{SDPOL}{content} & +\cross{SDPOL}{convert} \\ +\cross{SDPOL}{D} & +\cross{SDPOL}{degree} & +\cross{SDPOL}{differentialVariables} \\ +\cross{SDPOL}{differentiate} & +\cross{SDPOL}{discriminant} & +\cross{SDPOL}{eval} \\ +\cross{SDPOL}{exquo} & +\cross{SDPOL}{factor} & +\cross{SDPOL}{factorPolynomial} \\ +\cross{SDPOL}{factorSquareFreePolynomial} & +\cross{SDPOL}{gcd} & +\cross{SDPOL}{gcdPolynomial} \\ +\cross{SDPOL}{ground} & +\cross{SDPOL}{ground?} & +\cross{SDPOL}{hash} \\ +\cross{SDPOL}{initial} & +\cross{SDPOL}{isExpt} & +\cross{SDPOL}{isobaric?} \\ +\cross{SDPOL}{isPlus} & +\cross{SDPOL}{isTimes} & +\cross{SDPOL}{latex} \\ +\cross{SDPOL}{lcm} & +\cross{SDPOL}{leader} & +\cross{SDPOL}{leadingCoefficient} \\ +\cross{SDPOL}{leadingMonomial} & +\cross{SDPOL}{mainVariable} & +\cross{SDPOL}{makeVariable} \\ +\cross{SDPOL}{map} & +\cross{SDPOL}{mapExponents} & +\cross{SDPOL}{max} \\ +\cross{SDPOL}{min} & +\cross{SDPOL}{minimumDegree} & +\cross{SDPOL}{monicDivide} \\ +\cross{SDPOL}{monomial} & +\cross{SDPOL}{monomial?} & +\cross{SDPOL}{monomials} \\ +\cross{SDPOL}{multivariate} & +\cross{SDPOL}{numberOfMonomials} & +\cross{SDPOL}{one?} \\ +\cross{SDPOL}{order} & +\cross{SDPOL}{patternMatch} & +\cross{SDPOL}{pomopo!} \\ +\cross{SDPOL}{prime?} & +\cross{SDPOL}{primitiveMonomials} & +\cross{SDPOL}{primitivePart} \\ +\cross{SDPOL}{recip} & +\cross{SDPOL}{reducedSystem} & +\cross{SDPOL}{reductum} \\ +\cross{SDPOL}{resultant} & +\cross{SDPOL}{retract} & +\cross{SDPOL}{retractIfCan} \\ +\cross{SDPOL}{sample} & +\cross{SDPOL}{separant} & +\cross{SDPOL}{solveLinearPolynomialEquation} \\ +\cross{SDPOL}{squareFree} & +\cross{SDPOL}{squareFreePart} & +\cross{SDPOL}{squareFreePolynomial} \\ +\cross{SDPOL}{subtractIfCan} & +\cross{SDPOL}{totalDegree} & +\cross{SDPOL}{unit?} \\ +\cross{SDPOL}{unitCanonical} & +\cross{SDPOL}{unitNormal} & +\cross{SDPOL}{univariate} \\ +\cross{SDPOL}{variables} & +\cross{SDPOL}{weight} & +\cross{SDPOL}{weights} \\ +\cross{SDPOL}{zero?} & +\cross{SDPOL}{?\^{}?} & +\cross{SDPOL}{?*?} \\ +\cross{SDPOL}{?**?} & +\cross{SDPOL}{?+?} & +\cross{SDPOL}{?-?} \\ +\cross{SDPOL}{-?} & +\cross{SDPOL}{?=?} & +\cross{SDPOL}{?\~{}=?} \\ +\cross{SDPOL}{?/?} & +\cross{SDPOL}{?$<$?} & +\cross{SDPOL}{?$<=$?} \\ +\cross{SDPOL}{?$>$?} & +\cross{SDPOL}{?$>=$?} & +\end{tabular} + <<domain SDPOL SequentialDifferentialPolynomial>>= )abbrev domain SDPOL SequentialDifferentialPolynomial ++ Author: William Sit @@ -82755,6 +83045,29 @@ \pageto{DifferentialSparseMultivariatePolynomial}{DSMP} \pageto{OrderlyDifferentialPolynomial}{ODPOL} \pageto{SequentialDifferentialPolynomial}{SDPOL} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{SDVAR}{coerce} & +\cross{SDVAR}{differentiate} & +\cross{SDVAR}{hash} & +\cross{SDVAR}{latex} & +\cross{SDVAR}{makeVariable} \\ +\cross{SDVAR}{max} & +\cross{SDVAR}{min} & +\cross{SDVAR}{order} & +\cross{SDVAR}{retract} & +\cross{SDVAR}{retractIfCan} \\ +\cross{SDVAR}{variable} & +\cross{SDVAR}{weight} & +\cross{SDVAR}{?\~{}=?} & +\cross{SDVAR}{?$<$?} & +\cross{SDVAR}{?$<=$?} \\ +\cross{SDVAR}{?=?} & +\cross{SDVAR}{?$>$?} & +\cross{SDVAR}{?$>=$?} && +\end{tabular} + <<domain SDVAR SequentialDifferentialVariable>>= )abbrev domain SDVAR SequentialDifferentialVariable ++ Author: William Sit @@ -82805,6 +83118,36 @@ \pagepic{ps/v103sexpression.ps}{SEX}{1.00} {\bf See}\\ \pageto{SExpressionOf}{SEXOF} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{SEX}{atom?} & +\cross{SEX}{car} & +\cross{SEX}{cdr} & +\cross{SEX}{coerce} & +\cross{SEX}{convert} \\ +\cross{SEX}{destruct} & +\cross{SEX}{eq} & +\cross{SEX}{expr} & +\cross{SEX}{float} & +\cross{SEX}{float?} \\ +\cross{SEX}{hash} & +\cross{SEX}{integer} & +\cross{SEX}{integer?} & +\cross{SEX}{latex} & +\cross{SEX}{list?} \\ +\cross{SEX}{null?} & +\cross{SEX}{pair?} & +\cross{SEX}{string} & +\cross{SEX}{string?} & +\cross{SEX}{symbol} \\ +\cross{SEX}{symbol?} & +\cross{SEX}{\#{}?} & +\cross{SEX}{?.?} & +\cross{SEX}{?=?} & +\cross{SEX}{?\~{}=?} +\end{tabular} + <<domain SEX SExpression>>= )abbrev domain SEX SExpression ++ Domain for the standard Lisp values @@ -82829,6 +83172,36 @@ \pagepic{ps/v103sexpressionof.ps}{SEXOF}{1.00} {\bf See}\\ \pageto{SExpression}{SEX} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{SEXOF}{atom?} & +\cross{SEXOF}{car} & +\cross{SEXOF}{cdr} & +\cross{SEXOF}{coerce} & +\cross{SEXOF}{convert} \\ +\cross{SEXOF}{destruct} & +\cross{SEXOF}{eq} & +\cross{SEXOF}{expr} & +\cross{SEXOF}{float} & +\cross{SEXOF}{float?} \\ +\cross{SEXOF}{hash} & +\cross{SEXOF}{integer} & +\cross{SEXOF}{integer?} & +\cross{SEXOF}{latex} & +\cross{SEXOF}{list?} \\ +\cross{SEXOF}{null?} & +\cross{SEXOF}{pair?} & +\cross{SEXOF}{string} & +\cross{SEXOF}{string?} & +\cross{SEXOF}{symbol} \\ +\cross{SEXOF}{symbol?} & +\cross{SEXOF}{\#{}?} & +\cross{SEXOF}{?.?} & +\cross{SEXOF}{?=?} & +\cross{SEXOF}{?\~{}=?} +\end{tabular} + <<domain SEXOF SExpressionOf>>= )abbrev domain SEXOF SExpressionOf ++ Domain for Lisp values over arbitrary atomic types @@ -82910,6 +83283,92 @@ \section{domain SAE SimpleAlgebraicExtension} \pagehead{SimpleAlgebraicExtension}{SAE} \pagepic{ps/v103simplealgebraicextension.ps}{SAE}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{lll} +\cross{SAE}{0} & +\cross{SAE}{1} & +\cross{SAE}{associates?} \\ +\cross{SAE}{basis} & +\cross{SAE}{characteristic} & +\cross{SAE}{characteristicPolynomial} \\ +\cross{SAE}{charthRoot} & +\cross{SAE}{coerce} & +\cross{SAE}{conditionP} \\ +\cross{SAE}{convert} & +\cross{SAE}{coordinates} & +\cross{SAE}{createPrimitiveElement} \\ +\cross{SAE}{D} & +\cross{SAE}{definingPolynomial} & +\cross{SAE}{derivationCoordinates} \\ +\cross{SAE}{differentiate} & +\cross{SAE}{discreteLog} & +\cross{SAE}{discriminant} \\ +\cross{SAE}{divide} & +\cross{SAE}{euclideanSize} & +\cross{SAE}{expressIdealMember} \\ +\cross{SAE}{exquo} & +\cross{SAE}{extendedEuclidean} & +\cross{SAE}{factor} \\ +\cross{SAE}{factorsOfCyclicGroupSize} & +\cross{SAE}{gcd} & +\cross{SAE}{gcdPolynomia... [truncated message content] |
From: <gi...@ax...> - 2009-01-19 22:39:58
|
books/bookvol10.3.pamphlet | 5058 ++++++++++++++++++-- books/ps/v103colorchart.ps | 283 ++ ...v103indexeddirectproductorderedabelianmonoid.ps | 9 +- books/ps/v103indexedtwodimensionalarray.ps | 9 +- books/ps/v103odeintensityfunctionstable.ps | 4 +- books/ps/v103openmathconnection.ps | 4 +- books/ps/v103openmathdevice.ps | 4 +- books/ps/v103tuple.ps | 9 +- changelog | 9 + src/axiom-website/patches.html | 2 + 10 files changed, 4930 insertions(+), 461 deletions(-) New commits: commit 14952f290e9d524bfdf51afbf0ba57b5039943e7 Author: root <root@bob.(none)> Date: Mon Jan 19 17:38:24 2009 -0500 20090118 tpd src/axiom-website/patches.html 20090118.01.tpd.patch 20090118 tpd books/bookvol10.3 add exports 20090118 tpd books/ps/v103colorchart.ps added 20090118 tpd books/ps/v103tuple.ps fixed 20090118 tpd books/ps/v103openmathdevice.ps fixed 20090118 tpd books/ps/v103openmathconnection.ps fixed 20090118 tpd books/ps/v103odeintensityfunctionstable.ps fixed 20090118 tpd books/ps/v103indexedtwodimensionalarray.ps fixed 20090118 tpd books/ps/v103indexeddirectproductorderedabelianmonoid.ps fixed |
From: <da...@us...> - 2009-01-19 00:25:48
|
Revision: 1086 http://axiom.svn.sourceforge.net/axiom/?rev=1086&view=rev Author: daly Date: 2009-01-19 00:25:38 +0000 (Mon, 19 Jan 2009) Log Message: ----------- 20090117 tpd src/axiom-website/patches.html 20090117.01.tpd.patch 20090117 tpd books/bookvol10.3 add exports Modified Paths: -------------- trunk/axiom/books/bookvol10.3.pamphlet trunk/axiom/changelog trunk/axiom/src/axiom-website/patches.html Modified: trunk/axiom/books/bookvol10.3.pamphlet =================================================================== --- trunk/axiom/books/bookvol10.3.pamphlet 2009-01-17 09:10:02 UTC (rev 1085) +++ trunk/axiom/books/bookvol10.3.pamphlet 2009-01-19 00:25:38 UTC (rev 1086) @@ -73654,6 +73654,27 @@ \pagepic{ps/v103quadraticform.ps}{QFORM}{1.00} {\bf See}\\ \pageto{CliffordAlgebra}{CLIF} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{QFORM}{0} & +\cross{QFORM}{coerce} & +\cross{QFORM}{hash} & +\cross{QFORM}{latex} & +\cross{QFORM}{matrix} \\ +\cross{QFORM}{quadraticForm} & +\cross{QFORM}{sample} & +\cross{QFORM}{subtractIfCan} & +\cross{QFORM}{zero?} & +\cross{QFORM}{?\~{}=?} \\ +\cross{QFORM}{?*?} & +\cross{QFORM}{?.?} & +\cross{QFORM}{?+?} & +\cross{QFORM}{?-?} & +\cross{QFORM}{-?} \\ +\cross{QFORM}{?=?} &&&& +\end{tabular} + <<domain QFORM QuadraticForm>>= )abbrev domain QFORM QuadraticForm ++ Author: Stephen M. Watt @@ -73706,6 +73727,25 @@ \section{domain QALGSET QuasiAlgebraicSet} \pagehead{QuasiAlgebraicSet}{QALGSET} \pagepic{ps/v103quasialgebraicset.ps}{QALGSET}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{llll} +\cross{QALGSET}{coerce} & +\cross{QALGSET}{definingEquations} & +\cross{QALGSET}{definingInequation} & +\cross{QALGSET}{empty} \\ +\cross{QALGSET}{empty?} & +\cross{QALGSET}{hash} & +\cross{QALGSET}{idealSimplify} & +\cross{QALGSET}{latex} \\ +\cross{QALGSET}{quasiAlgebraicSet} & +\cross{QALGSET}{setStatus} & +\cross{QALGSET}{simplify} & +\cross{QALGSET}{status} \\ +\cross{QALGSET}{?=?} & +\cross{QALGSET}{?\~{}=?} && +\end{tabular} + <<domain QALGSET QuasiAlgebraicSet>>= )abbrev domain QALGSET QuasiAlgebraicSet ++ Author: William Sit @@ -74140,6 +74180,58 @@ @ \pagehead{Quaternion}{QUAT} \pagepic{ps/v103quaternion.ps}{QUAT}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{QUAT}{0} & +\cross{QUAT}{1} & +\cross{QUAT}{abs} & +\cross{QUAT}{characteristic} & +\cross{QUAT}{charthRoot} \\ +\cross{QUAT}{coerce} & +\cross{QUAT}{conjugate} & +\cross{QUAT}{convert} & +\cross{QUAT}{D} & +\cross{QUAT}{differentiate} \\ +\cross{QUAT}{eval} & +\cross{QUAT}{hash} & +\cross{QUAT}{imagI} & +\cross{QUAT}{imagJ} & +\cross{QUAT}{imagK} \\ +\cross{QUAT}{inv} & +\cross{QUAT}{latex} & +\cross{QUAT}{map} & +\cross{QUAT}{max} & +\cross{QUAT}{min} \\ +\cross{QUAT}{norm} & +\cross{QUAT}{one?} & +\cross{QUAT}{quatern} & +\cross{QUAT}{rational} & +\cross{QUAT}{rational?} \\ +\cross{QUAT}{rationalIfCan} & +\cross{QUAT}{real} & +\cross{QUAT}{recip} & +\cross{QUAT}{reducedSystem} & +\cross{QUAT}{retract} \\ +\cross{QUAT}{retractIfCan} & +\cross{QUAT}{sample} & +\cross{QUAT}{subtractIfCan} & +\cross{QUAT}{zero?} & +\cross{QUAT}{?*?} \\ +\cross{QUAT}{?**?} & +\cross{QUAT}{?+?} & +\cross{QUAT}{?-?} & +\cross{QUAT}{-?} & +\cross{QUAT}{?=?} \\ +\cross{QUAT}{?\^{}?} & +\cross{QUAT}{?\~{}=?} & +\cross{QUAT}{?$<$?} & +\cross{QUAT}{?$<=$?} & +\cross{QUAT}{?$>$?} \\ +\cross{QUAT}{?$>=$?} & +\cross{QUAT}{?.?} &&& +\end{tabular} + <<domain QUAT Quaternion>>= )abbrev domain QUAT Quaternion ++ Author: Robert S. Sutor @@ -74194,6 +74286,15 @@ \pageto{DataList}{DLIST} \pageto{IndexCard}{ICARD} \pageto{Database}{DBASE} + +{\bf Exports:}\\ +\begin{tabular}{llll} +\cross{QEQUAT}{coerce} & +\cross{QEQUAT}{equation} & +\cross{QEQUAT}{value} & +\cross{QEQUAT}{variable} +\end{tabular} + <<domain QEQUAT QueryEquation>>= )abbrev domain QEQUAT QueryEquation ++ This domain implements simple database queries @@ -74228,6 +74329,45 @@ \pageto{ArrayStack}{ASTACK} \pageto{Dequeue}{DEQUEUE} \pageto{Heap}{HEAP} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{QUEUE}{any?} & +\cross{QUEUE}{back} & +\cross{QUEUE}{bag} & +\cross{QUEUE}{coerce} & +\cross{QUEUE}{copy} \\ +\cross{QUEUE}{count} & +\cross{QUEUE}{dequeue!} & +\cross{QUEUE}{empty} & +\cross{QUEUE}{empty?} & +\cross{QUEUE}{enqueue!} \\ +\cross{QUEUE}{eq?} & +\cross{QUEUE}{eval} & +\cross{QUEUE}{every?} & +\cross{QUEUE}{extract!} & +\cross{QUEUE}{front} \\ +\cross{QUEUE}{hash} & +\cross{QUEUE}{insert!} & +\cross{QUEUE}{inspect} & +\cross{QUEUE}{latex} & +\cross{QUEUE}{length} \\ +\cross{QUEUE}{less?} & +\cross{QUEUE}{map} & +\cross{QUEUE}{map!} & +\cross{QUEUE}{member?} & +\cross{QUEUE}{members} \\ +\cross{QUEUE}{more?} & +\cross{QUEUE}{parts} & +\cross{QUEUE}{queue} & +\cross{QUEUE}{rotate!} & +\cross{QUEUE}{sample} \\ +\cross{QUEUE}{size?} & +\cross{QUEUE}{\#{}?} & +\cross{QUEUE}{?=?} & +\cross{QUEUE}{?\~{}=?} & +\end{tabular} + <<domain QUEUE Queue>>= )abbrev domain QUEUE Queue ++ Author: Michael Monagan and Stephen Watt @@ -74290,6 +74430,125 @@ \pagepic{ps/v103radicalfunctionfield.ps}{RADFF}{1.00} {\bf See}\\ \pageto{AlgebraicFunctionField}{ALGFF} + +{\bf Exports:}\\ +\begin{tabular}{lll} +\cross{RADFF}{0} & +\cross{RADFF}{1} & +\cross{RADFF}{absolutelyIrreducible?} \\ +\cross{RADFF}{algSplitSimple} & +\cross{RADFF}{associates?} & +\cross{RADFF}{basis} \\ +\cross{RADFF}{branchPoint?} & +\cross{RADFF}{branchPointAtInfinity?} & +\cross{RADFF}{characteristic} \\ +\cross{RADFF}{characteristicPolynomial} & +\cross{RADFF}{charthRoot} & +\cross{RADFF}{coerce} \\ +\cross{RADFF}{complementaryBasis} & +\cross{RADFF}{conditionP} & +\cross{RADFF}{convert} \\ +\cross{RADFF}{coordinates} & +\cross{RADFF}{createPrimitiveElement} & +\cross{RADFF}{D} \\ +\cross{RADFF}{derivationCoordinates} & +\cross{RADFF}{definingPolynomial} & +\cross{RADFF}{differentiate} \\ +\cross{RADFF}{discreteLog} & +\cross{RADFF}{discriminant} & +\cross{RADFF}{divide} \\ +\cross{RADFF}{elliptic} & +\cross{RADFF}{elt} & +\cross{RADFF}{euclideanSize} \\ +\cross{RADFF}{expressIdealMember} & +\cross{RADFF}{exquo} & +\cross{RADFF}{extendedEuclidean} \\ +\cross{RADFF}{factor} & +\cross{RADFF}{factorsOfCyclicGroupSize} & +\cross{RADFF}{gcd} \\ +\cross{RADFF}{gcdPolynomial} & +\cross{RADFF}{generator} & +\cross{RADFF}{genus} \\ +\cross{RADFF}{hash} & +\cross{RADFF}{hyperelliptic} & +\cross{RADFF}{index} \\ +\cross{RADFF}{init} & +\cross{RADFF}{integral?} & +\cross{RADFF}{integralAtInfinity?} \\ +\cross{RADFF}{integralBasis} & +\cross{RADFF}{integralBasisAtInfinity} & +\cross{RADFF}{integralCoordinates} \\ +\cross{RADFF}{integralDerivationMatrix} & +\cross{RADFF}{integralMatrix} & +\cross{RADFF}{integralMatrixAtInfinity} \\ +\cross{RADFF}{integralRepresents} & +\cross{RADFF}{inv} & +\cross{RADFF}{inverseIntegralMatrix} \\ +\cross{RADFF}{inverseIntegralMatrixAtInfinity} & +\cross{RADFF}{latex} & +\cross{RADFF}{lcm} \\ +\cross{RADFF}{lift} & +\cross{RADFF}{lookup} & +\cross{RADFF}{minimalPolynomial} \\ +\cross{RADFF}{multiEuclidean} & +\cross{RADFF}{nextItem} & +\cross{RADFF}{nonSingularModel} \\ +\cross{RADFF}{norm} & +\cross{RADFF}{normalizeAtInfinity} & +\cross{RADFF}{numberOfComponents} \\ +\cross{RADFF}{one?} & +\cross{RADFF}{order} & +\cross{RADFF}{prime?} \\ +\cross{RADFF}{primeFrobenius} & +\cross{RADFF}{primitive?} & +\cross{RADFF}{primitiveElement} \\ +\cross{RADFF}{primitivePart} & +\cross{RADFF}{principalIdeal} & +\cross{RADFF}{ramified?} \\ +\cross{RADFF}{ramifiedAtInfinity?} & +\cross{RADFF}{random} & +\cross{RADFF}{rank} \\ +\cross{RADFF}{rationalPoint?} & +\cross{RADFF}{rationalPoints} & +\cross{RADFF}{recip} \\ +\cross{RADFF}{reduce} & +\cross{RADFF}{reduce} & +\cross{RADFF}{reduceBasisAtInfinity} \\ +\cross{RADFF}{reducedSystem} & +\cross{RADFF}{regularRepresentation} & +\cross{RADFF}{representationType} \\ +\cross{RADFF}{represents} & +\cross{RADFF}{retract} & +\cross{RADFF}{retractIfCan} \\ +\cross{RADFF}{sample} & +\cross{RADFF}{singular?} & +\cross{RADFF}{singularAtInfinity?} \\ +\cross{RADFF}{size} & +\cross{RADFF}{sizeLess?} & +\cross{RADFF}{squareFree} \\ +\cross{RADFF}{squareFreePart} & +\cross{RADFF}{subtractIfCan} & +\cross{RADFF}{tableForDiscreteLogarithm} \\ +\cross{RADFF}{trace} & +\cross{RADFF}{traceMatrix} & +\cross{RADFF}{unit?} \\ +\cross{RADFF}{unitCanonical} & +\cross{RADFF}{unitNormal} & +\cross{RADFF}{yCoordinates} \\ +\cross{RADFF}{zero?} & +\cross{RADFF}{?*?} & +\cross{RADFF}{?**?} \\ +\cross{RADFF}{?+?} & +\cross{RADFF}{?-?} & +\cross{RADFF}{-?} \\ +\cross{RADFF}{?=?} & +\cross{RADFF}{?\^{}?} & +\cross{RADFF}{?\~{}=?} \\ +\cross{RADFF}{?/?} & +\cross{RADFF}{?quo?} & +\cross{RADFF}{?rem?} +\end{tabular} + <<domain RADFF RadicalFunctionField>>= )abbrev domain RADFF RadicalFunctionField ++ Function field defined by y**n = f(x) @@ -74783,6 +75042,96 @@ \pageto{BinaryExpansion}{BINARY} \pageto{DecimalExpansion}{DECIMAL} \pageto{HexadecimalExpansion}{HEXADEC} + +{\bf Exports:}\\ +\begin{tabular}{lll} +\cross{RADIX}{0} & +\cross{RADIX}{1} & +\cross{RADIX}{abs} \\ +\cross{RADIX}{associates?} & +\cross{RADIX}{ceiling} & +\cross{RADIX}{characteristic} \\ +\cross{RADIX}{charthRoot} & +\cross{RADIX}{coerce} & +\cross{RADIX}{conditionP} \\ +\cross{RADIX}{convert} & +\cross{RADIX}{cycleRagits} & +\cross{RADIX}{D} \\ +\cross{RADIX}{denom} & +\cross{RADIX}{denominator} & +\cross{RADIX}{differentiate} \\ +\cross{RADIX}{divide} & +\cross{RADIX}{euclideanSize} & +\cross{RADIX}{eval} \\ +\cross{RADIX}{expressIdealMember} & +\cross{RADIX}{exquo} & +\cross{RADIX}{extendedEuclidean} \\ +\cross{RADIX}{factor} & +\cross{RADIX}{factorPolynomial} & +\cross{RADIX}{factorSquareFreePolynomial} \\ +\cross{RADIX}{floor} & +\cross{RADIX}{fractRadix} & +\cross{RADIX}{fractRagits} \\ +\cross{RADIX}{fractionPart} & +\cross{RADIX}{gcd} & +\cross{RADIX}{gcdPolynomial} \\ +\cross{RADIX}{hash} & +\cross{RADIX}{init} & +\cross{RADIX}{inv} \\ +\cross{RADIX}{latex} & +\cross{RADIX}{lcm} & +\cross{RADIX}{map} \\ +\cross{RADIX}{max} & +\cross{RADIX}{min} & +\cross{RADIX}{multiEuclidean} \\ +\cross{RADIX}{negative?} & +\cross{RADIX}{nextItem} & +\cross{RADIX}{numer} \\ +\cross{RADIX}{numerator} & +\cross{RADIX}{one?} & +\cross{RADIX}{patternMatch} \\ +\cross{RADIX}{positive?} & +\cross{RADIX}{prefixRagits} & +\cross{RADIX}{prime?} \\ +\cross{RADIX}{principalIdeal} & +\cross{RADIX}{random} & +\cross{RADIX}{recip} \\ +\cross{RADIX}{reducedSystem} & +\cross{RADIX}{retract} & +\cross{RADIX}{retractIfCan} \\ +\cross{RADIX}{sample} & +\cross{RADIX}{sign} & +\cross{RADIX}{sizeLess?} \\ +\cross{RADIX}{solveLinearPolynomialEquation} & +\cross{RADIX}{squareFree} & +\cross{RADIX}{squareFreePart} \\ +\cross{RADIX}{squareFreePolynomial} & +\cross{RADIX}{subtractIfCan} & +\cross{RADIX}{unit?} \\ +\cross{RADIX}{unitCanonical} & +\cross{RADIX}{unitNormal} & +\cross{RADIX}{wholePart} \\ +\cross{RADIX}{wholeRadix} & +\cross{RADIX}{wholeRagits} & +\cross{RADIX}{zero?} \\ +\cross{RADIX}{?.?} & +\cross{RADIX}{?*?} & +\cross{RADIX}{?**?} \\ +\cross{RADIX}{?+?} & +\cross{RADIX}{?-?} & +\cross{RADIX}{-?} \\ +\cross{RADIX}{?/?} & +\cross{RADIX}{?=?} & +\cross{RADIX}{?\^{}?} \\ +\cross{RADIX}{?\~{}=?} & +\cross{RADIX}{?$<$?} & +\cross{RADIX}{?$<=$?} \\ +\cross{RADIX}{?$>$?} & +\cross{RADIX}{?$>=$?} & +\cross{RADIX}{?quo?} \\ +\cross{RADIX}{?rem?} && +\end{tabular} + <<domain RADIX RadixExpansion>>= )abbrev domain RADIX RadixExpansion ++ Author: Stephen M. Watt @@ -76266,6 +76615,78 @@ \pagepic{ps/v103realclosure.ps}{RECLOS}{1.00} {\bf See}\\ \pageto{RightOpenIntervalRootCharacterization}{ROIRC} + +{\bf Exports:}\\ +\begin{tabular}{llll} +\cross{RECLOS}{0} & +\cross{RECLOS}{1} & +\cross{RECLOS}{abs} & +\cross{RECLOS}{algebraicOf} \\ +\cross{RECLOS}{allRootsOf} & +\cross{RECLOS}{approximate} & +\cross{RECLOS}{associates?} & +\cross{RECLOS}{characteristic} \\ +\cross{RECLOS}{coerce} & +\cross{RECLOS}{divide} & +\cross{RECLOS}{euclideanSize} & +\cross{RECLOS}{expressIdealMember} \\ +\cross{RECLOS}{exquo} & +\cross{RECLOS}{extendedEuclidean} & +\cross{RECLOS}{factor} & +\cross{RECLOS}{gcd} \\ +\cross{RECLOS}{gcdPolynomial} & +\cross{RECLOS}{hash} & +\cross{RECLOS}{inv} & +\cross{RECLOS}{latex} \\ +\cross{RECLOS}{lcm} & +\cross{RECLOS}{mainCharacterization} & +\cross{RECLOS}{mainDefiningPolynomial} & +\cross{RECLOS}{mainForm} \\ +\cross{RECLOS}{mainValue} & +\cross{RECLOS}{max} & +\cross{RECLOS}{multiEuclidean} & +\cross{RECLOS}{min} \\ +\cross{RECLOS}{negative?} & +\cross{RECLOS}{nthRoot} & +\cross{RECLOS}{one?} & +\cross{RECLOS}{positive?} \\ +\cross{RECLOS}{prime?} & +\cross{RECLOS}{principalIdeal} & +\cross{RECLOS}{recip} & +\cross{RECLOS}{relativeApprox} \\ +\cross{RECLOS}{rename} & +\cross{RECLOS}{rename!} & +\cross{RECLOS}{retract} & +\cross{RECLOS}{retractIfCan} \\ +\cross{RECLOS}{rootOf} & +\cross{RECLOS}{sample} & +\cross{RECLOS}{sign} & +\cross{RECLOS}{sizeLess?} \\ +\cross{RECLOS}{sqrt} & +\cross{RECLOS}{squareFree} & +\cross{RECLOS}{squareFreePart} & +\cross{RECLOS}{subtractIfCan} \\ +\cross{RECLOS}{unit?} & +\cross{RECLOS}{unitCanonical} & +\cross{RECLOS}{unitNormal} & +\cross{RECLOS}{zero?} \\ +\cross{RECLOS}{?*?} & +\cross{RECLOS}{?**?} & +\cross{RECLOS}{?+?} & +\cross{RECLOS}{?-?} \\ +\cross{RECLOS}{-?} & +\cross{RECLOS}{?/?} & +\cross{RECLOS}{?$<$?} & +\cross{RECLOS}{?$<=$?} \\ +\cross{RECLOS}{?=?} & +\cross{RECLOS}{?$>$?} & +\cross{RECLOS}{?$>=$?} & +\cross{RECLOS}{?\^{}?} \\ +\cross{RECLOS}{?\~{}=?} & +\cross{RECLOS}{?quo?} & +\cross{RECLOS}{?rem?} & +\end{tabular} + <<domain RECLOS RealClosure>>= )abbrev domain RECLOS RealClosure ++ Author: Renaud Rioboo @@ -76592,6 +77013,66 @@ \pageto{IndexedMatrix}{IMATRIX} \pageto{Matrix}{MATRIX} \pageto{SquareMatrix}{SQMATRIX} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{RMATRIX}{0} & +\cross{RMATRIX}{antisymmetric?} & +\cross{RMATRIX}{any?} & +\cross{RMATRIX}{coerce} & +\cross{RMATRIX}{column} \\ +\cross{RMATRIX}{convert} & +\cross{RMATRIX}{copy} & +\cross{RMATRIX}{count} & +\cross{RMATRIX}{diagonal?} & +\cross{RMATRIX}{dimension} \\ +\cross{RMATRIX}{elt} & +\cross{RMATRIX}{empty} & +\cross{RMATRIX}{empty?} & +\cross{RMATRIX}{eq?} & +\cross{RMATRIX}{eval} \\ +\cross{RMATRIX}{every?} & +\cross{RMATRIX}{exquo} & +\cross{RMATRIX}{hash} & +\cross{RMATRIX}{latex} & +\cross{RMATRIX}{less?} \\ +\cross{RMATRIX}{listOfLists} & +\cross{RMATRIX}{map} & +\cross{RMATRIX}{map!} & +\cross{RMATRIX}{matrix} & +\cross{RMATRIX}{maxColIndex} \\ +\cross{RMATRIX}{maxRowIndex} & +\cross{RMATRIX}{member?} & +\cross{RMATRIX}{members} & +\cross{RMATRIX}{minColIndex} & +\cross{RMATRIX}{minRowIndex} \\ +\cross{RMATRIX}{more?} & +\cross{RMATRIX}{ncols} & +\cross{RMATRIX}{nrows} & +\cross{RMATRIX}{nullSpace} & +\cross{RMATRIX}{nullity} \\ +\cross{RMATRIX}{parts} & +\cross{RMATRIX}{qelt} & +\cross{RMATRIX}{rank} & +\cross{RMATRIX}{rectangularMatrix} & +\cross{RMATRIX}{row} \\ +\cross{RMATRIX}{rowEchelon} & +\cross{RMATRIX}{sample} & +\cross{RMATRIX}{size?} & +\cross{RMATRIX}{square?} & +\cross{RMATRIX}{subtractIfCan} \\ +\cross{RMATRIX}{symmetric?} & +\cross{RMATRIX}{zero?} & +\cross{RMATRIX}{\#{}?} & +\cross{RMATRIX}{?\~{}=?} & +\cross{RMATRIX}{?*?} \\ +\cross{RMATRIX}{?/?} & +\cross{RMATRIX}{?+?} & +\cross{RMATRIX}{?-?} & +\cross{RMATRIX}{-?} & +\cross{RMATRIX}{?=?} +\end{tabular} + <<domain RMATRIX RectangularMatrix>>= )abbrev domain RMATRIX RectangularMatrix ++ Author: Grabmeier, Gschnitzer, Williamson @@ -76695,6 +77176,21 @@ \pageto{Boolean}{BOOLEAN} \pageto{IndexedBits}{IBITS} \pageto{Bits}{BITS} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{REF}{coerce} & +\cross{REF}{deref} & +\cross{REF}{elt} & +\cross{REF}{hash} & +\cross{REF}{latex} \\ +\cross{REF}{ref} & +\cross{REF}{setelt} & +\cross{REF}{setref} & +\cross{REF}{?=?} & +\cross{REF}{?\~{}=?} +\end{tabular} + <<domain REF Reference>>= )abbrev domain REF Reference ++ Author: Stephen M. Watt @@ -76751,6 +77247,102 @@ \section{domain RGCHAIN RegularChain} \pagehead{RegularChain}{RGCHAIN} \pagepic{ps/v103regularchain.ps}{RGCHAIN}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{ll} +\cross{RGCHAIN}{algebraic?} & +\cross{RGCHAIN}{algebraicCoefficients?} \\ +\cross{RGCHAIN}{algebraicVariables} & +\cross{RGCHAIN}{any?} \\ +\cross{RGCHAIN}{augment} & +\cross{RGCHAIN}{autoReduced?} \\ +\cross{RGCHAIN}{basicSet} & +\cross{RGCHAIN}{coHeight} \\ +\cross{RGCHAIN}{coerce} & +\cross{RGCHAIN}{collect} \\ +\cross{RGCHAIN}{collectQuasiMonic} & +\cross{RGCHAIN}{collectUnder} \\ +\cross{RGCHAIN}{collectUpper} & +\cross{RGCHAIN}{construct} \\ +\cross{RGCHAIN}{convert} & +\cross{RGCHAIN}{copy} \\ +\cross{RGCHAIN}{count} & +\cross{RGCHAIN}{degree} \\ +\cross{RGCHAIN}{empty} & +\cross{RGCHAIN}{empty?} \\ +\cross{RGCHAIN}{eq?} & +\cross{RGCHAIN}{eval} \\ +\cross{RGCHAIN}{every?} & +\cross{RGCHAIN}{extend} \\ +\cross{RGCHAIN}{extendIfCan} & +\cross{RGCHAIN}{find} \\ +\cross{RGCHAIN}{first} & +\cross{RGCHAIN}{hash} \\ +\cross{RGCHAIN}{headReduce} & +\cross{RGCHAIN}{headReduced?} \\ +\cross{RGCHAIN}{headRemainder} & +\cross{RGCHAIN}{infRittWu?} \\ +\cross{RGCHAIN}{initiallyReduce} & +\cross{RGCHAIN}{initiallyReduced?} \\ +\cross{RGCHAIN}{initials} & +\cross{RGCHAIN}{internalAugment} \\ +\cross{RGCHAIN}{intersect} & +\cross{RGCHAIN}{invertible?} \\ +\cross{RGCHAIN}{invertibleElseSplit?} & +\cross{RGCHAIN}{invertibleSet} \\ +\cross{RGCHAIN}{last} & +\cross{RGCHAIN}{lastSubResultant} \\ +\cross{RGCHAIN}{lastSubResultantElseSplit} & +\cross{RGCHAIN}{latex} \\ +\cross{RGCHAIN}{less?} & +\cross{RGCHAIN}{mainVariable?} \\ +\cross{RGCHAIN}{mainVariables} & +\cross{RGCHAIN}{map} \\ +\cross{RGCHAIN}{map!} & +\cross{RGCHAIN}{member?} \\ +\cross{RGCHAIN}{members} & +\cross{RGCHAIN}{more?} \\ +\cross{RGCHAIN}{mvar} & +\cross{RGCHAIN}{normalized?} \\ +\cross{RGCHAIN}{parts} & +\cross{RGCHAIN}{purelyAlgebraic?} \\ +\cross{RGCHAIN}{purelyAlgebraicLeadingMonomial?} & +\cross{RGCHAIN}{purelyTranscendental?} \\ +\cross{RGCHAIN}{quasiComponent} & +\cross{RGCHAIN}{reduce} \\ +\cross{RGCHAIN}{reduceByQuasiMonic} & +\cross{RGCHAIN}{reduced?} \\ +\cross{RGCHAIN}{remainder} & +\cross{RGCHAIN}{remove} \\ +\cross{RGCHAIN}{removeDuplicates} & +\cross{RGCHAIN}{removeZero} \\ +\cross{RGCHAIN}{rest} & +\cross{RGCHAIN}{retract} \\ +\cross{RGCHAIN}{retractIfCan} & +\cross{RGCHAIN}{rewriteIdealWithHeadRemainder} \\ +\cross{RGCHAIN}{rewriteIdealWithRemainder} & +\cross{RGCHAIN}{rewriteSetWithReduction} \\ +\cross{RGCHAIN}{roughBase?} & +\cross{RGCHAIN}{roughEqualIdeals?} \\ +\cross{RGCHAIN}{roughSubIdeal?} & +\cross{RGCHAIN}{roughUnitIdeal?} \\ +\cross{RGCHAIN}{sample} & +\cross{RGCHAIN}{select} \\ +\cross{RGCHAIN}{size?} & +\cross{RGCHAIN}{sort} \\ +\cross{RGCHAIN}{squareFreePart} & +\cross{RGCHAIN}{stronglyReduce} \\ +\cross{RGCHAIN}{stronglyReduced?} & +\cross{RGCHAIN}{triangular?} \\ +\cross{RGCHAIN}{trivialIdeal?} & +\cross{RGCHAIN}{variables} \\ +\cross{RGCHAIN}{zeroSetSplit} & +\cross{RGCHAIN}{zeroSetSplitIntoTriangularSystems} \\ +\cross{RGCHAIN}{\#{}?} & +\cross{RGCHAIN}{?\~{}=?} \\ +\cross{RGCHAIN}{?=?} & +\end{tabular} + <<domain RGCHAIN RegularChain>>= )abbrev domain RGCHAIN RegularChain ++ Author: Marc Moreno Maza @@ -78170,6 +78762,104 @@ @ \pagehead{RegularTriangularSet}{REGSET} \pagepic{ps/v103regulartriangularset.ps}{REGSET}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{ll} +\cross{REGSET}{algebraic?} & +\cross{REGSET}{algebraicCoefficients?} \\ +\cross{REGSET}{algebraicVariables} & +\cross{REGSET}{any?} \\ +\cross{REGSET}{augment} & +\cross{REGSET}{autoReduced?} \\ +\cross{REGSET}{basicSet} & +\cross{REGSET}{coerce} \\ +\cross{REGSET}{coHeight} & +\cross{REGSET}{collect} \\ +\cross{REGSET}{collectQuasiMonic} & +\cross{REGSET}{collectUnder} \\ +\cross{REGSET}{collectUpper} & +\cross{REGSET}{construct} \\ +\cross{REGSET}{convert} & +\cross{REGSET}{copy} \\ +\cross{REGSET}{count} & +\cross{REGSET}{degree} \\ +\cross{REGSET}{empty} & +\cross{REGSET}{empty?} \\ +\cross{REGSET}{eq?} & +\cross{REGSET}{eval} \\ +\cross{REGSET}{every?} & +\cross{REGSET}{extend} \\ +\cross{REGSET}{extendIfCan} & +\cross{REGSET}{find} \\ +\cross{REGSET}{first} & +\cross{REGSET}{hash} \\ +\cross{REGSET}{headRemainder} & +\cross{REGSET}{headReduce} \\ +\cross{REGSET}{headReduced?} & +\cross{REGSET}{infRittWu?} \\ +\cross{REGSET}{initiallyReduce} & +\cross{REGSET}{initiallyReduced?} \\ +\cross{REGSET}{initials} & +\cross{REGSET}{internalAugment} \\ +\cross{REGSET}{internalZeroSetSplit} & +\cross{REGSET}{intersect} \\ +\cross{REGSET}{invertible?} & +\cross{REGSET}{invertibleElseSplit?} \\ +\cross{REGSET}{invertibleSet} & +\cross{REGSET}{last} \\ +\cross{REGSET}{lastSubResultant} & +\cross{REGSET}{lastSubResultantElseSplit} \\ +\cross{REGSET}{latex} & +\cross{REGSET}{less?} \\ +\cross{REGSET}{mainVariable?} & +\cross{REGSET}{mainVariables} \\ +\cross{REGSET}{map} & +\cross{REGSET}{map!} \\ +\cross{REGSET}{member?} & +\cross{REGSET}{members} \\ +\cross{REGSET}{more?} & +\cross{REGSET}{mvar} \\ +\cross{REGSET}{normalized?} & +\cross{REGSET}{parts} \\ +\cross{REGSET}{preprocess} & +\cross{REGSET}{purelyAlgebraic?} \\ +\cross{REGSET}{purelyAlgebraicLeadingMonomial?} & +\cross{REGSET}{purelyTranscendental?} \\ +\cross{REGSET}{quasiComponent} & +\cross{REGSET}{reduce} \\ +\cross{REGSET}{reduced?} & +\cross{REGSET}{reduceByQuasiMonic} \\ +\cross{REGSET}{remainder} & +\cross{REGSET}{remove} \\ +\cross{REGSET}{removeDuplicates} & +\cross{REGSET}{removeZero} \\ +\cross{REGSET}{rest} & +\cross{REGSET}{retract} \\ +\cross{REGSET}{retractIfCan} & +\cross{REGSET}{rewriteIdealWithHeadRemainder} \\ +\cross{REGSET}{rewriteIdealWithRemainder} & +\cross{REGSET}{rewriteSetWithReduction} \\ +\cross{REGSET}{roughBase?} & +\cross{REGSET}{roughEqualIdeals?} \\ +\cross{REGSET}{roughSubIdeal?} & +\cross{REGSET}{roughUnitIdeal?} \\ +\cross{REGSET}{sample} & +\cross{REGSET}{select} \\ +\cross{REGSET}{size?} & +\cross{REGSET}{sort} \\ +\cross{REGSET}{squareFreePart} & +\cross{REGSET}{stronglyReduce} \\ +\cross{REGSET}{stronglyReduced?} & +\cross{REGSET}{triangular?} \\ +\cross{REGSET}{trivialIdeal?} & +\cross{REGSET}{variables} \\ +\cross{REGSET}{zeroSetSplit} & +\cross{REGSET}{zeroSetSplitIntoTriangularSystems} \\ +\cross{REGSET}{\#{}?} & +\cross{REGSET}{?\~{}=?} \\ +\cross{REGSET}{?=?} & +\end{tabular} + <<domain REGSET RegularTriangularSet>>= )abbrev domain REGSET RegularTriangularSet ++ Author: Marc Moreno Maza @@ -78568,6 +79258,32 @@ \section{domain RESRING ResidueRing} \pagehead{ResidueRing}{RESRING} \pagepic{ps/v103residuering.ps}{RESRING}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{RESRING}{0} & +\cross{RESRING}{1} & +\cross{RESRING}{characteristic} & +\cross{RESRING}{coerce} & +\cross{RESRING}{hash} \\ +\cross{RESRING}{latex} & +\cross{RESRING}{lift} & +\cross{RESRING}{one?} & +\cross{RESRING}{recip} & +\cross{RESRING}{reduce} \\ +\cross{RESRING}{sample} & +\cross{RESRING}{subtractIfCan} & +\cross{RESRING}{zero?} & +\cross{RESRING}{?\~{}=?} & +\cross{RESRING}{?*?} \\ +\cross{RESRING}{?**?} & +\cross{RESRING}{?\^{}?} & +\cross{RESRING}{?+?} & +\cross{RESRING}{?-?} & +\cross{RESRING}{-?} \\ +\cross{RESRING}{?=?} &&&& +\end{tabular} + <<domain RESRING ResidueRing>>= )abbrev domain RESRING ResidueRing ++ Author: P.Gianni @@ -78640,6 +79356,68 @@ \pageto{Switch}{SWITCH} \pageto{FortranTemplate}{FTEM} \pageto{FortranExpression}{FEXPR} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{RESULT}{any?} & +\cross{RESULT}{bag} & +\cross{RESULT}{coerce} & +\cross{RESULT}{construct} & +\cross{RESULT}{convert} \\ +\cross{RESULT}{copy} & +\cross{RESULT}{count} & +\cross{RESULT}{dictionary} & +\cross{RESULT}{entry?} & +\cross{RESULT}{elt} \\ +\cross{RESULT}{empty} & +\cross{RESULT}{empty?} & +\cross{RESULT}{entries} & +\cross{RESULT}{eq?} & +\cross{RESULT}{eval} \\ +\cross{RESULT}{every?} & +\cross{RESULT}{extract!} & +\cross{RESULT}{fill!} & +\cross{RESULT}{find} & +\cross{RESULT}{first} \\ +\cross{RESULT}{hash} & +\cross{RESULT}{index?} & +\cross{RESULT}{indices} & +\cross{RESULT}{insert!} & +\cross{RESULT}{inspect} \\ +\cross{RESULT}{key?} & +\cross{RESULT}{keys} & +\cross{RESULT}{latex} & +\cross{RESULT}{less?} & +\cross{RESULT}{map} \\ +\cross{RESULT}{map!} & +\cross{RESULT}{maxIndex} & +\cross{RESULT}{member?} & +\cross{RESULT}{members} & +\cross{RESULT}{minIndex} \\ +\cross{RESULT}{more?} & +\cross{RESULT}{parts} & +\cross{RESULT}{qelt} & +\cross{RESULT}{qsetelt!} & +\cross{RESULT}{reduce} \\ +\cross{RESULT}{remove} & +\cross{RESULT}{remove!} & +\cross{RESULT}{removeDuplicates} & +\cross{RESULT}{sample} & +\cross{RESULT}{search} \\ +\cross{RESULT}{select} & +\cross{RESULT}{select!} & +\cross{RESULT}{setelt} & +\cross{RESULT}{showArrayValues} & +\cross{RESULT}{showScalarValues} \\ +\cross{RESULT}{size?} & +\cross{RESULT}{swap!} & +\cross{RESULT}{table} & +\cross{RESULT}{\#{}?} & +\cross{RESULT}{?=?} \\ +\cross{RESULT}{?\~{}=?} & +\cross{RESULT}{?.?} &&& +\end{tabular} + <<domain RESULT Result>>= )abbrev domain RESULT Result ++ Author: Didier Pinchon and Mike Dewar @@ -78720,6 +79498,26 @@ \pagepic{ps/v103rewriterule.ps}{RULE}{1.00} {\bf See}\\ \pageto{Ruleset}{RULESET} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{RULE}{coerce} & +\cross{RULE}{elt} & +\cross{RULE}{hash} & +\cross{RULE}{latex} & +\cross{RULE}{lhs} \\ +\cross{RULE}{pattern} & +\cross{RULE}{quotedOperators} & +\cross{RULE}{retract} & +\cross{RULE}{retractIfCan} & +\cross{RULE}{rhs} \\ +\cross{RULE}{rule} & +\cross{RULE}{suchThat} & +\cross{RULE}{?.?} & +\cross{RULE}{?\~{}=?} & +\cross{RULE}{?=?} +\end{tabular} + <<domain RULE RewriteRule>>= )abbrev domain RULE RewriteRule ++ Rules for the pattern matcher @@ -78897,6 +79695,32 @@ \pagepic{ps/v103rightopenintervalrootcharacterization.ps}{ROIRC}{1.00} {\bf See}\\ \pageto{RealClosure}{RECLOS} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{ROIRC}{allRootsOf} & +\cross{ROIRC}{approximate} & +\cross{ROIRC}{coerce} & +\cross{ROIRC}{definingPolynomial} & +\cross{ROIRC}{hash} \\ +\cross{ROIRC}{latex} & +\cross{ROIRC}{left} & +\cross{ROIRC}{middle} & +\cross{ROIRC}{mightHaveRoots} & +\cross{ROIRC}{negative?} \\ +\cross{ROIRC}{positive?} & +\cross{ROIRC}{recip} & +\cross{ROIRC}{refine} & +\cross{ROIRC}{relativeApprox} & +\cross{ROIRC}{right} \\ +\cross{ROIRC}{rootOf} & +\cross{ROIRC}{sign} & +\cross{ROIRC}{size} & +\cross{ROIRC}{zero?} & +\cross{ROIRC}{?=?} \\ +\cross{ROIRC}{?\~{}=?} &&&& +\end{tabular} + <<domain ROIRC RightOpenIntervalRootCharacterization>>= )abbrev domain ROIRC RightOpenIntervalRootCharacterization ++ Author: Renaud Rioboo @@ -79654,6 +80478,96 @@ \pageto{Integer}{INT} \pageto{NonNegativeInteger}{NNI} \pageto{PositiveInteger}{PI} + +{\bf Exports:}\\ +\begin{tabular}{llll} +\cross{ROMAN}{0} & +\cross{ROMAN}{1} & +\cross{ROMAN}{abs} & +\cross{ROMAN}{addmod} \\ +\cross{ROMAN}{associates?} & +\cross{ROMAN}{base} & +\cross{ROMAN}{binomial} & +\cross{ROMAN}{bit?} \\ +\cross{ROMAN}{characteristic} & +\cross{ROMAN}{coerce} & +\cross{ROMAN}{convert} & +\cross{ROMAN}{copy} \\ +\cross{ROMAN}{D} & +\cross{ROMAN}{dec} & +\cross{ROMAN}{differentiate} & +\cross{ROMAN}{divide} \\ +\cross{ROMAN}{euclideanSize} & +\cross{ROMAN}{even?} & +\cross{ROMAN}{expressIdealMember} & +\cross{ROMAN}{exquo} \\ +\cross{ROMAN}{extendedEuclidean} & +\cross{ROMAN}{extendedEuclidean} & +\cross{ROMAN}{factor} & +\cross{ROMAN}{factorial} \\ +\cross{ROMAN}{gcd} & +\cross{ROMAN}{gcdPolynomial} & +\cross{ROMAN}{hash} & +\cross{ROMAN}{inc} \\ +\cross{ROMAN}{init} & +\cross{ROMAN}{invmod} & +\cross{ROMAN}{latex} & +\cross{ROMAN}{lcm} \\ +\cross{ROMAN}{length} & +\cross{ROMAN}{mask} & +\cross{ROMAN}{max} & +\cross{ROMAN}{min} \\ +\cross{ROMAN}{mulmod} & +\cross{ROMAN}{multiEuclidean} & +\cross{ROMAN}{negative?} & +\cross{ROMAN}{nextItem} \\ +\cross{ROMAN}{odd?} & +\cross{ROMAN}{one?} & +\cross{ROMAN}{patternMatch} & +\cross{ROMAN}{permutation} \\ +\cross{ROMAN}{positive?} & +\cross{ROMAN}{positiveRemainder} & +\cross{ROMAN}{powmod} & +\cross{ROMAN}{prime?} \\ +\cross{ROMAN}{principalIdeal} & +\cross{ROMAN}{random} & +\cross{ROMAN}{rational} & +\cross{ROMAN}{rational?} \\ +\cross{ROMAN}{rationalIfCan} & +\cross{ROMAN}{recip} & +\cross{ROMAN}{reducedSystem} & +\cross{ROMAN}{retract} \\ +\cross{ROMAN}{retractIfCan} & +\cross{ROMAN}{roman} & +\cross{ROMAN}{sample} & +\cross{ROMAN}{shift} \\ +\cross{ROMAN}{sign} & +\cross{ROMAN}{sizeLess?} & +\cross{ROMAN}{squareFree} & +\cross{ROMAN}{squareFreePart} \\ +\cross{ROMAN}{submod} & +\cross{ROMAN}{subtractIfCan} & +\cross{ROMAN}{symmetricRemainder} & +\cross{ROMAN}{unit?} \\ +\cross{ROMAN}{unitCanonical} & +\cross{ROMAN}{unitNormal} & +\cross{ROMAN}{zero?} & +\cross{ROMAN}{?*?} \\ +\cross{ROMAN}{?**?} & +\cross{ROMAN}{?+?} & +\cross{ROMAN}{?-?} & +\cross{ROMAN}{-?} \\ +\cross{ROMAN}{?$<$?} & +\cross{ROMAN}{?$<=$?} & +\cross{ROMAN}{?=?} & +\cross{ROMAN}{?$>$?} \\ +\cross{ROMAN}{?$>=$?} & +\cross{ROMAN}{?\^{}?} & +\cross{ROMAN}{?\~{}=?} & +\cross{ROMAN}{?quo?} \\ +\cross{ROMAN}{?rem?} &&& +\end{tabular} + <<domain ROMAN RomanNumeral>>= )abbrev domain ROMAN RomanNumeral ++ Author: @@ -79704,6 +80618,83 @@ \section{domain ROUTINE RoutinesTable} \pagehead{RoutinesTable}{ROUTINE} \pagepic{ps/v103routinestable.ps}{ROUTINE}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{ll} +\cross{ROUTINE}{any?} & +\cross{ROUTINE}{bag} \\ +\cross{ROUTINE}{changeMeasure} & +\cross{ROUTINE}{changeThreshhold} \\ +\cross{ROUTINE}{coerce} & +\cross{ROUTINE}{concat} \\ +\cross{ROUTINE}{construct} & +\cross{ROUTINE}{convert} \\ +\cross{ROUTINE}{copy} & +\cross{ROUTINE}{count} \\ +\cross{ROUTINE}{deleteRoutine!} & +\cross{ROUTINE}{dictionary} \\ +\cross{ROUTINE}{elt} & +\cross{ROUTINE}{empty} \\ +\cross{ROUTINE}{empty?} & +\cross{ROUTINE}{entries} \\ +\cross{ROUTINE}{entry?} & +\cross{ROUTINE}{eq?} \\ +\cross{ROUTINE}{eval} & +\cross{ROUTINE}{every?} \\ +\cross{ROUTINE}{extract!} & +\cross{ROUTINE}{fill!} \\ +\cross{ROUTINE}{find} & +\cross{ROUTINE}{first} \\ +\cross{ROUTINE}{getExplanations} & +\cross{ROUTINE}{getMeasure} \\ +\cross{ROUTINE}{hash} & +\cross{ROUTINE}{index?} \\ +\cross{ROUTINE}{indices} & +\cross{ROUTINE}{insert!} \\ +\cross{ROUTINE}{inspect} & +\cross{ROUTINE}{key?} \\ +\cross{ROUTINE}{keys} & +\cross{ROUTINE}{latex} \\ +\cross{ROUTINE}{less?} & +\cross{ROUTINE}{map} \\ +\cross{ROUTINE}{map!} & +\cross{ROUTINE}{maxIndex} \\ +\cross{ROUTINE}{member?} & +\cross{ROUTINE}{members} \\ +\cross{ROUTINE}{minIndex} & +\cross{ROUTINE}{more?} \\ +\cross{ROUTINE}{parts} & +\cross{ROUTINE}{qelt} \\ +\cross{ROUTINE}{qsetelt!} & +\cross{ROUTINE}{recoverAfterFail} \\ +\cross{ROUTINE}{reduce} & +\cross{ROUTINE}{remove} \\ +\cross{ROUTINE}{remove!} & +\cross{ROUTINE}{removeDuplicates} \\ +\cross{ROUTINE}{routines} & +\cross{ROUTINE}{sample} \\ +\cross{ROUTINE}{search} & +\cross{ROUTINE}{select} \\ +\cross{ROUTINE}{select!} & +\cross{ROUTINE}{selectFiniteRoutines} \\ +\cross{ROUTINE}{selectIntegrationRoutines} & +\cross{ROUTINE}{selectNonFiniteRoutines} \\ +\cross{ROUTINE}{selectMultiDimensionalRoutines} & +\cross{ROUTINE}{selectODEIVPRoutines} \\ +\cross{ROUTINE}{selectOptimizationRoutines} & +\cross{ROUTINE}{selectPDERoutines} \\ +\cross{ROUTINE}{selectSumOfSquaresRoutines} & +\cross{ROUTINE}{setelt} \\ +\cross{ROUTINE}{showTheRoutinesTable} & +\cross{ROUTINE}{size?} \\ +\cross{ROUTINE}{swap!} & +\cross{ROUTINE}{table} \\ +\cross{ROUTINE}{\#{}?} & +\cross{ROUTINE}{?=?} \\ +\cross{ROUTINE}{?\~{}=?} & +\cross{ROUTINE}{?.?} +\end{tabular} + <<domain ROUTINE RoutinesTable>>= )abbrev domain ROUTINE RoutinesTable ++ Author: Brian Dupee @@ -80093,6 +81084,17 @@ \section{domain RULECOLD RuleCalled} \pagehead{RuleCalled}{RULECOLD} \pagepic{ps/v103rulecalled.ps}{RULECOLD}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{llllll} +\cross{RULECOLD}{coerce} & +\cross{RULECOLD}{hash} & +\cross{RULECOLD}{latex} & +\cross{RULECOLD}{name} & +\cross{RULECOLD}{?=?} & +\cross{RULECOLD}{?\~{}=?} +\end{tabular} + <<domain RULECOLD RuleCalled>>= )abbrev domain RULECOLD RuleCalled ++ Description: @@ -80119,6 +81121,20 @@ \pagepic{ps/v103ruleset.ps}{RULESET}{1.00} {\bf See}\\ \pageto{RewriteRule}{RULE} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{RULESET}{coerce} & +\cross{RULESET}{elt} & +\cross{RULESET}{hash} & +\cross{RULESET}{latex} & +\cross{RULESET}{rules} \\ +\cross{RULESET}{ruleset} & +\cross{RULESET}{?=?} & +\cross{RULESET}{?\~{}=?} & +\cross{RULESET}{?.?} & +\end{tabular} + <<domain RULESET Ruleset>>= )abbrev domain RULESET Ruleset ++ Sets of rules for the pattern matcher Modified: trunk/axiom/changelog =================================================================== --- trunk/axiom/changelog 2009-01-17 09:10:02 UTC (rev 1085) +++ trunk/axiom/changelog 2009-01-19 00:25:38 UTC (rev 1086) @@ -1,3 +1,5 @@ +20090117 tpd src/axiom-website/patches.html 20090117.01.tpd.patch +20090117 tpd books/bookvol10.3 add exports 20090116 tpd src/axiom-website/patches.html 20090116.03.tpd.patch 20090116 tpd books/bookvol10.3 add exports 20090116 tpd src/axiom-website/patches.html 20090116.02.tpd.patch Modified: trunk/axiom/src/axiom-website/patches.html =================================================================== --- trunk/axiom/src/axiom-website/patches.html 2009-01-17 09:10:02 UTC (rev 1085) +++ trunk/axiom/src/axiom-website/patches.html 2009-01-19 00:25:38 UTC (rev 1086) @@ -887,6 +887,8 @@ bookvol10.3 add exports<br/> <a href="patches/20090116.03.tpd.patch">20090116.03.tpd.patch</a> bookvol10.3 add exports<br/> +<a href="patches/20090117.01.tpd.patch">20090117.01.tpd.patch</a> +bookvol10.3 add exports<br/> </body> </html> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <gi...@ax...> - 2009-01-19 00:17:52
|
books/bookvol10.3.pamphlet | 1016 ++++++++++++++++++++++++++++++++++++++++ changelog | 2 + src/axiom-website/patches.html | 2 + 3 files changed, 1020 insertions(+), 0 deletions(-) New commits: commit 67cbca8b8b0be8f80c6797a6f38709ad21a58fa9 Author: root <root@bob.(none)> Date: Sun Jan 18 19:14:19 2009 -0500 20090117 tpd src/axiom-website/patches.html 20090117.01.tpd.patch 20090117 tpd books/bookvol10.3 add exports |
From: <da...@us...> - 2009-01-17 09:10:05
|
Revision: 1085 http://axiom.svn.sourceforge.net/axiom/?rev=1085&view=rev Author: daly Date: 2009-01-17 09:10:02 +0000 (Sat, 17 Jan 2009) Log Message: ----------- 20090116 tpd src/axiom-website/patches.html 20090116.03.tpd.patch 20090116 tpd books/bookvol10.3 add exports Modified Paths: -------------- trunk/axiom/books/bookvol10.3.pamphlet trunk/axiom/changelog trunk/axiom/src/axiom-website/patches.html Modified: trunk/axiom/books/bookvol10.3.pamphlet =================================================================== --- trunk/axiom/books/bookvol10.3.pamphlet 2009-01-16 22:17:24 UTC (rev 1084) +++ trunk/axiom/books/bookvol10.3.pamphlet 2009-01-17 09:10:02 UTC (rev 1085) @@ -53969,6 +53969,147 @@ {\bf See}\\ \pageto{MachineInteger}{MINT} \pageto{MachineFloat}{MFLOAT} + +{\bf Exports:}\\ +\begin{tabular}{ll} +\cross{MCMPLX}{0} & +\cross{MCMPLX}{1} \\ +\cross{MCMPLX}{abs} & +\cross{MCMPLX}{acos} \\ +\cross{MCMPLX}{acosh} & +\cross{MCMPLX}{acot} \\ +\cross{MCMPLX}{acoth} & +\cross{MCMPLX}{acsc} \\ +\cross{MCMPLX}{acsch} & +\cross{MCMPLX}{argument} \\ +\cross{MCMPLX}{asec} & +\cross{MCMPLX}{asech} \\ +\cross{MCMPLX}{asin} & +\cross{MCMPLX}{asinh} \\ +\cross{MCMPLX}{associates?} & +\cross{MCMPLX}{atan} \\ +\cross{MCMPLX}{atanh} & +\cross{MCMPLX}{basis} \\ +\cross{MCMPLX}{characteristic} & +\cross{MCMPLX}{characteristicPolynomial} \\ +\cross{MCMPLX}{charthRoot} & +\cross{MCMPLX}{coerce} \\ +\cross{MCMPLX}{complex} & +\cross{MCMPLX}{conditionP} \\ +\cross{MCMPLX}{conjugate} & +\cross{MCMPLX}{convert} \\ +\cross{MCMPLX}{coordinates} & +\cross{MCMPLX}{cos} \\ +\cross{MCMPLX}{cosh} & +\cross{MCMPLX}{cot} \\ +\cross{MCMPLX}{coth} & +\cross{MCMPLX}{createPrimitiveElement} \\ +\cross{MCMPLX}{csc} & +\cross{MCMPLX}{csch} \\ +\cross{MCMPLX}{D} & +\cross{MCMPLX}{definingPolynomial} \\ +\cross{MCMPLX}{derivationCoordinates} & +\cross{MCMPLX}{differentiate} \\ +\cross{MCMPLX}{discreteLog} & +\cross{MCMPLX}{discriminant} \\ +\cross{MCMPLX}{divide} & +\cross{MCMPLX}{euclideanSize} \\ +\cross{MCMPLX}{eval} & +\cross{MCMPLX}{exp} \\ +\cross{MCMPLX}{expressIdealMember} & +\cross{MCMPLX}{exquo} \\ +\cross{MCMPLX}{extendedEuclidean} & +\cross{MCMPLX}{factor} \\ +\cross{MCMPLX}{factorPolynomial} & +\cross{MCMPLX}{factorSquareFreePolynomial} \\ +\cross{MCMPLX}{factorsOfCyclicGroupSize} & +\cross{MCMPLX}{gcd} \\ +\cross{MCMPLX}{gcdPolynomial} & +\cross{MCMPLX}{generator} \\ +\cross{MCMPLX}{hash} & +\cross{MCMPLX}{imag} \\ +\cross{MCMPLX}{imaginary} & +\cross{MCMPLX}{index} \\ +\cross{MCMPLX}{init} & +\cross{MCMPLX}{inv} \\ +\cross{MCMPLX}{latex} & +\cross{MCMPLX}{lcm} \\ +\cross{MCMPLX}{lift} & +\cross{MCMPLX}{log} \\ +\cross{MCMPLX}{lookup} & +\cross{MCMPLX}{map} \\ +\cross{MCMPLX}{max} & +\cross{MCMPLX}{min} \\ +\cross{MCMPLX}{minimalPolynomial} & +\cross{MCMPLX}{multiEuclidean} \\ +\cross{MCMPLX}{nextItem} & +\cross{MCMPLX}{norm} \\ +\cross{MCMPLX}{nthRoot} & +\cross{MCMPLX}{one?} \\ +\cross{MCMPLX}{order} & +\cross{MCMPLX}{patternMatch} \\ +\cross{MCMPLX}{pi} & +\cross{MCMPLX}{polarCoordinates} \\ +\cross{MCMPLX}{prime?} & +\cross{MCMPLX}{primeFrobenius} \\ +\cross{MCMPLX}{primitive?} & +\cross{MCMPLX}{primitiveElement} \\ +\cross{MCMPLX}{principalIdeal} & +\cross{MCMPLX}{random} \\ +\cross{MCMPLX}{rank} & +\cross{MCMPLX}{rational} \\ +\cross{MCMPLX}{rational?} & +\cross{MCMPLX}{rationalIfCan} \\ +\cross{MCMPLX}{real} & +\cross{MCMPLX}{recip} \\ +\cross{MCMPLX}{reduce} & +\cross{MCMPLX}{reducedSystem} \\ +\cross{MCMPLX}{regularRepresentation} & +\cross{MCMPLX}{representationType} \\ +\cross{MCMPLX}{represents} & +\cross{MCMPLX}{retract} \\ +\cross{MCMPLX}{retractIfCan} & +\cross{MCMPLX}{sample} \\ +\cross{MCMPLX}{sec} & +\cross{MCMPLX}{sech} \\ +\cross{MCMPLX}{sin} & +\cross{MCMPLX}{sinh} \\ +\cross{MCMPLX}{size} & +\cross{MCMPLX}{sizeLess?} \\ +\cross{MCMPLX}{solveLinearPolynomialEquation} & +\cross{MCMPLX}{sqrt} \\ +\cross{MCMPLX}{squareFree} & +\cross{MCMPLX}{squareFreePart} \\ +\cross{MCMPLX}{squareFreePolynomial} & +\cross{MCMPLX}{subtractIfCan} \\ +\cross{MCMPLX}{tableForDiscreteLogarithm} & +\cross{MCMPLX}{tan} \\ +\cross{MCMPLX}{tanh} & +\cross{MCMPLX}{trace} \\ +\cross{MCMPLX}{traceMatrix} & +\cross{MCMPLX}{traceMatrix} \\ +\cross{MCMPLX}{unit?} & +\cross{MCMPLX}{unitCanonical} \\ +\cross{MCMPLX}{unitNormal} & +\cross{MCMPLX}{zero?} \\ +\cross{MCMPLX}{?*?} & +\cross{MCMPLX}{?**?} \\ +\cross{MCMPLX}{?+?} & +\cross{MCMPLX}{?-?} \\ +\cross{MCMPLX}{-?} & +\cross{MCMPLX}{?$<$?} \\ +\cross{MCMPLX}{?$<=$?} & +\cross{MCMPLX}{?=?} \\ +\cross{MCMPLX}{?$>$?} & +\cross{MCMPLX}{?$>=$?} \\ +\cross{MCMPLX}{?\^{}?} & +\cross{MCMPLX}{?\~{}=?} \\ +\cross{MCMPLX}{?/?} & +\cross{MCMPLX}{?.?} \\ +\cross{MCMPLX}{?quo?} & +\cross{MCMPLX}{?rem?} +\end{tabular} + <<domain MCMPLX MachineComplex>>= )abbrev domain MCMPLX MachineComplex ++ Date Created: December 1993 @@ -54029,6 +54170,89 @@ {\bf See}\\ \pageto{MachineInteger}{MINT} \pageto{MachineComplex}{MCMPLX} + +{\bf Exports:}\\ +\begin{tabular}{llll} +\cross{MFLOAT}{1} & +\cross{MFLOAT}{0} & +\cross{MFLOAT}{abs} & +\cross{MFLOAT}{associates?} \\ +\cross{MFLOAT}{base} & +\cross{MFLOAT}{bits} & +\cross{MFLOAT}{ceiling} & +\cross{MFLOAT}{coerce} \\ +\cross{MFLOAT}{changeBase} & +\cross{MFLOAT}{characteristic} & +\cross{MFLOAT}{convert} & +\cross{MFLOAT}{decreasePrecision} \\ +\cross{MFLOAT}{digits} & +\cross{MFLOAT}{exponent} & +\cross{MFLOAT}{divide} & +\cross{MFLOAT}{euclideanSize} \\ +\cross{MFLOAT}{expressIdealMember} & +\cross{MFLOAT}{exquo} & +\cross{MFLOAT}{extendedEuclidean} & +\cross{MFLOAT}{factor} \\ +\cross{MFLOAT}{float} & +\cross{MFLOAT}{floor} & +\cross{MFLOAT}{fractionPart} & +\cross{MFLOAT}{gcd} \\ +\cross{MFLOAT}{gcdPolynomial} & +\cross{MFLOAT}{hash} & +\cross{MFLOAT}{increasePrecision} & +\cross{MFLOAT}{inv} \\ +\cross{MFLOAT}{latex} & +\cross{MFLOAT}{lcm} & +\cross{MFLOAT}{mantissa} & +\cross{MFLOAT}{max} \\ +\cross{MFLOAT}{maximumExponent} & +\cross{MFLOAT}{min} & +\cross{MFLOAT}{minimumExponent} & +\cross{MFLOAT}{multiEuclidean} \\ +\cross{MFLOAT}{negative?} & +\cross{MFLOAT}{norm} & +\cross{MFLOAT}{nthRoot} & +\cross{MFLOAT}{one?} \\ +\cross{MFLOAT}{order} & +\cross{MFLOAT}{patternMatch} & +\cross{MFLOAT}{positive?} & +\cross{MFLOAT}{precision} \\ +\cross{MFLOAT}{prime?} & +\cross{MFLOAT}{principalIdeal} & +\cross{MFLOAT}{recip} & +\cross{MFLOAT}{retract} \\ +\cross{MFLOAT}{retractIfCan} & +\cross{MFLOAT}{round} & +\cross{MFLOAT}{sample} & +\cross{MFLOAT}{sign} \\ +\cross{MFLOAT}{sizeLess?} & +\cross{MFLOAT}{sqrt} & +\cross{MFLOAT}{squareFree} & +\cross{MFLOAT}{squareFreePart} \\ +\cross{MFLOAT}{subtractIfCan} & +\cross{MFLOAT}{truncate} & +\cross{MFLOAT}{unit?} & +\cross{MFLOAT}{unitCanonical} \\ +\cross{MFLOAT}{unitNormal} & +\cross{MFLOAT}{wholePart} & +\cross{MFLOAT}{zero?} & +\cross{MFLOAT}{?*?} \\ +\cross{MFLOAT}{?**?} & +\cross{MFLOAT}{?+?} & +\cross{MFLOAT}{?-?} & +\cross{MFLOAT}{-?} \\ +\cross{MFLOAT}{?/?} & +\cross{MFLOAT}{?$<$?} & +\cross{MFLOAT}{?$<=$?} & +\cross{MFLOAT}{?=?} \\ +\cross{MFLOAT}{?$>$?} & +\cross{MFLOAT}{?$>=$?} & +\cross{MFLOAT}{?\~{}=?} & +\cross{MFLOAT}{?\^{}?} \\ +\cross{MFLOAT}{?quo?} & +\cross{MFLOAT}{?rem?} && +\end{tabular} + <<domain MFLOAT MachineFloat>>= )abbrev domain MFLOAT MachineFloat ++ Author: Mike Dewar @@ -54344,6 +54568,95 @@ {\bf See}\\ \pageto{MachineFloat}{MFLOAT} \pageto{MachineComplex}{MCMPLX} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{MINT}{0} & +\cross{MINT}{1} & +\cross{MINT}{abs} & +\cross{MINT}{addmod} & +\cross{MINT}{associates?} \\ +\cross{MINT}{base} & +\cross{MINT}{binomial} & +\cross{MINT}{bit?} & +\cross{MINT}{characteristic} & +\cross{MINT}{coerce} \\ +\cross{MINT}{convert} & +\cross{MINT}{copy} & +\cross{MINT}{D} & +\cross{MINT}{dec} & +\cross{MINT}{differentiate} \\ +\cross{MINT}{divide} & +\cross{MINT}{euclideanSize} & +\cross{MINT}{even?} & +\cross{MINT}{expressIdealMember} & +\cross{MINT}{exquo} \\ +\cross{MINT}{extendedEuclidean} & +\cross{MINT}{factor} & +\cross{MINT}{factorial} & +\cross{MINT}{gcd} & +\cross{MINT}{gcdPolynomial} \\ +\cross{MINT}{hash} & +\cross{MINT}{inc} & +\cross{MINT}{init} & +\cross{MINT}{invmod} & +\cross{MINT}{latex} \\ +\cross{MINT}{lcm} & +\cross{MINT}{length} & +\cross{MINT}{mask} & +\cross{MINT}{max} & +\cross{MINT}{maxint} \\ +\cross{MINT}{min} & +\cross{MINT}{mulmod} & +\cross{MINT}{multiEuclidean} & +\cross{MINT}{negative?} & +\cross{MINT}{nextItem} \\ +\cross{MINT}{odd?} & +\cross{MINT}{one?} & +\cross{MINT}{patternMatch} & +\cross{MINT}{permutation} & +\cross{MINT}{positive?} \\ +\cross{MINT}{positiveRemainder} & +\cross{MINT}{powmod} & +\cross{MINT}{prime?} & +\cross{MINT}{principalIdeal} & +\cross{MINT}{random} \\ +\cross{MINT}{rational} & +\cross{MINT}{rationalIfCan} & +\cross{MINT}{rational?} & +\cross{MINT}{recip} & +\cross{MINT}{reducedSystem} \\ +\cross{MINT}{retract} & +\cross{MINT}{retractIfCan} & +\cross{MINT}{sample} & +\cross{MINT}{shift} & +\cross{MINT}{sign} \\ +\cross{MINT}{sizeLess?} & +\cross{MINT}{squareFree} & +\cross{MINT}{squareFreePart} & +\cross{MINT}{submod} & +\cross{MINT}{subtractIfCan} \\ +\cross{MINT}{symmetricRemainder} & +\cross{MINT}{unit?} & +\cross{MINT}{unitCanonical} & +\cross{MINT}{unitNormal} & +\cross{MINT}{zero?} \\ +\cross{MINT}{?\~{}=?} & +\cross{MINT}{?*?} & +\cross{MINT}{?**?} & +\cross{MINT}{?\^{}?} & +\cross{MINT}{?+?} \\ +\cross{MINT}{?-?} & +\cross{MINT}{-?} & +\cross{MINT}{?$<$?} & +\cross{MINT}{?$<=$?} & +\cross{MINT}{?=?} \\ +\cross{MINT}{?$>$?} & +\cross{MINT}{?$>=$?} & +\cross{MINT}{?quo?} & +\cross{MINT}{?rem?} & +\end{tabular} + <<domain MINT MachineInteger>>= )abbrev domain MINT MachineInteger ++ Author: Mike Dewar @@ -54704,6 +55017,34 @@ @ \pagehead{Magma}{MAGMA} \pagepic{ps/v103magma.ps}{MAGMA}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{MAGMA}{coerce} & +\cross{MAGMA}{first} & +\cross{MAGMA}{hash} & +\cross{MAGMA}{latex} & +\cross{MAGMA}{left} \\ +\cross{MAGMA}{length} & +\cross{MAGMA}{lexico} & +\cross{MAGMA}{max} & +\cross{MAGMA}{min} & +\cross{MAGMA}{mirror} \\ +\cross{MAGMA}{rest} & +\cross{MAGMA}{retract} & +\cross{MAGMA}{retractIfCan} & +\cross{MAGMA}{retractable?} & +\cross{MAGMA}{right} \\ +\cross{MAGMA}{varList} & +\cross{MAGMA}{?\~{}=?} & +\cross{MAGMA}{?*?} & +\cross{MAGMA}{?$<$?} & +\cross{MAGMA}{?$<=$?} \\ +\cross{MAGMA}{?=?} & +\cross{MAGMA}{?$>$?} & +\cross{MAGMA}{?$>=$?} && +\end{tabular} + <<domain MAGMA Magma>>= )abbrev domain MAGMA Magma ++ Author: Michel Petitot (pe...@li...). @@ -54860,6 +55201,24 @@ \pagepic{ps/v103makecachableset.ps}{MKCHSET}{1.00} {\bf See}\\ \pageto{Kernel}{KERNEL} + +{\bf Exports:}\\ +\begin{tabular}{llllll} +\cross{MKCHSET}{coerce} & +\cross{MKCHSET}{hash} & +\cross{MKCHSET}{latex} & +\cross{MKCHSET}{max} & +\cross{MKCHSET}{min} & +\cross{MKCHSET}{position} \\ +\cross{MKCHSET}{setPosition} & +\cross{MKCHSET}{?\~{}=?} & +\cross{MKCHSET}{?$<$?} & +\cross{MKCHSET}{?$<=$?} & +\cross{MKCHSET}{?=?} & +\cross{MKCHSET}{?$>$?} \\ +\cross{MKCHSET}{?$>=$?} &&&&& +\end{tabular} + <<domain MKCHSET MakeCachableSet>>= )abbrev domain MKCHSET MakeCachableSet ++ Make a cachable set from any set @@ -55822,6 +56181,83 @@ \pageto{IndexedMatrix}{IMATRIX} \pageto{RectangularMatrix}{RMATRIX} \pageto{SquareMatrix}{SQMATRIX} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{MATRIX}{antisymmetric?} & +\cross{MATRIX}{any?} & +\cross{MATRIX}{coerce} & +\cross{MATRIX}{column} & +\cross{MATRIX}{convert} \\ +\cross{MATRIX}{copy} & +\cross{MATRIX}{count} & +\cross{MATRIX}{determinant} & +\cross{MATRIX}{diagonal?} & +\cross{MATRIX}{diagonalMatrix} \\ +\cross{MATRIX}{elt} & +\cross{MATRIX}{empty} & +\cross{MATRIX}{empty?} & +\cross{MATRIX}{eq?} & +\cross{MATRIX}{eval} \\ +\cross{MATRIX}{every?} & +\cross{MATRIX}{exquo} & +\cross{MATRIX}{fill!} & +\cross{MATRIX}{hash} & +\cross{MATRIX}{horizConcat} \\ +\cross{MATRIX}{inverse} & +\cross{MATRIX}{latex} & +\cross{MATRIX}{less?} & +\cross{MATRIX}{listOfLists} & +\cross{MATRIX}{map} \\ +\cross{MATRIX}{map!} & +\cross{MATRIX}{matrix} & +\cross{MATRIX}{maxColIndex} & +\cross{MATRIX}{maxRowIndex} & +\cross{MATRIX}{member?} \\ +\cross{MATRIX}{members} & +\cross{MATRIX}{minColIndex} & +\cross{MATRIX}{minordet} & +\cross{MATRIX}{minRowIndex} & +\cross{MATRIX}{more?} \\ +\cross{MATRIX}{ncols} & +\cross{MATRIX}{new} & +\cross{MATRIX}{nrows} & +\cross{MATRIX}{nullSpace} & +\cross{MATRIX}{nullity} \\ +\cross{MATRIX}{parts} & +\cross{MATRIX}{qelt} & +\cross{MATRIX}{qsetelt!} & +\cross{MATRIX}{rank} & +\cross{MATRIX}{row} \\ +\cross{MATRIX}{rowEchelon} & +\cross{MATRIX}{sample} & +\cross{MATRIX}{scalarMatrix} & +\cross{MATRIX}{setColumn!} & +\cross{MATRIX}{setRow!} \\ +\cross{MATRIX}{setelt} & +\cross{MATRIX}{setelt} & +\cross{MATRIX}{setsubMatrix!} & +\cross{MATRIX}{size?} & +\cross{MATRIX}{square?} \\ +\cross{MATRIX}{squareTop} & +\cross{MATRIX}{subMatrix} & +\cross{MATRIX}{swapColumns!} & +\cross{MATRIX}{swapRows!} & +\cross{MATRIX}{symmetric?} \\ +\cross{MATRIX}{transpose} & +\cross{MATRIX}{vertConcat} & +\cross{MATRIX}{zero} & +\cross{MATRIX}{\#{}?} & +\cross{MATRIX}{?**?} \\ +\cross{MATRIX}{?/?} & +\cross{MATRIX}{?=?} & +\cross{MATRIX}{?\~{}=?} & +\cross{MATRIX}{?*?} & +\cross{MATRIX}{?+?} \\ +\cross{MATRIX}{-?} & +\cross{MATRIX}{?-?} &&& +\end{tabular} + <<domain MATRIX Matrix>>= )abbrev domain MATRIX Matrix ++ Author: Grabmeier, Gschnitzer, Williamson @@ -56007,6 +56443,137 @@ \section{domain MODMON ModMonic} \pagehead{ModMonic}{MODMON} \pagepic{ps/v103modmonic.ps}{MODMON}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{llll} +\cross{MODMON}{0} & +\cross{MODMON}{1} & +\cross{MODMON}{An} & +\cross{MODMON}{associates?} \\ +\cross{MODMON}{binomThmExpt} & +\cross{MODMON}{characteristic} & +\cross{MODMON}{charthRoot} & +\cross{MODMON}{coefficient} \\ +\cross{MODMON}{coefficients} & +\cross{MODMON}{coerce} & +\cross{MODMON}{composite} & +\cross{MODMON}{computePowers} \\ +\cross{MODMON}{conditionP} & +\cross{MODMON}{content} & +\cross{MODMON}{convert} & +\cross{MODMON}{D} \\ +\cross{MODMON}{degree} & +\cross{MODMON}{differentiate} & +\cross{MODMON}{discriminant} & +\cross{MODMON}{divide} \\ +\cross{MODMON}{divideExponents} & +\cross{MODMON}{elt} & +\cross{MODMON}{euclideanSize} & +\cross{MODMON}{eval} \\ +\cross{MODMON}{expressIdealMember} & +\cross{MODMON}{exquo} & +\cross{MODMON}{extendedEuclidean} & +\cross{MODMON}{factor} \\ +\cross{MODMON}{factorPolynomial} & +\cross{MODMON}{factorSquareFreePolynomial} & +\cross{MODMON}{frobenius} & +\cross{MODMON}{gcd} \\ +\cross{MODMON}{gcdPolynomial} & +\cross{MODMON}{ground} & +\cross{MODMON}{ground?} & +\cross{MODMON}{hash} \\ +\cross{MODMON}{index} & +\cross{MODMON}{init} & +\cross{MODMON}{integrate} & +\cross{MODMON}{isExpt} \\ +\cross{MODMON}{isPlus} & +\cross{MODMON}{isTimes} & +\cross{MODMON}{karatsubaDivide} & +\cross{MODMON}{latex} \\ +\cross{MODMON}{lcm} & +\cross{MODMON}{leadingCoefficient} & +\cross{MODMON}{leadingMonomial} & +\cross{MODMON}{lift} \\ +\cross{MODMON}{lookup} & +\cross{MODMON}{mainVariable} & +\cross{MODMON}{makeSUP} & +\cross{MODMON}{map} \\ +\cross{MODMON}{mapExponents} & +\cross{MODMON}{max} & +\cross{MODMON}{min} & +\cross{MODMON}{minimumDegree} \\ +\cross{MODMON}{modulus} & +\cross{MODMON}{monicDivide} & +\cross{MODMON}{monomial} & +\cross{MODMON}{monomial?} \\ +\cross{MODMON}{monomials} & +\cross{MODMON}{multiEuclidean} & +\cross{MODMON}{multiplyExponents} & +\cross{MODMON}{multivariate} \\ +\cross{MODMON}{nextItem} & +\cross{MODMON}{numberOfMonomials} & +\cross{MODMON}{one?} & +\cross{MODMON}{order} \\ +\cross{MODMON}{patternMatch} & +\cross{MODMON}{pomopo!} & +\cross{MODMON}{pow} & +\cross{MODMON}{prime?} \\ +\cross{MODMON}{primitiveMonomials} & +\cross{MODMON}{primitivePart} & +\cross{MODMON}{principalIdeal} & +\cross{MODMON}{pseudoDivide} \\ +\cross{MODMON}{pseudoQuotient} & +\cross{MODMON}{pseudoRemainder} & +\cross{MODMON}{random} & +\cross{MODMON}{recip} \\ +\cross{MODMON}{reduce} & +\cross{MODMON}{reducedSystem} & +\cross{MODMON}{reductum} & +\cross{MODMON}{resultant} \\ +\cross{MODMON}{retract} & +\cross{MODMON}{retractIfCan} & +\cross{MODMON}{sample} & +\cross{MODMON}{separate} \\ +\cross{MODMON}{setPoly} & +\cross{MODMON}{shiftLeft} & +\cross{MODMON}{shiftRight} & +\cross{MODMON}{size} \\ +\cross{MODMON}{sizeLess?} & +\cross{MODMON}{solveLinearPolynomialEquation} & +\cross{MODMON}{squareFree} & +\cross{MODMON}{squareFreePart} \\ +\cross{MODMON}{squareFreePolynomial} & +\cross{MODMON}{subResultantGcd} & +\cross{MODMON}{subtractIfCan} & +\cross{MODMON}{totalDegree} \\ +\cross{MODMON}{unit?} & +\cross{MODMON}{unitCanonical} & +\cross{MODMON}{unitNormal} & +\cross{MODMON}{univariate} \\ +\cross{MODMON}{unmakeSUP} & +\cross{MODMON}{UnVectorise} & +\cross{MODMON}{variables} & +\cross{MODMON}{vectorise} \\ +\cross{MODMON}{Vectorise} & +\cross{MODMON}{zero?} & +\cross{MODMON}{?*?} & +\cross{MODMON}{?**?} \\ +\cross{MODMON}{?+?} & +\cross{MODMON}{?-?} & +\cross{MODMON}{-?} & +\cross{MODMON}{?=?} \\ +\cross{MODMON}{?\^{}?} & +\cross{MODMON}{?.?} & +\cross{MODMON}{?\~{}=?} & +\cross{MODMON}{?/?} \\ +\cross{MODMON}{?$<$?} & +\cross{MODMON}{?$<=$?} & +\cross{MODMON}{?$>$?} & +\cross{MODMON}{?$>=$?} \\ +\cross{MODMON}{?quo?} & +\cross{MODMON}{?rem?} & +\end{tabular} + <<domain MODMON ModMonic>>= )abbrev domain MODMON ModMonic ++ Description: @@ -56189,6 +56756,56 @@ {\bf See}\\ \pageto{ModularRing}{MODRING} \pageto{EuclideanModularRing}{EMR} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{MODFIELD}{0} & +\cross{MODFIELD}{1} & +\cross{MODFIELD}{associates?} & +\cross{MODFIELD}{characteristic} & +\cross{MODFIELD}{coerce} \\ +\cross{MODFIELD}{divide} & +\cross{MODFIELD}{euclideanSize} & +\cross{MODFIELD}{expressIdealMember} & +\cross{MODFIELD}{exquo} & +\cross{MODFIELD}{exQuo} \\ +\cross{MODFIELD}{extendedEuclidean} & +\cross{MODFIELD}{factor} & +\cross{MODFIELD}{gcd} & +\cross{MODFIELD}{gcdPolynomial} & +\cross{MODFIELD}{hash} \\ +\cross{MODFIELD}{inv} & +\cross{MODFIELD}{latex} & +\cross{MODFIELD}{lcm} & +\cross{MODFIELD}{modulus} & +\cross{MODFIELD}{multiEuclidean} \\ +\cross{MODFIELD}{one?} & +\cross{MODFIELD}{prime?} & +\cross{MODFIELD}{principalIdeal} & +\cross{MODFIELD}{recip} & +\cross{MODFIELD}{reduce} \\ +\cross{MODFIELD}{sample} & +\cross{MODFIELD}{sizeLess?} & +\cross{MODFIELD}{squareFree} & +\cross{MODFIELD}{squareFreePart} & +\cross{MODFIELD}{subtractIfCan} \\ +\cross{MODFIELD}{unit?} & +\cross{MODFIELD}{unitCanonical} & +\cross{MODFIELD}{unitNormal} & +\cross{MODFIELD}{zero?} & +\cross{MODFIELD}{?*?} \\ +\cross{MODFIELD}{?**?} & +\cross{MODFIELD}{?+?} & +\cross{MODFIELD}{?-?} & +\cross{MODFIELD}{-?} & +\cross{MODFIELD}{?/?} \\ +\cross{MODFIELD}{?=?} & +\cross{MODFIELD}{?\^{}?} & +\cross{MODFIELD}{?\~{}=?} & +\cross{MODFIELD}{?quo?} & +\cross{MODFIELD}{?rem?} +\end{tabular} + <<domain MODFIELD ModularField>>= )abbrev domain MODFIELD ModularField ++ These domains are used for the factorization and gcds @@ -56228,6 +56845,34 @@ {\bf See}\\ \pageto{EuclideanModularRing}{EMR} \pageto{ModularField}{MODFIELD} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{MODRING}{0} & +\cross{MODRING}{1} & +\cross{MODRING}{characteristic} & +\cross{MODRING}{coerce} & +\cross{MODRING}{exQuo} \\ +\cross{MODRING}{hash} & +\cross{MODRING}{inv} & +\cross{MODRING}{latex} & +\cross{MODRING}{modulus} & +\cross{MODRING}{one?} \\ +\cross{MODRING}{recip} & +\cross{MODRING}{reduce} & +\cross{MODRING}{sample} & +\cross{MODRING}{subtractIfCan} & +\cross{MODRING}{zero?} \\ +\cross{MODRING}{?\~{}=?} & +\cross{MODRING}{?*?} & +\cross{MODRING}{?**?} & +\cross{MODRING}{?\^{}?} & +\cross{MODRING}{?+?} \\ +\cross{MODRING}{?-?} & +\cross{MODRING}{-?} & +\cross{MODRING}{?=?} && +\end{tabular} + <<domain MODRING ModularRing>>= )abbrev domain MODRING ModularRing ++ Author: P.Gianni, B.Trager @@ -56331,6 +56976,25 @@ \pagepic{ps/v103modulemonomial.ps}{MODMONOM}{1.00} {\bf See}\\ \pageto{GeneralModulePolynomial}{GMODPOL} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{MODMONOM}{coerce} & +\cross{MODMONOM}{construct} & +\cross{MODMONOM}{exponent} & +\cross{MODMONOM}{hash} & +\cross{MODMONOM}{index} \\ +\cross{MODMONOM}{latex} & +\cross{MODMONOM}{max} & +\cross{MODMONOM}{min} & +\cross{MODMONOM}{?\~{}=?} & +\cross{MODMONOM}{?$<$?} \\ +\cross{MODMONOM}{?$<=$?} & +\cross{MODMONOM}{?=?} & +\cross{MODMONOM}{?$>$?} & +\cross{MODMONOM}{?$>=$?} & +\end{tabular} + <<domain MODMONOM ModuleMonomial>>= )abbrev domain MODMONOM ModuleMonomial ++ Description: @@ -56374,6 +57038,40 @@ \pagepic{ps/v103moduleoperator.ps}{MODOP}{1.00} {\bf See}\\ \pageto{Operator}{OP} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{MODOP}{0} & +\cross{MODOP}{1} & +\cross{MODOP}{adjoint} & +\cross{MODOP}{characteristic} & +\cross{MODOP}{charthRoot} \\ +\cross{MODOP}{coerce} & +\cross{MODOP}{conjug} & +\cross{MODOP}{evaluate} & +\cross{MODOP}{evaluateInverse} & +\cross{MODOP}{hash} \\ +\cross{MODOP}{latex} & +\cross{MODOP}{makeop} & +\cross{MODOP}{one?} & +\cross{MODOP}{opeval} & +\cross{MODOP}{recip} \\ +\cross{MODOP}{retract} & +\cross{MODOP}{retractIfCan} & +\cross{MODOP}{sample} & +\cross{MODOP}{subtractIfCan} & +\cross{MODOP}{zero?} \\ +\cross{MODOP}{?*?} & +\cross{MODOP}{?**?} & +\cross{MODOP}{?+?} & +\cross{MODOP}{?-?} & +\cross{MODOP}{-?} \\ +\cross{MODOP}{?=?} & +\cross{MODOP}{?\^{}?} & +\cross{MODOP}{?.?} & +\cross{MODOP}{?\~{}=?} & +\end{tabular} + <<domain MODOP ModuleOperator>>= )abbrev domain MODOP ModuleOperator ++ Author: Manuel Bronstein @@ -56613,6 +57311,32 @@ \section{domain MOEBIUS MoebiusTransform} \pagehead{MoebiusTransform}{MOEBIUS} \pagepic{ps/v103moebiustransform.ps}{MOEBIUS}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{MOEBIUS}{1} & +\cross{MOEBIUS}{coerce} & +\cross{MOEBIUS}{commutator} & +\cross{MOEBIUS}{conjugate} & +\cross{MOEBIUS}{eval} \\ +\cross{MOEBIUS}{hash} & +\cross{MOEBIUS}{inv} & +\cross{MOEBIUS}{latex} & +\cross{MOEBIUS}{moebius} & +\cross{MOEBIUS}{one?} \\ +\cross{MOEBIUS}{recip} & +\cross{MOEBIUS}{sample} & +\cross{MOEBIUS}{scale} & +\cross{MOEBIUS}{shift} & +\cross{MOEBIUS}{?\~{}=?} \\ +\cross{MOEBIUS}{?**?} & +\cross{MOEBIUS}{?\^{}?} & +\cross{MOEBIUS}{?*?} & +\cross{MOEBIUS}{?/?} & +\cross{MOEBIUS}{?=?} \\ +\cross{MOEBIUS}{?\^{}?} &&&& +\end{tabular} + <<domain MOEBIUS MoebiusTransform>>= )abbrev domain MOEBIUS MoebiusTransform ++ 2-by-2 matrices acting on P1(F). @@ -56724,6 +57448,48 @@ \section{domain MRING MonoidRing} \pagehead{MonoidRing}{MRING} \pagepic{ps/v103monoidring.ps}{MRING}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{MRING}{0} & +\cross{MRING}{1} & +\cross{MRING}{characteristic} & +\cross{MRING}{charthRoot} & +\cross{MRING}{coefficient} \\ +\cross{MRING}{coefficients} & +\cross{MRING}{coerce} & +\cross{MRING}{hash} & +\cross{MRING}{index} & +\cross{MRING}{latex} \\ +\cross{MRING}{leadingCoefficient} & +\cross{MRING}{leadingMonomial} & +\cross{MRING}{lookup} & +\cross{MRING}{map} & +\cross{MRING}{monomial} \\ +\cross{MRING}{monomial?} & +\cross{MRING}{monomials} & +\cross{MRING}{numberOfMonomials} & +\cross{MRING}{one?} & +\cross{MRING}{random} \\ +\cross{MRING}{recip} & +\cross{MRING}{reductum} & +\cross{MRING}{retract} & +\cross{MRING}{retractIfCan} & +\cross{MRING}{sample} \\ +\cross{MRING}{size} & +\cross{MRING}{subtractIfCan} & +\cross{MRING}{terms} & +\cross{MRING}{zero?} & +\cross{MRING}{?*?} \\ +\cross{MRING}{?**?} & +\cross{MRING}{?+?} & +\cross{MRING}{?-?} & +\cross{MRING}{-?} & +\cross{MRING}{?=?} \\ +\cross{MRING}{?\^{}?} & +\cross{MRING}{?\~{}=?} &&& +\end{tabular} + <<domain MRING MonoidRing>>= )abbrev domain MRING MonoidRing ++ Authors: Stephan M. Watt; revised by Johannes Grabmeier @@ -57267,6 +58033,58 @@ @ \pagehead{Multiset}{MSET} \pagepic{ps/v103multiset.ps}{MSET}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{MSET}{any?} & +\cross{MSET}{bag} & +\cross{MSET}{brace} & +\cross{MSET}{coerce} & +\cross{MSET}{construct} \\ +\cross{MSET}{convert} & +\cross{MSET}{copy} & +\cross{MSET}{count} & +\cross{MSET}{dictionary} & +\cross{MSET}{difference} \\ +\cross{MSET}{duplicates} & +\cross{MSET}{empty} & +\cross{MSET}{empty?} & +\cross{MSET}{eq?} & +\cross{MSET}{eval} \\ +\cross{MSET}{every?} & +\cross{MSET}{extract!} & +\cross{MSET}{find} & +\cross{MSET}{hash} & +\cross{MSET}{insert!} \\ +\cross{MSET}{inspect} & +\cross{MSET}{intersect} & +\cross{MSET}{latex} & +\cross{MSET}{less?} & +\cross{MSET}{map} \\ +\cross{MSET}{map!} & +\cross{MSET}{members} & +\cross{MSET}{member?} & +\cross{MSET}{more?} & +\cross{MSET}{multiset} \\ +\cross{MSET}{parts} & +\cross{MSET}{reduce} & +\cross{MSET}{remove} & +\cross{MSET}{remove!} & +\cross{MSET}{removeDuplicates} \\ +\cross{MSET}{sample} & +\cross{MSET}{select} & +\cross{MSET}{select!} & +\cross{MSET}{set} & +\cross{MSET}{size?} \\ +\cross{MSET}{subset?} & +\cross{MSET}{symmetricDifference} & +\cross{MSET}{union} & +\cross{MSET}{\#{}?} & +\cross{MSET}{?$<$?} \\ +\cross{MSET}{?=?} & +\cross{MSET}{?\~{}=?} &&& +\end{tabular} + <<domain MSET Multiset>>= )abbrev domain MSET Multiset ++ Author:Stephen M. Watt, William H. Burge, Richard D. Jenks, Frederic Lehobey @@ -57763,6 +58581,94 @@ \pageto{Polynomial}{POLY} \pageto{SparseMultivariatePolynomial}{SMP} \pageto{IndexedExponents}{INDE} + +{\bf Exports:}\\ +\begin{tabular}{llll} +\cross{MPOLY}{0} & +\cross{MPOLY}{1} & +\cross{MPOLY}{associates?} & +\cross{MPOLY}{binomThmExpt} \\ +\cross{MPOLY}{characteristic} & +\cross{MPOLY}{charthRoot} & +\cross{MPOLY}{coefficient} & +\cross{MPOLY}{coefficients} \\ +\cross{MPOLY}{coerce} & +\cross{MPOLY}{conditionP} & +\cross{MPOLY}{content} & +\cross{MPOLY}{convert} \\ +\cross{MPOLY}{D} & +\cross{MPOLY}{degree} & +\cross{MPOLY}{differentiate} & +\cross{MPOLY}{discriminant} \\ +\cross{MPOLY}{eval} & +\cross{MPOLY}{exquo} & +\cross{MPOLY}{factor} & +\cross{MPOLY}{factorPolynomial} \\ +\cross{MPOLY}{factorSquareFreePolynomial} & +\cross{MPOLY}{gcd} & +\cross{MPOLY}{gcdPolynomial} & +\cross{MPOLY}{ground} \\ +\cross{MPOLY}{ground?} & +\cross{MPOLY}{hash} & +\cross{MPOLY}{isExpt} & +\cross{MPOLY}{isPlus} \\ +\cross{MPOLY}{isTimes} & +\cross{MPOLY}{latex} & +\cross{MPOLY}{lcm} & +\cross{MPOLY}{leadingCoefficient} \\ +\cross{MPOLY}{leadingMonomial} & +\cross{MPOLY}{mainVariable} & +\cross{MPOLY}{map} & +\cross{MPOLY}{mapExponents} \\ +\cross{MPOLY}{max} & +\cross{MPOLY}{min} & +\cross{MPOLY}{minimumDegree} & +\cross{MPOLY}{monicDivide} \\ +\cross{MPOLY}{monomial} & +\cross{MPOLY}{monomial?} & +\cross{MPOLY}{monomials} & +\cross{MPOLY}{multivariate} \\ +\cross{MPOLY}{numberOfMonomials} & +\cross{MPOLY}{one?} & +\cross{MPOLY}{patternMatch} & +\cross{MPOLY}{pomopo!} \\ +\cross{MPOLY}{prime?} & +\cross{MPOLY}{primitivePart} & +\cross{MPOLY}{primitiveMonomials} & +\cross{MPOLY}{recip} \\ +\cross{MPOLY}{reducedSystem} & +\cross{MPOLY}{reductum} & +\cross{MPOLY}{resultant} & +\cross{MPOLY}{retract} \\ +\cross{MPOLY}{retractIfCan} & +\cross{MPOLY}{sample} & +\cross{MPOLY}{solveLinearPolynomialEquation} & +\cross{MPOLY}{squareFree} \\ +\cross{MPOLY}{squareFreePart} & +\cross{MPOLY}{squareFreePolynomial} & +\cross{MPOLY}{subtractIfCan} & +\cross{MPOLY}{totalDegree} \\ +\cross{MPOLY}{unit?} & +\cross{MPOLY}{unitCanonical} & +\cross{MPOLY}{unitNormal} & +\cross{MPOLY}{univariate} \\ +\cross{MPOLY}{variables} & +\cross{MPOLY}{zero?} & +\cross{MPOLY}{?*?} & +\cross{MPOLY}{?**?} \\ +\cross{MPOLY}{?+?} & +\cross{MPOLY}{?-?} & +\cross{MPOLY}{-?} & +\cross{MPOLY}{?=?} \\ +\cross{MPOLY}{?\^{}?} & +\cross{MPOLY}{?\~{}=?} & +\cross{MPOLY}{?/?} & +\cross{MPOLY}{?$<$?} \\ +\cross{MPOLY}{?$<=$?} & +\cross{MPOLY}{?$>$?} & +\cross{MPOLY}{?$>=$?} & +\end{tabular} + <<domain MPOLY MultivariatePolynomial>>= )abbrev domain MPOLY MultivariatePolynomial ++ Author: Dave Barton, Barry Trager @@ -57799,6 +58705,111 @@ \pagepic{ps/v103myexpression.ps}{MYEXPR}{1.00} {\bf See}\\ \pageto{MyUnivariatePolynomial}{MYUP} + +{\bf Exports:}\\ +\begin{tabular}{llll} +\cross{MYEXPR}{0} & +\cross{MYEXPR}{1} & +\cross{MYEXPR}{applyQuote} & +\cross{MYEXPR}{associates?} \\ +\cross{MYEXPR}{belong?} & +\cross{MYEXPR}{binomial} & +\cross{MYEXPR}{box} & +\cross{MYEXPR}{characteristic} \\ +\cross{MYEXPR}{charthRoot} & +\cross{MYEXPR}{coerce} & +\cross{MYEXPR}{commutator} & +\cross{MYEXPR}{conjugate} \\ +\cross{MYEXPR}{convert} & +\cross{MYEXPR}{D} & +\cross{MYEXPR}{definingPolynomial} & +\cross{MYEXPR}{denom} \\ +\cross{MYEXPR}{denominator} & +\cross{MYEXPR}{differentiate} & +\cross{MYEXPR}{distribute} & +\cross{MYEXPR}{divide} \\ +\cross{MYEXPR}{elt} & +\cross{MYEXPR}{euclideanSize} & +\cross{MYEXPR}{eval} & +\cross{MYEXPR}{even?} \\ +\cross{MYEXPR}{expressIdealMember} & +\cross{MYEXPR}{exquo} & +\cross{MYEXPR}{extendedEuclidean} & +\cross{MYEXPR}{factor} \\ +\cross{MYEXPR}{factorial} & +\cross{MYEXPR}{factorials} & +\cross{MYEXPR}{freeOf?} & +\cross{MYEXPR}{gcd} \\ +\cross{MYEXPR}{gcdPolynomial} & +\cross{MYEXPR}{ground} & +\cross{MYEXPR}{ground?} & +\cross{MYEXPR}{hash} \\ +\cross{MYEXPR}{height} & +\cross{MYEXPR}{inv} & +\cross{MYEXPR}{is?} & +\cross{MYEXPR}{is?} \\ +\cross{MYEXPR}{isExpt} & +\cross{MYEXPR}{isMult} & +\cross{MYEXPR}{isPlus} & +\cross{MYEXPR}{isPower} \\ +\cross{MYEXPR}{isTimes} & +\cross{MYEXPR}{kernel} & +\cross{MYEXPR}{kernels} & +\cross{MYEXPR}{latex} \\ +\cross{MYEXPR}{lcm} & +\cross{MYEXPR}{mainKernel} & +\cross{MYEXPR}{map} & +\cross{MYEXPR}{max} \\ +\cross{MYEXPR}{min} & +\cross{MYEXPR}{minPoly} & +\cross{MYEXPR}{multiEuclidean} & +\cross{MYEXPR}{numer} \\ +\cross{MYEXPR}{numerator} & +\cross{MYEXPR}{odd?} & +\cross{MYEXPR}{one?} & +\cross{MYEXPR}{operator} \\ +\cross{MYEXPR}{operators} & +\cross{MYEXPR}{paren} & +\cross{MYEXPR}{patternMatch} & +\cross{MYEXPR}{permutation} \\ +\cross{MYEXPR}{prime?} & +\cross{MYEXPR}{principalIdeal} & +\cross{MYEXPR}{product} & +\cross{MYEXPR}{recip} \\ +\cross{MYEXPR}{reducedSystem} & +\cross{MYEXPR}{retract} & +\cross{MYEXPR}{retractIfCan} & +\cross{MYEXPR}{sample} \\ +\cross{MYEXPR}{sizeLess?} & +\cross{MYEXPR}{squareFree} & +\cross{MYEXPR}{squareFreePart} & +\cross{MYEXPR}{subst} \\ +\cross{MYEXPR}{subtractIfCan} & +\cross{MYEXPR}{summation} & +\cross{MYEXPR}{tower} & +\cross{MYEXPR}{unit?} \\ +\cross{MYEXPR}{unitCanonical} & +\cross{MYEXPR}{unitNormal} & +\cross{MYEXPR}{univariate} & +\cross{MYEXPR}{variables} \\ +\cross{MYEXPR}{zero?} & +\cross{MYEXPR}{?*?} & +\cross{MYEXPR}{?**?} & +\cross{MYEXPR}{?+?} \\ +\cross{MYEXPR}{-?} & +\cross{MYEXPR}{?-?} & +\cross{MYEXPR}{?/?} & +\cross{MYEXPR}{?$<$?} \\ +\cross{MYEXPR}{?$<=$?} & +\cross{MYEXPR}{?=?} & +\cross{MYEXPR}{?$>$?} & +\cross{MYEXPR}{?$>=$?} \\ +\cross{MYEXPR}{?\^{}?} & +\cross{MYEXPR}{?\~{}=?} & +\cross{MYEXPR}{?quo?} & +\cross{MYEXPR}{?rem?} +\end{tabular} + <<domain MYEXPR MyExpression>>= )abbrev domain MYEXPR MyExpression MyExpression(q: Symbol, R): Exports == Implementation where @@ -57862,6 +58873,125 @@ \pagepic{ps/v103myunivariatepolynomial.ps}{MYUP}{1.00} {\bf See}\\ \pageto{MyExpression}{MYEXPR} + +{\bf Exports:}\\ +\begin{tabular}{lll} +\cross{MYUP}{0} & +\cross{MYUP}{1} & +\cross{MYUP}{associates?} \\ +\cross{MYUP}{binomThmExpt} & +\cross{MYUP}{characteristic} & +\cross{MYUP}{charthRoot} \\ +\cross{MYUP}{coefficient} & +\cross{MYUP}{coefficients} & +\cross{MYUP}{coerce} \\ +\cross{MYUP}{composite} & +\cross{MYUP}{conditionP} & +\cross{MYUP}{content} \\ +\cross{MYUP}{convert} & +\cross{MYUP}{D} & +\cross{MYUP}{degree} \\ +\cross{MYUP}{differentiate} & +\cross{MYUP}{discriminant} & +\cross{MYUP}{divide} \\ +\cross{MYUP}{divideExponents} & +\cross{MYUP}{elt} & +\cross{MYUP}{euclideanSize} \\ +\cross{MYUP}{eval} & +\cross{MYUP}{expressIdealMember} & +\cross{MYUP}{exquo} \\ +\cross{MYUP}{extendedEuclidean} & +\cross{MYUP}{factor} & +\cross{MYUP}{factorPolynomial} \\ +\cross{MYUP}{factorSquareFreePolynomial} & +\cross{MYUP}{fmecg} & +\cross{MYUP}{gcd} \\ +\cross{MYUP}{gcdPolynomial} & +\cross{MYUP}{ground} & +\cross{MYUP}{ground?} \\ +\cross{MYUP}{hash} & +\cross{MYUP}{init} & +\cross{MYUP}{integrate} \\ +\cross{MYUP}{isExpt} & +\cross{MYUP}{isPlus} & +\cross{MYUP}{isTimes} \\ +\cross{MYUP}{karatsubaDivide} & +\cross{MYUP}{latex} & +\cross{MYUP}{lcm} \\ +\cross{MYUP}{leadingCoefficient} & +\cross{MYUP}{leadingMonomial} & +\cross{MYUP}{mainVariable} \\ +\cross{MYUP}{makeSUP} & +\cross{MYUP}{map} & +\cross{MYUP}{mapExponents} \\ +\cross{MYUP}{max} & +\cross{MYUP}{min} & +\cross{MYUP}{minimumDegree} \\ +\cross{MYUP}{monicDivide} & +\cross{MYUP}{monomial} & +\cross{MYUP}{monomial?} \\ +\cross{MYUP}{monomials} & +\cross{MYUP}{multiEuclidean} & +\cross{MYUP}{multiplyExponents} \\ +\cross{MYUP}{multivariate} & +\cross{MYUP}{nextItem} & +\cross{MYUP}{numberOfMonomials} \\ +\cross{MYUP}{one?} & +\cross{MYUP}{order} & +\cross{MYUP}{patternMatch} \\ +\cross{MYUP}{pomopo!} & +\cross{MYUP}{prime?} & +\cross{MYUP}{primitiveMonomials} \\ +\cross{MYUP}{primitivePart} & +\cross{MYUP}{principalIdeal} & +\cross{MYUP}{pseudoDivide} \\ +\cross{MYUP}{pseudoQuotient} & +\cross{MYUP}{pseudoRemainder} & +\cross{MYUP}{recip} \\ +\cross{MYUP}{reducedSystem} & +\cross{MYUP}{reductum} & +\cross{MYUP}{resultant} \\ +\cross{MYUP}{retract} & +\cross{MYUP}{retractIfCan} & +\cross{MYUP}{sample} \\ +\cross{MYUP}{separate} & +\cross{MYUP}{shiftLeft} & +\cross{MYUP}{shiftRight} \\ +\cross{MYUP}{sizeLess?} & +\cross{MYUP}{solveLinearPolynomialEquation} & +\cross{MYUP}{squareFree} \\ +\cross{MYUP}{squareFreePart} & +\cross{MYUP}{squareFreePolynomial} & +\cross{MYUP}{subResultantGcd} \\ +\cross{MYUP}{subtractIfCan} & +\cross{MYUP}{totalDegree} & +\cross{MYUP}{unit?} \\ +\cross{MYUP}{unitCanonical} & +\cross{MYUP}{unitNormal} & +\cross{MYUP}{univariate} \\ +\cross{MYUP}{unmakeSUP} & +\cross{MYUP}{variables} & +\cross{MYUP}{vectorise} \\ +\cross{MYUP}{zero?} & +\cross{MYUP}{?*?} & +\cross{MYUP}{?**?} \\ +\cross{MYUP}{?+?} & +\cross{MYUP}{?-?} & +\cross{MYUP}{-?} \\ +\cross{MYUP}{?=?} & +\cross{MYUP}{?\^{}?} & +\cross{MYUP}{?.?} \\ +\cross{MYUP}{?\~{}=?} & +\cross{MYUP}{?/?} & +\cross{MYUP}{?$<$?} \\ +\cross{MYUP}{?$<=$?} & +\cross{MYUP}{?$>$?} & +\cross{MYUP}{?$>=$?} \\ +\cross{MYUP}{?\^{}?} & +\cross{MYUP}{?quo?} & +\cross{MYUP}{?rem?} +\end{tabular} + <<domain MYUP MyUnivariatePolynomial>>= )abbrev domain MYUP MyUnivariatePolynomial MyUnivariatePolynomial(x:Symbol, R:Ring): @@ -57912,6 +59042,144 @@ \pagepic{ps/v103newsparsemultivariatepolynomial.ps}{NSMP}{1.00} {\bf See}\\ \pageto{NewSparseUnivariatePolynomial}{NSUP} + +{\bf Exports:}\\ +\begin{tabular}{lll} +\cross{NSMP}{0} & +\cross{NSMP}{1} & +\cross{NSMP}{associates?} \\ +\cross{NSMP}{binomThmExpt} & +\cross{NSMP}{characteristic} & +\cross{NSMP}{charthRoot} \\ +\cross{NSMP}{coefficient} & +\cross{NSMP}{coefficients} & +\cross{NSMP}{coerce} \\ +\cross{NSMP}{conditionP} & +\cross{NSMP}{content} & +\cross{NSMP}{D} \\ +\cross{NSMP}{degree} & +\cross{NSMP}{deepestInitial} & +\cross{NSMP}{deepestTail} \\ +\cross{NSMP}{differentiate} & +\cross{NSMP}{discriminant} & +\cross{NSMP}{eval} \\ +\cross{NSMP}{exactQuotient} & +\cross{NSMP}{exactQuotient!} & +\cross{NSMP}{exquo} \\ +\cross{NSMP}{extendedSubResultantGcd} & +\cross{NSMP}{factor} & +\cross{NSMP}{factorPolynomial} \\ +\cross{NSMP}{factorSquareFreePolynomial} & +\cross{NSMP}{gcd} & +\cross{NSMP}{gcdPolynomial} \\ +\cross{NSMP}{ground} & +\cross{NSMP}{ground?} & +\cross{NSMP}{halfExtendedSubResultantGcd1} \\ +\cross{NSMP}{halfExtendedSubResultantGcd2} & +\cross{NSMP}{hash} & +\cross{NSMP}{head} \\ +\cross{NSMP}{headReduce} & +\cross{NSMP}{headReduced?} & +\cross{NSMP}{infRittWu?} \\ +\cross{NSMP}{init} & +\cross{NSMP}{initiallyReduce} & +\cross{NSMP}{initiallyReduced?} \\ +\cross{NSMP}{isExpt} & +\cross{NSMP}{isPlus} & +\cross{NSMP}{isTimes} \\ +\cross{NSMP}{iteratedInitials} & +\cross{NSMP}{lastSubResultant} & +\cross{NSMP}{latex} \\ +\cross{NSMP}{LazardQuotient} & +\cross{NSMP}{LazardQuotient2} & +\cross{NSMP}{lazyPremWithDefault} \\ +\cross{NSMP}{lazyPquo} & +\cross{NSMP}{lazyPrem} & +\cross{NSMP}{lazyPseudoDivide} \\ +\cross{NSMP}{lazyResidueClass} & +\cross{NSMP}{lcm} & +\cross{NSMP}{leadingCoefficient} \\ +\cross{NSMP}{leadingMonomial} & +\cross{NSMP}{leastMonomial} & +\cross{NSMP}{mainCoefficients} \\ +\cross{NSMP}{mainContent} & +\cross{NSMP}{mainMonomial} & +\cross{NSMP}{mainMonomials} \\ +\cross{NSMP}{mainPrimitivePart} & +\cross{NSMP}{mainSquareFreePart} & +\cross{NSMP}{mainVariable} \\ +\cross{NSMP}{map} & +\cross{NSMP}{mapExponents} & +\cross{NSMP}{max} \\ +\cross{NSMP}{mdeg} & +\cross{NSMP}{min} & +\cross{NSMP}{minimumDegree} \\ +\cross{NSMP}{monic?} & +\cross{NSMP}{monicDivide} & +\cross{NSMP}{monicModulo} \\ +\cross{NSMP}{monomial} & +\cross{NSMP}{monomial?} & +\cross{NSMP}{monomials} \\ +\cross{NSMP}{multivariate} & +\cross{NSMP}{mvar} & +\cross{NSMP}{nextsubResultant2} \\ +\cross{NSMP}{normalized?} & +\cross{NSMP}{numberOfMonomials} & +\cross{NSMP}{one?} \\ +\cross{NSMP}{patternMatch} & +\cross{NSMP}{pomopo!} & +\cross{NSMP}{pquo} \\ +\cross{NSMP}{prem} & +\cross{NSMP}{primPartElseUnitCanonical} & +\cross{NSMP}{primPartElseUnitCanonical!} \\ +\cross{NSMP}{prime?} & +\cross{NSMP}{primitiveMonomials} & +\cross{NSMP}{primitivePart} \\ +\cross{NSMP}{primitivePart!} & +\cross{NSMP}{pseudoDivide} & +\cross{NSMP}{reducedSystem} \\ +\cross{NSMP}{resultant} & +\cross{NSMP}{retract} & +\cross{NSMP}{retractIfCan} \\ +\cross{NSMP}{RittWuCompare} & +\cross{NSMP}{quasiMonic?} & +\cross{NSMP}{recip} \\ +\cross{NSMP}{reduced?} & +\cross{NSMP}{reductum} & +\cross{NSMP}{retract} \\ +\cross{NSMP}{sample} & +\cross{NSMP}{solveLinearPolynomialEquation} & +\cross{NSMP}{squareFree} \\ +\cross{NSMP}{squareFreePart} & +\cross{NSMP}{squareFreePolynomial} & +\cross{NSMP}{subResultantChain} \\ +\cross{NSMP}{subResultantGcd} & +\cross{NSMP}{supRittWu?} & +\cross{NSMP}{subtractIfCan} \\ +\cross{NSMP}{tail} & +\cross{NSMP}{totalDegree} & +\cross{NSMP}{unit?} \\ +\cross{NSMP}{unitCanonical} & +\cross{NSMP}{unitNormal} & +\cross{NSMP}{univariate} \\ +\cross{NSMP}{univariate} & +\cross{NSMP}{variables} & +\cross{NSMP}{zero?} \\ +\cross{NSMP}{?*?} & +\cross{NSMP}{?**?} & +\cross{NSMP}{?+?} \\ +\cross{NSMP}{?-?} & +\cross{NSMP}{-?} & +\cross{NSMP}{?=?} \\ +\cross{NSMP}{?\^{}?} & +\cross{NSMP}{?\~{}=?} & +\cross{NSMP}{?/?} \\ +\cross{NSMP}{?$<$?} & +\cross{NSMP}{?$<=$?} & +\cross{NSMP}{?$>$?} \\ +\cross{NSMP}{?$>=$?} && +\end{tabular} + <<domain NSMP NewSparseMultivariatePolynomial>>= )abbrev domain NSMP NewSparseMultivariatePolynomial ++ Author: Marc Moreno Maza @@ -58326,6 +59594,138 @@ \pagepic{ps/v103newsparseunivariatepolynomial.ps}{NSUP}{1.00} {\bf See}\\ \pageto{NewSparseMultivariatePolynomial}{NSMP} + +{\bf Exports:}\\ +\begin{tabular}{ll} +\cross{NSUP}{0} & +\cross{NSUP}{1} \\ +\cross{NSUP}{associates?} & +\cross{NSUP}{binomThmExpt} \\ +\cross{NSUP}{characteristic} & +\cross{NSUP}{charthRoot} \\ +\cross{NSUP}{coefficient} & +\cross{NSUP}{coefficients} \\ +\cross{NSUP}{coerce} & +\cross{NSUP}{composite} \\ +\cross{NSUP}{conditionP} & +\cross{NSUP}{content} \\ +\cross{NSUP}{convert} & +\cross{NSUP}{D} \\ +\cross{NSUP}{degree} & +\cross{NSUP}{differentiate} \\ +\cross{NSUP}{discriminant} & +\cross{NSUP}{divide} \\ +\cross{NSUP}{divideExponents} & +\cross{NSUP}{elt} \\ +\cross{NSUP}{euclideanSize} & +\cross{NSUP}{eval} \\ +\cross{NSUP}{expressIdealMember} & +\cross{NSUP}{exquo} \\ +\cross{NSUP}{extendedEuclidean} & +\cross{NSUP}{extendedResultant} \\ +\cross{NSUP}{extendedSubResultantGcd} & +\cross{NSUP}{factor} \\ +\cross{NSUP}{factorPolynomial} & +\cross{NSUP}{factorSquareFreePolynomial} \\ +\cross{NSUP}{fmecg} & +\cross{NSUP}{gcd} \\ +\cross{NSUP}{gcdPolynomial} & +\cross{NSUP}{ground} \\ +\cross{NSUP}{ground?} & +\cross{NSUP}{halfExtendedResultant1} \\ +\cross{NSUP}{halfExtendedResultant2} & +\cross{NSUP}{halfExtendedSubResultantGcd1} \\ +\cross{NSUP}{halfExtendedSubResultantGcd2} & +\cross{NSUP}{hash} \\ +\cross{NSUP}{init} & +\cross{NSUP}{integrate} \\ +\cross{NSUP}{isExpt} & +\cross{NSUP}{isPlus} \\ +\cross{NSUP}{isTimes} & +\cross{NSUP}{karatsubaDivide} \\ +\cross{NSUP}{lastSubResultant} & +\cross{NSUP}{latex} \\ +\cross{NSUP}{lazyPseudoDivide} & +\cross{NSUP}{lazyPseudoQuotient} \\ +\cross{NSUP}{lazyPseudoRemainder} & +\cross{NSUP}{lazyResidueClass} \\ +\cross{NSUP}{lcm} & +\cross{NSUP}{leadingCoefficient} \\ +\cross{NSUP}{leadingMonomial} & +\cross{NSUP}{mainVariable} \\ +\cross{NSUP}{makeSUP} & +\cross{NSUP}{map} \\ +\cross{NSUP}{mapExponents} & +\cross{NSUP}{max} \\ +\cross{NSUP}{min} & +\cross{NSUP}{minimumDegree} \\ +\cross{NSUP}{monicDivide} & +\cross{NSUP}{monicModulo} \\ +\cross{NSUP}{monomial} & +\cross{NSUP}{monomial?} \\ +\cross{NSUP}{monomials} & +\cross{NSUP}{multiEuclidean} \\ +\cross{NSUP}{multiplyExponents} & +\cross{NSUP}{multivariate} \\ +\cross{NSUP}{nextItem} & +\cross{NSUP}{numberOfMonomials} \\ +\cross{NSUP}{one?} & +\cross{NSUP}{order} \\ +\cross{NSUP}{patternMatch} & +\cross{NSUP}{pomopo!} \\ +\cross{NSUP}{prime?} & +\cross{NSUP}{primitiveMonomials} \\ +\cross{NSUP}{primitivePart} & +\cross{NSUP}{principalIdeal} \\ +\cross{NSUP}{pseudoDivide} & +\cross{NSUP}{pseudoQuotient} \\ +\cross{NSUP}{pseudoRemainder} & +\cross{NSUP}{recip} \\ +\cross{NSUP}{reducedSystem} & +\cross{NSUP}{reductum} \\ +\cross{NSUP}{resultant} & +\cross{NSUP}{retract} \\ +\cross{NSUP}{retractIfCan} & +\cross{NSUP}{sample} \\ +\cross{NSUP}{separate} & +\cross{NSUP}{shiftLeft} \\ +\cross{NSUP}{shiftRight} & +\cross{NSUP}{sizeLess?} \\ +\cross{NSUP}{solveLinearPolynomialEquation} & +\cross{NSUP}{squareFree} \\ +\cross{NSUP}{squareFreePart} & +\cross{NSUP}{squareFreePolynomial} \\ +\cross{NSUP}{subResultantGcd} & +\cross{NSUP}{subResultantsChain} \\ +\cross{NSUP}{subtractIfCan} & +\cross{NSUP}{totalDegree} \\ +\cross{NSUP}{totalDegree} & +\cross{NSUP}{unit?} \\ +\cross{NSUP}{unitCanonical} & +\cross{NSUP}{unitNormal} \\ +\cross{NSUP}{univariate} & +\cross{NSUP}{unmakeSUP} \\ +\cross{NSUP}{variables} & +\cross{NSUP}{vectorise} \\ +\cross{NSUP}{zero?} & +\cross{NSUP}{?*?} \\ +\cross{NSUP}{?**?} & +\cross{NSUP}{?+?} \\ +\cross{NSUP}{?-?} & +\cross{NSUP}{-?} \\ +\cross{NSUP}{?=?} & +\cross{NSUP}{?\^{}?} \\ +\cross{NSUP}{?.?} & +\cross{NSUP}{?\~{}=?} \\ +\cross{NSUP}{?/?} & +\cross{NSUP}{?$<$?} \\ +\cross{NSUP}{?$<=$?} & +\cross{NSUP}{?$>$?} \\ +\cross{NSUP}{?$>=$?} & +\cross{NSUP}{?quo?} \\ +\cross{NSUP}{?rem?} & +\end{tabular} + <<domain NSUP NewSparseUnivariatePolynomial>>= )abbrev domain NSUP NewSparseUnivariatePolynomial ++ Author: Marc Moreno Maza @@ -58658,6 +60058,16 @@ \pagepic{ps/v103none.ps}{NONE}{1.00} {\bf See}\\ \pageto{Any}{ANY} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{NONE}{coerce} & +\cross{NONE}{hash} & +\cross{NONE}{latex} & +\cross{NONE}{?=?} & +\cross{NONE}{?\~{}=?} +\end{tabular} + <<domain NONE None>>= )abbrev domain NONE None ++ Author: @@ -58695,6 +60105,41 @@ \pageto{Integer}{INT} \pageto{PositiveInteger}{PI} \pageto{RomanNumeral}{ROMAN} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{NNI}{0} & +\cross{NNI}{1} & +\cross{NNI}{coerce} & +\cross{NNI}{divide} & +\cross{NNI}{exquo} \\ +\cross{NNI}{gcd} & +\cross{NNI}{hash} & +\cross{NNI}{latex} & +\cross{NNI}{max} & +\cross{NNI}{min} \\ +\cross{NNI}{one?} & +\cross{NNI}{random} & +\cross{NNI}{recip} & +\cross{NNI}{sample} & +\cross{NNI}{shift} \\ +\cross{NNI}{subtractIfCan} & +\cross{NNI}{sup} & +\cross{NNI}{zero?} & +\cross{NNI}{?\~{}=?} & +\cross{NNI}{?*?} \\ +\cross{NNI}{?**?} & +\cross{NNI}{?\^{}?} & +\cross{NNI}{?+?} & +\cross{NNI}{?$<$?} & +\cross{NNI}{?$<=$?} \\ +\cross{NNI}{?=?} & +\cross{NNI}{?$>$?} & +\cross{NNI}{?$>=$?} & +\cross{NNI}{?quo?} & +\cross{NNI}{?rem?} +\end{tabular} + <<domain NNI NonNegativeInteger>>= )abbrev domain NNI NonNegativeInteger ++ Author: @@ -58747,6 +60192,17 @@ \section{domain NIPROB NumericalIntegrationProblem} \pagehead{NumericalIntegrationProblem}{NIPROB} \pagepic{ps/v103numericalintegrationproblem.ps}{NIPROB}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{llllll} +\cross{NIPROB}{coerce} & +\cross{NIPROB}{hash} & +\cross{NIPROB}{latex} & +\cross{NIPROB}{retract} & +\cross{NIPROB}{?=?} & +\cross{NIPROB}{?\~{}=?} +\end{tabular} + <<domain NIPROB NumericalIntegrationProblem>>= )abbrev domain NIPROB NumericalIntegrationProblem ++ Author: Brian Dupee @@ -58822,6 +60278,17 @@ \section{domain ODEPROB NumericalODEProblem} \pagehead{NumericalODEProblem}{ODEPROB} \pagepic{ps/v103numericalodeproblem.ps}{ODEPROB}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{llllll} +\cross{ODEPROB}{coerce} & +\cross{ODEPROB}{hash} & +\cross{ODEPROB}{latex} & +\cross{ODEPROB}{retract} & +\cross{ODEPROB}{?=?} & +\cross{ODEPROB}{?\~{}=?} +\end{tabular} + <<domain ODEPROB NumericalODEProblem>>= )abbrev domain ODEPROB NumericalODEProblem ++ Author: Brian Dupee @@ -58881,6 +60348,17 @@ \section{domain OPTPROB NumericalOptimizationProblem} \pagehead{NumericalOptimizationProblem}{OPTPROB} \pagepic{ps/v103numericaloptimizationproblem.ps}{OPTPROB}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{llllll} +\cross{OPTPROB}{coerce} & +\cross{OPTPROB}{hash} & +\cross{OPTPROB}{latex} & +\cross{OPTPROB}{retract} & +\cross{OPTPROB}{?=?} & +\cross{OPTPROB}{?\~{}=?} +\end{tabular} + <<domain OPTPROB NumericalOptimizationProblem>>= )abbrev domain OPTPROB NumericalOptimizationProblem ++ Author: Brian Dupee @@ -58958,6 +60436,17 @@ \section{domain PDEPROB NumericalPDEProblem} \pagehead{NumericalPDEProblem}{PDEPROB} \pagepic{ps/v103numericalpdeproblem.ps}{PDEPROB}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{llllll} +\cross{PDEPROB}{coerce} & +\cross{PDEPROB}{hash} & +\cross{PDEPROB}{latex} & +\cross{PDEPROB}{retract} & +\cross{PDEPROB}{?=?} & +\cross{PDEPROB}{?\~{}=?} +\end{tabular} + <<domain PDEPROB NumericalPDEProblem>>= )abbrev domain PDEPROB NumericalPDEProblem ++ Author: Brian Dupee @@ -59310,6 +60799,63 @@ @ \pagehead{Octonion}{OCT} \pagepic{ps/v103octonion.ps}{OCT}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{OCT}{0} & +\cross{OCT}{1} & +\cross{OCT}{abs} & +\cross{OCT}{characteristic} & +\cross{OCT}{charthRoot} \\ +\cross{OCT}{coerce} & +\cross{OCT}{conjugate} & +\cross{OCT}{convert} & +\cross{OCT}{eval} & +\cross{OCT}{hash} \\ +\cross{OCT}{imagE} & +\cross{OCT}{imagI} & +\cross{OCT}{imagJ} & +\cross{OCT}{imagK} & +\cross{OCT}{imagi} \\ +\cross{OCT}{imagj} & +\cross{OCT}{imagk} & +\cross{OCT}{index} & +\cross{OCT}{inv} & +\cross{OCT}{latex} \\ +\cross{OCT}{lookup} & +\cross{OCT}{map} & +\cross{OCT}{max} & +\cross{OCT}{min} & +\cross{OCT}{norm} \\ +\cross{OCT}{octon} & +\cross{OCT}{one?} & +\cross{OCT}{random} & +\cross{OCT}{rational} & +\cross{OCT}{rational?} \\ +\cross{OCT}{rationalIfCan} & +\cross{OCT}{real} & +\cross{OCT}{recip} & +\cross{OCT}{retract} & +\cross{OCT}{retractIfCan} \\ +\cross{OCT}{sample} & +\cross{OCT}{size} & +\cross{OCT}{subtractIfCan} & +\cross{OCT}{zero?} & +\cross{OCT}{?*?} \\ +\cross{OCT}{?**?} & +\cross{OCT}{?+?} & +\cross{OCT}{?-?} & +\cross{OCT}{-?} & +\cross{OCT}{?=?} \\ +\cross{OCT}{?\^{}?} & +\cross{OCT}{?\~{}=?} & +\cross{OCT}{?$<$?} & +\cross{OCT}{?$<=$?} & +\cross{OCT}{?$>$?} \\ +\cross{OCT}{?$>=$?} & +\cross{OCT}{?.?} &&& +\end{tabular} + <<domain OCT Octonion>>= )abbrev domain OCT Octonion ++ Author: R. Wisbauer, J. Grabmeier @@ -59387,6 +60933,17 @@ \section{domain ODEIFTBL ODEIntensityFunctionsTable} \pagehead{ODEIntensityFunctionsTable}{ODEIFTBL} \pagepic{ps/v103odeintensityfunctionstable.ps}{ODEIFTBL}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{llllll} +\cross{ODEIFTBL}{clearTheIFTable} & +\cross{ODEIFTBL}{iFTable} & +\cross{ODEIFTBL}{insert!} & +\cross{ODEIFTBL}{keys} & +\cross{ODEIFTBL}{showIntensityFunctions} & +\cross{ODEIFTBL}{showTheIFTable} +\end{tabular} + <<domain ODEIFTBL ODEIntensityFunctionsTable>>= )abbrev domain ODEIFTBL ODEIntensityFunctionsTable ++ Author: Brian Dupee @@ -59635,6 +61192,74 @@ \pageto{IndexedFlexibleArray}{IFARRAY} \pageto{FlexibleArray}{FARRAY} \pageto{IndexedOneDimensionalArray}{IARRAY1} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{ARRAY1}{any?} & +\cross{ARRAY1}{coerce} & +\cross{ARRAY1}{concat} & +\cross{ARRAY1}{construct} & +\cross{ARRAY1}{convert} \\ +\cross{ARRAY1}{copy} & +\cross{ARRAY1}{copyInto!} & +\cross{ARRAY1}{count} & +\cross{ARRAY1}{delete} & +\cross{ARRAY1}{elt} \\ +\cross{ARRAY1}{empty} & +\cross{ARRAY1}{empty?} & +\cross{ARRAY1}{entries} & +\cross{ARRAY1}{entry?} & +\cross{ARRAY1}{eq?} \\ +\cross{ARRAY1}{eval} & +\cross{ARRAY1}{every?} & +\cross{ARRAY1}{fill!} & +\cross{ARRAY1}{find} & +\cross{ARRAY1}{first} \\ +\cross{ARRAY1}{hash} & +\cross{ARRAY1}{index?} & +\cross{ARRAY1}{indices} & +\cross{ARRAY1}{insert} & +\cross{ARRAY1}{latex} \\ +\cross{ARRAY1}{less?} & +\cross{ARRAY1}{map} & +\cross{ARRAY1}{map!} & +\cross{ARRAY1}{max} & +\cross{ARRAY1}{maxIndex} \\ +\cross{ARRAY1}{member?} & +\cross{ARRAY1}{members} & +\cross{ARRAY1}{merge} & +\cross{ARRAY1}{min} & +\cross{ARRAY1}{minIndex} \\ +\cross{ARRAY1}{more?} & +\cross{ARRAY1}{new} & +\cross{ARRAY1}{oneDimensionalArray} & +\cross{ARRAY1}{parts} & +\cross{ARRAY1}{position} \\ +\cross{ARRAY1}{qelt} & +\cross{ARRAY1}{qsetelt!} & +\cross{ARRAY1}{reduce} & +\cross{ARRAY1}{remove} & +\cross{ARRAY1}{removeDuplicates} \\ +\cross{ARRAY1}{reverse} & +\cross{ARRAY1}{reverse!} & +\cross{ARRAY1}{sample} & +\cross{ARRAY1}{select} & +\cross{ARRAY1}{setelt} \\ +\cross{ARRAY1}{size?} & +\cross{ARRAY1}{sort} & +\cross{ARRAY1}{sort!} & +\cross{ARRAY1}{sorted?} & +\cross{ARRAY1}{swap!} \\ +\cross{ARRAY1}{\#{}?} & +\cross{ARRAY1}{?$<$?} & +\cross{ARRAY1}{?$<=$?} & +\cross{ARRAY1}{?=?} & +\cross{ARRAY1}{?$>$?} \\ +\cross{ARRAY1}{?$>=$?} & +\cross{ARRAY1}{?\~{}=?} & +\cross{ARRAY1}{?.?} && +\end{tabular} + <<domain ARRAY1 OneDimensionalArray>>= )abbrev domain ARRAY1 OneDimensionalArray ++ This is the domain of 1-based one dimensional arrays @@ -59674,6 +61299,49 @@ \pagepic{ps/v103onepointcompletion.ps}{ONECOMP}{1.00} {\bf See}\\ \pageto{OrderedCompletion}{ORDCOMP} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{ONECOMP}{0} & +\cross{ONECOMP}{1} & +\cross{ONECOMP}{abs} & +\cross{ONECOMP}{characteristic} & +\cross{ONECOMP}{coerce} \\ +\cross{ONECOMP}{coerce} & +\cross{ONECOMP}{finite?} & +\cross{ONECOMP}{hash} & +\cross{ONECOMP}{infinite?} & +\cross{ONECOMP}{infinity} \\ +\cross{ONECOMP}{latex} & +\cross{ONECOMP}{max} & +\cross{ONECOMP}{min} & +\cross{ONECOMP}{negative?} & +\cross{ONECOMP}{one?} \\ +\cross{ONECOMP}{positive?} & +\cross{ONECOMP}{rational} & +\cross{ONECOMP}{rational?} & +\cross{ONECOMP}{rationalIfCan} & +\cross{ONECOMP}{recip} \\ +\cross{ONECOMP}{retract} & +\cross{ONECOMP}{retractIfCan} & +\cross{ONECOMP}{sample} & +\cross{ONECOMP}{sign} & +\cross{ONECOMP}{subtractIfCan} \\ +\cross{ONECOMP}{zero?} & +\cross{ONECOMP}{-?} & +\cross{ONECOMP}{?=?} & +\cross{ONECOMP}{?\~{}=?} & +\cross{ONECOMP}{?*?} \\ +\cross{ONECOMP}{?**?} & +\cross{ONECOMP}{?+?} & +\cross{ONECOMP}{?-?} & +\cross{ONECOMP}{?$<$?} & +\cross{ONECOMP}{?$<=$?} \\ +\cross{ONECOMP}{?$>$?} & +\cross{ONECOMP}{?$>=$?} & +\cross{ONECOMP}{?\^{}?} && +\end{tabular} + <<domain ONECOMP OnePointCompletion>>= )abbrev domain ONECOMP OnePointCompletion ++ Completion with infinity @@ -59790,6 +61458,17 @@ {\bf See}\\ \pageto{OpenMathEncoding}{OMENC} \pageto{OpenMathDevice}{OMDEV} + +{\bf Exports:}\\ +\begin{tabular}{llllll} +\cross{OMCONN}{OMbindTCP} & +\cross{OMCONN}{OMcloseConn} & +\cross{OMCONN}{OMconnectTCP} & +\cross{OMCONN}{OMconnInDevice} & +\cross{OMCONN}{OMconnOutDevice} & +\cross{OMCONN}{OMmakeConn} +\end{tabular} + <<domain OMCONN OpenMathConnection>>= )abbrev domain OMCONN OpenMathConnection ++ Author: Vilya Harvey @@ -59839,6 +61518,54 @@ {\bf See}\\ \pageto{OpenMathEncoding}{OMENC} \pageto{OpenMathConnection}{OMCONN} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{OMDEV}{OMclose} & +\cross{OMDEV}{OMgetApp} & +\cross{OMDEV}{OMgetAtp} & +\cross{OMDEV}{OMgetAttr} & +\cross{OMDEV}{OMgetBVar} \\ +\cross{OMDEV}{OMgetBind} & +\cross{OMDEV}{OMgetEndApp} & +\cross{OMDEV}{OMgetEndAtp} & +\cross{OMDEV}{OMgetEndAttr} & +\cross{OMDEV}{OMgetEndBVar} \\ +\cross{OMDEV}{OMgetEndBind} & +\cross{OMDEV}{OMgetEndError} & +\cross{OMDEV}{OMgetEndObject} & +\cross{OMDEV}{OMgetError} & +\cross{OMDEV}{OMgetFloat} \\ +\cross{OMDEV}{OMgetInteger} & +\cross{OMDEV}{OMgetObject} & +\cross{OMDEV}{OMgetString} & +\cross{OMDEV}{OMgetType} & +\cross{OMDEV}{OMgetVariable} \\ +\cross{OMDEV}{OMputApp} & +\cross{OMDEV}{OMputAtp} & +\cross{OMDEV}{OMputAttr} & +\cross{OMDEV}{OMputBVar} & +\cross{OMDEV}{OMputBind} \\ +\cross{OMDEV}{OMputEndApp} & +\cross{OMDEV}{OMputEndAtp} & +\cross{OMDEV}{OMputEndAttr} & +\cross{OMDEV}{OMputEndBVar} & +\cross{OMDEV}{OMputEndBind} \\ +\cross{OMDEV}{OMputEndError} & +\cross{OMDEV}{OMputEndObject} & +\cross{OMDEV}{OMputError} & +\cross{OMDEV}{OMputObject} & +\cross{OMDEV}{OMputString} \\ +\cross{OMDEV}{OMgetSymbol} & +\cross{OMDEV}{OMopenFile} & +\cross{OMDEV}{OMopenString} & +\cross{OMDEV}{OMputFloat} & +\cross{OMDEV}{OMputInteger} \\ +\cross{OMDEV}{OMputSymbol} & +\cross{OMDEV}{OMputVariable} & +\cross{OMDEV}{OMsetEncoding} && +\end{tabular} + <<domain OMDEV OpenMathDevice>>= )abbrev domain OMDEV OpenMathDevice ++ Author: Vilya Harvey @@ -60017,6 +61744,20 @@ {\bf See}\\ \pageto{OpenMathDevice}{OMDEV} \pageto{OpenMathConnection}{OMCONN} + +{\bf Exports:}\\ +\begin{tabular}{lllllllll} +\cross{OMENC}{coerce} & +\cross{OMENC}{hash} & +\cross{OMENC}{latex} & +\cross{OMENC}{OMencodingBinary} & +\cross{OMENC}{OMencodingSGML} & +\cross{OMENC}{OMencodingUnknown} & +\cross{OMENC}{OMencodingXML} & +\cross{OMENC}{?=?} & +\cross{OMENC}{?\~{}=?} +\end{tabular} + <<domain OMENC OpenMathEncoding>>= )abbrev domain OMENC OpenMathEncoding ++ Author: Vilya Harvey @@ -60075,6 +61816,19 @@ \pagepic{ps/v103openmatherror.ps}{OMERR}{1.00} {\bf See}\\ \pageto{OpenMathErrorKind}{OMERRK} + +{\bf Exports:}\\ +\begin{tabular}{llllllll} +\cross{OMERR}{coerce} & +\cross{OMERR}{errorInfo} & +\cross{OMERR}{errorKind} & +\cross{OMERR}{hash} & +\cross{OMERR}{latex} & +\cross{OMERR}{omError} & +\cross{OMERR}{?=?} & +\cross{OMERR}{?~=?} +\end{tabular} + <<domain OMERR OpenMathError>>= )abbrev domain OMERR OpenMathError ++ Author: Vilya Harvey @@ -60132,6 +61886,20 @@ \pagepic{ps/v103openmatherrorkind.ps}{OMERRK}{1.00} {\bf See}\\ \pageto{OpenMathError}{OMERR} + +{\bf Exports:}\\ +\begin{tabular}{lllllllll} +\cross{OMERRK}{OMParseError?} & +\cross{OMERRK}{OMReadError?} & +\cross{OMERRK}{OMUnknownCD?} & +\cross{OMERRK}{OMUnknownSymbol?} & +\cross{OMERRK}{coerce} & +\cross{OMERRK}{hash} & +\cross{OMERRK}{latex} & +\cross{OMERRK}{?=?} & +\cross{OMERRK}{?\~{}=?} +\end{tabular} + <<domain OMERRK OpenMathErrorKind>>= )abbrev domain OMERRK OpenMathErrorKind ++ Author: Vilya Harvey @@ -60578,6 +62346,40 @@ \pagepic{ps/v103operator.ps}{OP}{1.00} {\bf See}\\ \pageto{ModuleOperator}{MODOP} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{MODOP}{0} & +\cross{MODOP}{1} & +\cross{MODOP}{adjoint} & +\cross{MODOP}{characteristic} & +\cross{MODOP}{charthRoot} \\ +\cross{MODOP}{coerce} & +\cross{MODOP}{conjug} & +\cross{MODOP}{evaluate} & +\cross{MODOP}{evaluateInverse} & +\cross{MODOP}{makeop} \\ +\cross{MODOP}{hash} & +\cross{MODOP}{latex} & +\cross{MODOP}{one?} & +\cross{MODOP}{opeval} & +\cross{MODOP}{recip} \\ +\cross{MODOP}{retract} & +\cross{MODOP}{retractIfCan} & +\cross{MODOP}{sample} & +\cross{MODOP}{subtractIfCan} & +\cross{MODOP}{zero?} \\ +\cross{MODOP}{?\~{}=?} & +\cross{MODOP}{?*?} & +\cross{MODOP}{?**?} & +\cross{MODOP}{?\^{}?} & +\cross{MODOP}{?.?} \\ +\cross{MODOP}{?+?} & +\cross{MODOP}{?-?} & +\cross{MODOP}{-?} & +\cross{MODOP}{?=?} & +\end{tabular} + <<domain OP Operator>>= )abbrev domain OP Operator ++ Author: Manuel Bronstein @@ -60602,6 +62404,40 @@ \pageto{OrdinaryDifferentialRing}{ODR} \pageto{DirectProductModule}{DPMO} \pageto{DirectProductMatrixModule}{DPMM} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{OMLO}{0} & +\cross{OMLO}{1} & +\cross{OMLO}{characteristic} & +\cross{OMLO}{coefficient} & +\cross{OMLO}{coerce} \\ +\cross{OMLO}{D} & +\cross{OMLO}{degree} & +\cross{OMLO}{differentiate} & +\cross{OMLO}{hash} & +\cross{OMLO}{latex} \\ +\cross{OMLO}{leadingCoefficient} & +\cross{OMLO}{minimumDegree} & +\cross{OMLO}{monomial} & +\cross{OMLO}{one?} & +\cross{OMLO}{op} \\ +\cross{OMLO}{po} & +\cross{OMLO}{recip} & +\cross{OMLO}{reductum} & +\cross{OMLO}{sample} & +\cross{OMLO}{subtractIfCan} \\ +\cross{OMLO}{zero?} & +\cross{OMLO}{?\^{}?} & +\cross{OMLO}{?\~{}=?} & +\cross{OMLO}{?*?} & +\cross{OMLO}{?**?} \\ +\cross{OMLO}{?+?} & +\cross{OMLO}{?-?} & +\cross{OMLO}{-?} & +\cross{OMLO}{?=?} & +\end{tabular} + <<domain OMLO OppositeMonogenicLinearOperator>>= )abbrev domain OMLO OppositeMonogenicLinearOperator ++ Author: Stephen M. Watt @@ -60651,6 +62487,50 @@ \pagepic{ps/v103orderedcompletion.ps}{ORDCOMP}{1.00} {\bf See}\\ \pageto{OnePointCompletion}{ONECOMP} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{ORDCOMP}{0} & +\cross{ORDCOMP}{1} & +\cross{ORDCOMP}{abs} & +\cross{ORDCOMP}{characteristic} & +\cross{ORDCOMP}{coerce} \\ +\cross{ORDCOMP}{finite?} & +\cross{ORDCOMP}{hash} & +\cross{ORDCOMP}{infinite?} & +\cross{ORDCOMP}{latex} & +\cross{ORDCOMP}{max} \\ +\cross{ORDCOMP}{min} & +\cross{ORDCOMP}{minusInfinity} & +\cross{ORDCOMP}{negative?} & +\cross{ORDCOMP}{one?} & +\cross{ORDCOMP}{plusInfinity} \\ +\cross{ORDCOMP}{positive?} & +\cross{ORDCOMP}{rational} & +\cross{ORDCOMP}{rational?} & +\cross{ORDCOMP}{rationalIfCan} & +\cross{ORDCOMP}{recip} \\ +\cross{ORDCOMP}{retract} & +\cross{ORDCOMP}{retractIfCan} & +\cross{ORDCOMP}{sample} & +\cross{ORDCOMP}{sign} & +\cross{ORDCOMP}{subtractIfCan} \\ +\cross{ORDCOMP}{whatInfinity} & +\cross{ORDCOMP}{zero?} & +\cross{ORDCOMP}{?\~{}=?} & +\cross{ORDCOMP}{?*?} & +\cross{ORDCOMP}{?**?} \\ +\cross{ORDCOMP}{?+?} & +\cross{ORDCOMP}{?-?} & +\cross{ORDCOMP}{?$<$?} & +\cross{ORDCOMP}{?$<=$?} & +\cross{ORDCOMP}{?$>$?} \\ +\cross{ORDCOMP}{?$>=$?} & +\cross{ORDCOMP}{?\^{}?} & +\cross{ORDCOMP}{-?} & +\cross{ORDCOMP}{?=?} & +\end{tabular} + <<domain ORDCOMP OrderedCompletion>>= )abbrev domain ORDCOMP OrderedCompletion ++ Completion with + and - infinity @@ -60793,6 +62673,86 @@ {\bf See}\\ \pageto{HomogeneousDirectProduct}{HDP} \pageto{SplitHomogeneousDirectProduct}{SHDP} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{ODP}{0} & +\cross{ODP}{1} & +\cross{ODP}{abs} & +\cross{ODP}{any?} & +\cross{ODP}{characteristic} \\ +\cross{ODP}{coerce} & +\cross{ODP}{copy} & +\cross{ODP}{count} & +\cross{ODP}{D} & +\cross{ODP}{differentiate} \\ +\cross{ODP}{dimension} & +\cross{ODP}{directProduct} & +\cross{ODP}{dot} & +\cross{ODP}{elt} & +\cross{ODP}{empty} \\ +\cross{ODP}{empty?} & +\cross{ODP}{entries} & +\cross{ODP}{entry?} & +\cross{ODP}{eq?} & +\cross{ODP}{eval} \\ +\cross{ODP}{every?} & +\cross{ODP}{fill!} & +\cross{ODP}{first} & +\cross{ODP}{hash} & +\cross{ODP}{index} \\ +\cross{ODP}{index?} & +\cross{ODP}{indices} & +\cross{ODP}{latex} & +\cross{ODP}{less?} & +\cross{ODP}{lookup} \\ +\cross{ODP}{map} & +\cross{ODP}{map!} & +\cross{ODP}{max} & +\cross{ODP}{maxIndex} & +\cross{ODP}{member?} \\ +\cross{ODP}{members} & +\cross{ODP}{min} & +\cross{ODP}{minIndex} & +\cross{ODP}{more?} & +\cross{ODP}{negative?} \\ +\cross{ODP}{one?} & +\cross{ODP}{parts} & +\cross{ODP}{positive?} & +\cross{ODP}{qelt} & +\cross{ODP}{qsetelt!} \\ +\cross{ODP}{random} & +\cross{ODP}{recip} & +\cross{ODP}{reducedSystem} & +\cross{ODP}{retract} & +\cross{ODP}{retractIfCan} \\ +\cross{ODP}{sample} & +\cross{ODP}{setelt} & +\cross{ODP}{sign} & +\cross{ODP}{size} & +\cross{ODP}{size?} \\ +\cross{ODP}{subtractIfCan} & +\cross{ODP}{sup} & +\cross{ODP}{swap!} & +\cross{ODP}{unitVector} & +\cross{ODP}{zero?} \\ +\cross{ODP}{\#{}?} & +\cross{ODP}{?*?} & +\cross{ODP}{?**?} & +\cross{ODP}{?+?} & +\cross{ODP}{?-?} \\ +\cross{ODP}{?/?} & +\cross{ODP}{?$<$?} & +\cross{ODP}{?$<=$?} & +\cross{ODP}{?=?} & +\cross{ODP}{?$>$?} \\ +\cross{ODP}{?$>=$?} & +\cross{ODP}{?\^{}?} & +\cross{ODP}{?\~{}=?} & +\cross{ODP}{-?} & +\cross{ODP}{?.?} +\end{tabular} + <<domain ODP OrderedDirectProduct>>= )abbrev domain ODP OrderedDirectProduct -- all direct product category domains must be compiled @@ -60835,6 +62795,47 @@ \section{domain OFMONOID OrderedFreeMonoid} \pagehead{OrderedFreeMonoid}{OFMONOID} \pagepic{ps/v103orderedfreemonoid.ps}{OFMONOID}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{OFMONOID}{1} & +\cross{OFMONOID}{coerce} & +\cross{OFMONOID}{factors} & +\cross{OFMONOID}{first} & +\cross{OFMONOID}{hash} \\ +\cross{OFMONOID}{hclf} & +\cross{OFMONOID}{hcrf} & +\cross{OFMONOID}{latex} & +\cross{OFMONOID}{length} & +\cross{OFMONOID}{lexico} \\ +\cross{OFMONOID}{lquo} & +\cross{OFMONOID}{max} & +\cross{OFMONOID}{min} & +\cross{OFMONOID}{mirror} & +\cross{OFMONOID}{nthExpon} \\ +\cross{OFMONOID}{nthFactor} & +\cross{OFMONOID}{one?} & +\cross{OFMONOID}{overlap} & +\cross{OFMONOID}{recip} & +\cross{OFMONOID}{rest} \\ +\cross... [truncated message content] |
From: <gi...@ax...> - 2009-01-17 09:09:05
|
books/bookvol10.3.pamphlet | 3516 +++++++++++++++++++++++++++++++++++++++- changelog | 2 + src/axiom-website/patches.html | 2 + 3 files changed, 3512 insertions(+), 8 deletions(-) New commits: commit 6c7f54fba24364b52b5a9b5baf8e511f8cf43ebb Author: root <root@bob.(none)> Date: Sat Jan 17 04:07:01 2009 -0500 20090116 tpd src/axiom-website/patches.html 20090116.03.tpd.patch 20090116 tpd books/bookvol10.3 add exports |
From: <gi...@ax...> - 2009-01-16 23:40:04
|
books/bookvol10.3.pamphlet | 890 +++++++++++++++++++++++++++++++++++++++- changelog | 2 + src/axiom-website/patches.html | 2 + 3 files changed, 893 insertions(+), 1 deletions(-) New commits: commit 9ff82bb05f7576cd152927d7565e84de8fa01747 Author: root <root@bob.(none)> Date: Fri Jan 16 17:16:36 2009 -0500 20090116 tpd src/axiom-website/patches.html 20090116.02.tpd.patch 20090116 tpd books/bookvol10.3 add exports |
From: <da...@us...> - 2009-01-16 22:52:51
|
Revision: 1084 http://axiom.svn.sourceforge.net/axiom/?rev=1084&view=rev Author: daly Date: 2009-01-16 22:17:24 +0000 (Fri, 16 Jan 2009) Log Message: ----------- 20090116 tpd src/axiom-website/patches.html 20090116.02.tpd.patch 20090116 tpd books/bookvol10.3 add exports Modified Paths: -------------- trunk/axiom/books/bookvol10.3.pamphlet trunk/axiom/changelog trunk/axiom/src/axiom-website/patches.html Modified: trunk/axiom/books/bookvol10.3.pamphlet =================================================================== --- trunk/axiom/books/bookvol10.3.pamphlet 2009-01-16 15:51:45 UTC (rev 1083) +++ trunk/axiom/books/bookvol10.3.pamphlet 2009-01-16 22:17:24 UTC (rev 1084) @@ -9995,7 +9995,7 @@ --S 10 of 20 countable? A0 -uon --R +--R --R --R (10) true --R Type: Boolean @@ -48123,6 +48123,32 @@ \pagepic{ps/v103kernel.ps}{KERNEL}{1.00} {\bf See}\\ \pageto{MakeCachableSet}{MKCHSET} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{KERNEL}{argument} & +\cross{KERNEL}{coerce} & +\cross{KERNEL}{convert} & +\cross{KERNEL}{hash} & +\cross{KERNEL}{height} \\ +\cross{KERNEL}{is?} & +\cross{KERNEL}{kernel} & +\cross{KERNEL}{latex} & +\cross{KERNEL}{max} & +\cross{KERNEL}{min} \\ +\cross{KERNEL}{name} & +\cross{KERNEL}{operator} & +\cross{KERNEL}{position} & +\cross{KERNEL}{setPosition} & +\cross{KERNEL}{symbolIfCan} \\ +\cross{KERNEL}{?\~{}=?} & +\cross{KERNEL}{?$<$?} & +\cross{KERNEL}{?$<=$?} & +\cross{KERNEL}{?=?} & +\cross{KERNEL}{?$>$?} \\ +\cross{KERNEL}{?$>=$?} &&&& +\end{tabular} + <<domain KERNEL Kernel>>= )abbrev domain KERNEL Kernel ++ Operators applied to elements of a set @@ -48408,6 +48434,78 @@ \pageto{TextFile}{TEXTFILE} \pageto{BinaryFile}{BINFILE} \pageto{Library}{LIB} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{KAFILE}{any?} & +\cross{KAFILE}{any?} & +\cross{KAFILE}{bag} & +\cross{KAFILE}{close!} & +\cross{KAFILE}{coerce} \\ +\cross{KAFILE}{construct} & +\cross{KAFILE}{convert} & +\cross{KAFILE}{copy} & +\cross{KAFILE}{count} & +\cross{KAFILE}{count} \\ +\cross{KAFILE}{dictionary} & +\cross{KAFILE}{elt} & +\cross{KAFILE}{empty} & +\cross{KAFILE}{empty?} & +\cross{KAFILE}{entries} \\ +\cross{KAFILE}{entry?} & +\cross{KAFILE}{eq?} & +\cross{KAFILE}{eval} & +\cross{KAFILE}{every?} & +\cross{KAFILE}{every?} \\ +\cross{KAFILE}{extract!} & +\cross{KAFILE}{fill!} & +\cross{KAFILE}{find} & +\cross{KAFILE}{first} & +\cross{KAFILE}{hash} \\ +\cross{KAFILE}{index?} & +\cross{KAFILE}{indices} & +\cross{KAFILE}{insert!} & +\cross{KAFILE}{inspect} & +\cross{KAFILE}{iomode} \\ +\cross{KAFILE}{key?} & +\cross{KAFILE}{keys} & +\cross{KAFILE}{latex} & +\cross{KAFILE}{less?} & +\cross{KAFILE}{map} \\ +\cross{KAFILE}{map!} & +\cross{KAFILE}{maxIndex} & +\cross{KAFILE}{member?} & +\cross{KAFILE}{members} & +\cross{KAFILE}{minIndex} \\ +\cross{KAFILE}{more?} & +\cross{KAFILE}{name} & +\cross{KAFILE}{open} & +\cross{KAFILE}{pack!} & +\cross{KAFILE}{parts} \\ +\cross{KAFILE}{parts} & +\cross{KAFILE}{qelt} & +\cross{KAFILE}{qsetelt!} & +\cross{KAFILE}{read!} & +\cross{KAFILE}{reduce} \\ +\cross{KAFILE}{remove} & +\cross{KAFILE}{remove!} & +\cross{KAFILE}{removeDuplicates} & +\cross{KAFILE}{reopen!} & +\cross{KAFILE}{sample} \\ +\cross{KAFILE}{search} & +\cross{KAFILE}{select} & +\cross{KAFILE}{select!} & +\cross{KAFILE}{setelt} & +\cross{KAFILE}{size?} \\ +\cross{KAFILE}{swap!} & +\cross{KAFILE}{table} & +\cross{KAFILE}{write!} & +\cross{KAFILE}{\#{}?} & +\cross{KAFILE}{?\~{}=?} \\ +\cross{KAFILE}{?=?} & +\cross{KAFILE}{?.?} &&& +\end{tabular} + <<domain KAFILE KeyedAccessFile>>= )abbrev domain KAFILE KeyedAccessFile ++ Author: Stephen M. Watt @@ -48549,6 +48647,62 @@ \section{domain LAUPOL LaurentPolynomial} \pagehead{LaurentPolynomial}{LAUPOL} \pagepic{ps/v103laurentpolynomial.ps}{LAUPOL}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{lll} +\cross{LAUPOL}{0} & +\cross{LAUPOL}{1} & +\cross{LAUPOL}{associates?} \\ +\cross{LAUPOL}{characteristic} & +\cross{LAUPOL}{charthRoot} & +\cross{LAUPOL}{coefficient} \\ +\cross{LAUPOL}{coerce} & +\cross{LAUPOL}{convert} & +\cross{LAUPOL}{D} \\ +\cross{LAUPOL}{degree} & +\cross{LAUPOL}{differentiate} & +\cross{LAUPOL}{divide} \\ +\cross{LAUPOL}{euclideanSize} & +\cross{LAUPOL}{expressIdealMember} & +\cross{LAUPOL}{exquo} \\ +\cross{LAUPOL}{extendedEuclidean} & +\cross{LAUPOL}{gcd} & +\cross{LAUPOL}{gcdPolynomial} \\ +\cross{LAUPOL}{hash} & +\cross{LAUPOL}{latex} & +\cross{LAUPOL}{lcm} \\ +\cross{LAUPOL}{leadingCoefficient} & +\cross{LAUPOL}{monomial} & +\cross{LAUPOL}{monomial?} \\ +\cross{LAUPOL}{multiEuclidean} & +\cross{LAUPOL}{one?} & +\cross{LAUPOL}{order} \\ +\cross{LAUPOL}{principalIdeal} & +\cross{LAUPOL}{recip} & +\cross{LAUPOL}{reductum} \\ +\cross{LAUPOL}{retract} & +\cross{LAUPOL}{retractIfCan} & +\cross{LAUPOL}{sample} \\ +\cross{LAUPOL}{separate} & +\cross{LAUPOL}{sizeLess?} & +\cross{LAUPOL}{subtractIfCan} \\ +\cross{LAUPOL}{trailingCoefficient} & +\cross{LAUPOL}{unit?} & +\cross{LAUPOL}{unitCanonical} \\ +\cross{LAUPOL}{unitNormal} & +\cross{LAUPOL}{zero?} & +\cross{LAUPOL}{?*?} \\ +\cross{LAUPOL}{?**?} & +\cross{LAUPOL}{?+?} & +\cross{LAUPOL}{?-?} \\ +\cross{LAUPOL}{-?} & +\cross{LAUPOL}{?=?} & +\cross{LAUPOL}{?\^{}?} \\ +\cross{LAUPOL}{?\~{}=?} & +\cross{LAUPOL}{?quo?} & +\cross{LAUPOL}{?rem?} +\end{tabular} + <<domain LAUPOL LaurentPolynomial>>= )abbrev domain LAUPOL LaurentPolynomial ++ Univariate polynomials with negative and positive exponents. @@ -48786,6 +48940,71 @@ \pageto{TextFile}{TEXTFILE} \pageto{BinaryFile}{BINFILE} \pageto{KeyedAccessFile}{KAFILE} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{LIB}{any?} & +\cross{LIB}{any?} & +\cross{LIB}{bag} & +\cross{LIB}{close!} & +\cross{LIB}{coerce} \\ +\cross{LIB}{copy} & +\cross{LIB}{construct} & +\cross{LIB}{convert} & +\cross{LIB}{count} & +\cross{LIB}{dictionary} \\ +\cross{LIB}{elt} & +\cross{LIB}{empty} & +\cross{LIB}{empty?} & +\cross{LIB}{entries} & +\cross{LIB}{entry?} \\ +\cross{LIB}{eq?} & +\cross{LIB}{eval} & +\cross{LIB}{every?} & +\cross{LIB}{every?} & +\cross{LIB}{extract!} \\ +\cross{LIB}{fill!} & +\cross{LIB}{find} & +\cross{LIB}{first} & +\cross{LIB}{hash} & +\cross{LIB}{index?} \\ +\cross{LIB}{indices} & +\cross{LIB}{insert!} & +\cross{LIB}{inspect} & +\cross{LIB}{key?} & +\cross{LIB}{keys} \\ +\cross{LIB}{latex} & +\cross{LIB}{less?} & +\cross{LIB}{library} & +\cross{LIB}{map} & +\cross{LIB}{map!} \\ +\cross{LIB}{maxIndex} & +\cross{LIB}{member?} & +\cross{LIB}{members} & +\cross{LIB}{minIndex} & +\cross{LIB}{more?} \\ +\cross{LIB}{pack!} & +\cross{LIB}{parts} & +\cross{LIB}{qelt} & +\cross{LIB}{qsetelt!} & +\cross{LIB}{reduce} \\ +\cross{LIB}{remove} & +\cross{LIB}{remove!} & +\cross{LIB}{removeDuplicates} & +\cross{LIB}{sample} & +\cross{LIB}{search} \\ +\cross{LIB}{select} & +\cross{LIB}{select!} & +\cross{LIB}{setelt} & +\cross{LIB}{size?} & +\cross{LIB}{swap!} \\ +\cross{LIB}{table} & +\cross{LIB}{\#{}?} & +\cross{LIB}{?=?} & +\cross{LIB}{?\~{}=?} & +\cross{LIB}{?.?} +\end{tabular} + <<domain LIB Library>>= )abbrev domain LIB Library ++ Author: Stephen M. Watt @@ -49053,6 +49272,35 @@ @ \pagehead{LieExponentials}{LEXP} \pagepic{ps/v103lieexponentials.ps}{LEXP}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{llll} +\cross{LEXP}{1} & +\cross{LEXP}{coerce} & +\cross{LEXP}{commutator} & +\cross{LEXP}{conjugate} \\ +\cross{LEXP}{exp} & +\cross{LEXP}{hash} & +\cross{LEXP}{identification} & +\cross{LEXP}{inv} \\ +\cross{LEXP}{latex} & +\cross{LEXP}{log} & +\cross{LEXP}{ListOfTerms} & +\cross{LEXP}{LyndonBasis} \\ +\cross{LEXP}{LyndonCoordinates} & +\cross{LEXP}{mirror} & +\cross{LEXP}{one?} & +\cross{LEXP}{recip} \\ +\cross{LEXP}{sample} & +\cross{LEXP}{varList} & +\cross{LEXP}{?\~{}=?} & +\cross{LEXP}{?\^{}?} \\ +\cross{LEXP}{?*?} & +\cross{LEXP}{?**?} & +\cross{LEXP}{?/?} & +\cross{LEXP}{?=?} +\end{tabular} + <<domain LEXP LieExponentials>>= )abbrev domain LEXP LieExponentials ++ Author: Michel Petitot (pe...@li...). @@ -49599,6 +49847,50 @@ @ \pagehead{LiePolynomial}{LPOLY} \pagepic{ps/v103liepolynomial.ps}{LPOLY}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{llll} +\cross{LPOLY}{0} & +\cross{LPOLY}{coef} & +\cross{LPOLY}{coefficient} & +\cross{LPOLY}{coefficients} \\ +\cross{LPOLY}{coerce} & +\cross{LPOLY}{construct} & +\cross{LPOLY}{degree} & +\cross{LPOLY}{eval} \\ +\cross{LPOLY}{hash} & +\cross{LPOLY}{latex} & +\cross{LPOLY}{leadingCoefficient} & +\cross{LPOLY}{leadingMonomial} \\ +\cross{LPOLY}{leadingTerm} & +\cross{LPOLY}{LiePoly} & +\cross{LPOLY}{LiePolyIfCan} & +\cross{LPOLY}{ListOfTerms} \\ +\cross{LPOLY}{lquo} & +\cross{LPOLY}{map} & +\cross{LPOLY}{mirror} & +\cross{LPOLY}{monom} \\ +\cross{LPOLY}{monomial?} & +\cross{LPOLY}{monomials} & +\cross{LPOLY}{numberOfMonomials} & +\cross{LPOLY}{reductum} \\ +\cross{LPOLY}{retract} & +\cross{LPOLY}{retractIfCan} & +\cross{LPOLY}{rquo} & +\cross{LPOLY}{sample} \\ +\cross{LPOLY}{subtractIfCan} & +\cross{LPOLY}{trunc} & +\cross{LPOLY}{varList} & +\cross{LPOLY}{zero?} \\ +\cross{LPOLY}{?\~{}=?} & +\cross{LPOLY}{?*?} & +\cross{LPOLY}{?/?} & +\cross{LPOLY}{?+?} \\ +\cross{LPOLY}{?-?} & +\cross{LPOLY}{-?} & +\cross{LPOLY}{?=?} +\end{tabular} + <<domain LPOLY LiePolynomial>>= )abbrev domain LPOLY LiePolynomial ++ Author: Michel Petitot (pe...@li...). @@ -49806,6 +50098,139 @@ {\bf See}\\ \pageto{AssociatedLieAlgebra}{LIE} \pageto{AssociatedJordanAlgebra}{JORDAN} + +{\bf Exports:}\\ +\begin{tabular}{ll} +\cross{LSQM}{0} & +\cross{LSQM}{1} \\ +\cross{LSQM}{alternative?} & +\cross{LSQM}{antiAssociative?} \\ +\cross{LSQM}{antiCommutator} & +\cross{LSQM}{antisymmetric?} \\ +\cross{LSQM}{any?} & +\cross{LSQM}{apply} \\ +\cross{LSQM}{associative?} & +\cross{LSQM}{associator} \\ +\cross{LSQM}{associatorDependence} & +\cross{LSQM}{basis} \\ +\cross{LSQM}{characteristic} & +\cross{LSQM}{coerce} \\ +\cross{LSQM}{column} & +\cross{LSQM}{commutative?} \\ +\cross{LSQM}{commutator} & +\cross{LSQM}{conditionsForIdempotents} \\ +\cross{LSQM}{convert} & +\cross{LSQM}{coordinates} \\ +\cross{LSQM}{copy} & +\cross{LSQM}{count} \\ +\cross{LSQM}{D} & +\cross{LSQM}{determinant} \\ +\cross{LSQM}{diagonal} & +\cross{LSQM}{diagonal?} \\ +\cross{LSQM}{diagonalMatrix} & +\cross{LSQM}{diagonalProduct} \\ +\cross{LSQM}{differentiate} & +\cross{LSQM}{elt} \\ +\cross{LSQM}{empty} & +\cross{LSQM}{empty?} \\ +\cross{LSQM}{eq?} & +\cross{LSQM}{eval} \\ +\cross{LSQM}{every?} & +\cross{LSQM}{exquo} \\ +\cross{LSQM}{flexible?} & +\cross{LSQM}{hash} \\ +\cross{LSQM}{inverse} & +\cross{LSQM}{jacobiIdentity?} \\ +\cross{LSQM}{jordanAdmissible?} & +\cross{LSQM}{jordanAlgebra?} \\ +\cross{LSQM}{latex} & +\cross{LSQM}{leftAlternative?} \\ +\cross{LSQM}{leftCharacteristicPolynomial} & +\cross{LSQM}{leftDiscriminant} \\ +\cross{LSQM}{leftDiscriminant} & +\cross{LSQM}{leftMinimalPolynomial} \\ +\cross{LSQM}{leftNorm} & +\cross{LSQM}{leftPower} \\ +\cross{LSQM}{leftRankPolynomial} & +\cross{LSQM}{leftRecip} \\ +\cross{LSQM}{leftRegularRepresentation} & +\cross{LSQM}{leftRegularRepresentation} \\ +\cross{LSQM}{leftTrace} & +\cross{LSQM}{leftTraceMatrix} \\ +\cross{LSQM}{leftUnit} & +\cross{LSQM}{leftUnits} \\ +\cross{LSQM}{less?} & +\cross{LSQM}{lieAdmissible?} \\ +\cross{LSQM}{lieAlgebra?} & +\cross{LSQM}{listOfLists} \\ +\cross{LSQM}{map} & +\cross{LSQM}{map!} \\ +\cross{LSQM}{matrix} & +\cross{LSQM}{maxColIndex} \\ +\cross{LSQM}{maxRowIndex} & +\cross{LSQM}{member?} \\ +\cross{LSQM}{members} & +\cross{LSQM}{minColIndex} \\ +\cross{LSQM}{minordet} & +\cross{LSQM}{minRowIndex} \\ +\cross{LSQM}{more?} & +\cross{LSQM}{ncols} \\ +\cross{LSQM}{noncommutativeJordanAlgebra?} & +\cross{LSQM}{nrows} \\ +\cross{LSQM}{nullSpace} & +\cross{LSQM}{nullity} \\ +\cross{LSQM}{one?} & +\cross{LSQM}{parts} \\ +\cross{LSQM}{plenaryPower} & +\cross{LSQM}{powerAssociative?} \\ +\cross{LSQM}{qelt} & +\cross{LSQM}{rank} \\ +\cross{LSQM}{recip} & +\cross{LSQM}{reducedSystem} \\ +\cross{LSQM}{represents} & +\cross{LSQM}{retract} \\ +\cross{LSQM}{retractIfCan} & +\cross{LSQM}{rightAlternative?} \\ +\cross{LSQM}{rightCharacteristicPolynomial} & +\cross{LSQM}{rightDiscriminant} \\ +\cross{LSQM}{rightMinimalPolynomial} & +\cross{LSQM}{rightNorm} \\ +\cross{LSQM}{rightPower} & +\cross{LSQM}{rightRankPolynomial} \\ +\cross{LSQM}{rightRecip} & +\cross{LSQM}{rightRegularRepresentation} \\ +\cross{LSQM}{rightRegularRepresentation} & +\cross{LSQM}{rightTrace} \\ +\cross{LSQM}{rightTraceMatrix} & +\cross{LSQM}{rightUnit} \\ +\cross{LSQM}{rightUnits} & +\cross{LSQM}{row} \\ +\cross{LSQM}{rowEchelon} & +\cross{LSQM}{sample} \\ +\cross{LSQM}{scalarMatrix} & +\cross{LSQM}{size?} \\ +\cross{LSQM}{someBasis} & +\cross{LSQM}{square?} \\ +\cross{LSQM}{structuralConstants} & +\cross{LSQM}{structuralConstants} \\ +\cross{LSQM}{subtractIfCan} & +\cross{LSQM}{symmetric?} \\ +\cross{LSQM}{trace} & +\cross{LSQM}{unit} \\ +\cross{LSQM}{zero?} & +\cross{LSQM}{\#{}?} \\ +\cross{LSQM}{?\~{}=?} & +\cross{LSQM}{?*?} \\ +\cross{LSQM}{?**?} & +\cross{LSQM}{?+?} \\ +\cross{LSQM}{?-?} & +\cross{LSQM}{-?} \\ +\cross{LSQM}{?/?} & +\cross{LSQM}{?=?} \\ +\cross{LSQM}{?\^{}?} & +\cross{LSQM}{?.?} +\end{tabular} + <<domain LSQM LieSquareMatrix>>= )abbrev domain LSQM LieSquareMatrix ++ Author: J. Grabmeier @@ -50392,6 +50817,66 @@ {\bf See}\\ \pageto{LinearOrdinaryDifferentialOperator1}{LODO1} \pageto{LinearOrdinaryDifferentialOperator2}{LODO2} + +{\bf Exports:}\\ +\begin{tabular}{lll} +\cross{LODO}{0} & +\cross{LODO}{1} & +\cross{LODO}{adjoint} \\ +\cross{LODO}{apply} & +\cross{LODO}{characteristic} & +\cross{LODO}{coefficient} \\ +\cross{LODO}{coefficients} & +\cross{LODO}{coerce} & +\cross{LODO}{content} \\ +\cross{LODO}{D} & +\cross{LODO}{degree} & +\cross{LODO}{directSum} \\ +\cross{LODO}{exquo} & +\cross{LODO}{hash} & +\cross{LODO}{latex} \\ +\cross{LODO}{leadingCoefficient} & +\cross{LODO}{leftDivide} & +\cross{LODO}{leftExactQuotient} \\ +\cross{LODO}{leftExtendedGcd} & +\cross{LODO}{leftGcd} & +\cross{LODO}{leftLcm} \\ +\cross{LODO}{leftQuotient} & +\cross{LODO}{leftRemainder} & +\cross{LODO}{minimumDegree} \\ +\cross{LODO}{monicLeftDivide} & +\cross{LODO}{monicRightDivide} & +\cross{LODO}{monomial} \\ +\cross{LODO}{one?} & +\cross{LODO}{primitivePart} & +\cross{LODO}{recip} \\ +\cross{LODO}{reductum} & +\cross{LODO}{retract} & +\cross{LODO}{retractIfCan} \\ +\cross{LODO}{rightDivide} & +\cross{LODO}{rightExactQuotient} & +\cross{LODO}{rightExtendedGcd} \\ +\cross{LODO}{rightGcd} & +\cross{LODO}{rightLcm} & +\cross{LODO}{rightQuotient} \\ +\cross{LODO}{rightRemainder} & +\cross{LODO}{sample} & +\cross{LODO}{subtractIfCan} \\ +\cross{LODO}{symmetricPower} & +\cross{LODO}{symmetricProduct} & +\cross{LODO}{symmetricSquare} \\ +\cross{LODO}{zero?} & +\cross{LODO}{?*?} & +\cross{LODO}{?**?} \\ +\cross{LODO}{?+?} & +\cross{LODO}{?-?} & +\cross{LODO}{-?} \\ +\cross{LODO}{?=?} & +\cross{LODO}{?\^{}?} & +\cross{LODO}{?.?} \\ +\cross{LODO}{?\~{}=?} && +\end{tabular} + <<domain LODO LinearOrdinaryDifferentialOperator>>= )abbrev domain LODO LinearOrdinaryDifferentialOperator ++ Author: Manuel Bronstein @@ -50826,6 +51311,66 @@ {\bf See}\\ \pageto{LinearOrdinaryDifferentialOperator}{LODO} \pageto{LinearOrdinaryDifferentialOperator2}{LODO2} + +{\bf Exports:}\\ +\begin{tabular}{llll} +\cross{LODO1}{0} & +\cross{LODO1}{1} & +\cross{LODO1}{adjoint} & +\cross{LODO1}{apply} \\ +\cross{LODO1}{characteristic} & +\cross{LODO1}{coefficient} & +\cross{LODO1}{coefficients} & +\cross{LODO1}{coerce} \\ +\cross{LODO1}{content} & +\cross{LODO1}{D} & +\cross{LODO1}{degree} & +\cross{LODO1}{directSum} \\ +\cross{LODO1}{exquo} & +\cross{LODO1}{hash} & +\cross{LODO1}{latex} & +\cross{LODO1}{leadingCoefficient} \\ +\cross{LODO1}{leftDivide} & +\cross{LODO1}{leftExactQuotient} & +\cross{LODO1}{leftExtendedGcd} & +\cross{LODO1}{leftGcd} \\ +\cross{LODO1}{leftLcm} & +\cross{LODO1}{leftQuotient} & +\cross{LODO1}{leftRemainder} & +\cross{LODO1}{minimumDegree} \\ +\cross{LODO1}{monicLeftDivide} & +\cross{LODO1}{monicRightDivide} & +\cross{LODO1}{monomial} & +\cross{LODO1}{one?} \\ +\cross{LODO1}{primitivePart} & +\cross{LODO1}{recip} & +\cross{LODO1}{reductum} & +\cross{LODO1}{retract} \\ +\cross{LODO1}{retractIfCan} & +\cross{LODO1}{rightDivide} & +\cross{LODO1}{rightExactQuotient} & +\cross{LODO1}{rightExtendedGcd} \\ +\cross{LODO1}{rightGcd} & +\cross{LODO1}{rightLcm} & +\cross{LODO1}{rightQuotient} & +\cross{LODO1}{rightRemainder} \\ +\cross{LODO1}{sample} & +\cross{LODO1}{subtractIfCan} & +\cross{LODO1}{symmetricPower} & +\cross{LODO1}{symmetricProduct} \\ +\cross{LODO1}{symmetricSquare} & +\cross{LODO1}{zero?} & +\cross{LODO1}{?*?} & +\cross{LODO1}{?**?} \\ +\cross{LODO1}{?+?} & +\cross{LODO1}{?-?} & +\cross{LODO1}{-?} & +\cross{LODO1}{?=?} \\ +\cross{LODO1}{?\^{}?} & +\cross{LODO1}{?.?} & +\cross{LODO1}{?\~{}=?} & +\end{tabular} + <<domain LODO1 LinearOrdinaryDifferentialOperator1>>= )abbrev domain LODO1 LinearOrdinaryDifferentialOperator1 ++ Author: Manuel Bronstein @@ -51374,6 +51919,66 @@ {\bf See}\\ \pageto{LinearOrdinaryDifferentialOperator}{LODO} \pageto{LinearOrdinaryDifferentialOperator1}{LODO1} + +{\bf Exports:}\\ +\begin{tabular}{llll} +\cross{LODO2}{0} & +\cross{LODO2}{1} & +\cross{LODO2}{adjoint} & +\cross{LODO2}{apply} \\ +\cross{LODO2}{characteristic} & +\cross{LODO2}{coefficient} & +\cross{LODO2}{coefficients} & +\cross{LODO2}{coerce} \\ +\cross{LODO2}{content} & +\cross{LODO2}{D} & +\cross{LODO2}{degree} & +\cross{LODO2}{directSum} \\ +\cross{LODO2}{exquo} & +\cross{LODO2}{hash} & +\cross{LODO2}{latex} & +\cross{LODO2}{leadingCoefficient} \\ +\cross{LODO2}{leftDivide} & +\cross{LODO2}{leftExactQuotient} & +\cross{LODO2}{leftExtendedGcd} & +\cross{LODO2}{leftGcd} \\ +\cross{LODO2}{leftLcm} & +\cross{LODO2}{leftQuotient} & +\cross{LODO2}{leftRemainder} & +\cross{LODO2}{minimumDegree} \\ +\cross{LODO2}{monicLeftDivide} & +\cross{LODO2}{monicRightDivide} & +\cross{LODO2}{monomial} & +\cross{LODO2}{one?} \\ +\cross{LODO2}{primitivePart} & +\cross{LODO2}{recip} & +\cross{LODO2}{reductum} & +\cross{LODO2}{retract} \\ +\cross{LODO2}{retractIfCan} & +\cross{LODO2}{rightDivide} & +\cross{LODO2}{rightExactQuotient} & +\cross{LODO2}{rightExtendedGcd} \\ +\cross{LODO2}{rightGcd} & +\cross{LODO2}{rightLcm} & +\cross{LODO2}{rightQuotient} & +\cross{LODO2}{rightRemainder} \\ +\cross{LODO2}{sample} & +\cross{LODO2}{subtractIfCan} & +\cross{LODO2}{symmetricPower} & +\cross{LODO2}{symmetricProduct} \\ +\cross{LODO2}{symmetricSquare} & +\cross{LODO2}{zero?} & +\cross{LODO2}{?*?} & +\cross{LODO2}{?**?} \\ +\cross{LODO2}{?+?} & +\cross{LODO2}{?-?} & +\cross{LODO2}{-?} & +\cross{LODO2}{?=?} \\ +\cross{LODO2}{?\^{}?} & +\cross{LODO2}{?.?} & +\cross{LODO2}{?\~{}=?} & +\end{tabular} + <<domain LODO2 LinearOrdinaryDifferentialOperator2>>= )abbrev domain LODO2 LinearOrdinaryDifferentialOperator2 ++ Author: Stephen M. Watt, Manuel Bronstein @@ -51970,6 +52575,120 @@ {\bf See}\\ \pageto{IndexedList}{ILIST} \pageto{AssociationList}{ALIST} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{LIST}{any?} & +\cross{LIST}{append} & +\cross{LIST}{child?} & +\cross{LIST}{children} & +\cross{LIST}{coerce} \\ +\cross{LIST}{concat} & +\cross{LIST}{concat!} & +\cross{LIST}{cons} & +\cross{LIST}{construct} & +\cross{LIST}{convert} \\ +\cross{LIST}{copy} & +\cross{LIST}{copyInto!} & +\cross{LIST}{count} & +\cross{LIST}{cycleEntry} & +\cross{LIST}{cycleLength} \\ +\cross{LIST}{cycleSplit!} & +\cross{LIST}{cycleTail} & +\cross{LIST}{cyclic?} & +\cross{LIST}{delete} & +\cross{LIST}{delete!} \\ +\cross{LIST}{distance} & +\cross{LIST}{elt} & +\cross{LIST}{empty} & +\cross{LIST}{empty?} & +\cross{LIST}{entries} \\ +\cross{LIST}{entry?} & +\cross{LIST}{eq?} & +\cross{LIST}{eval} & +\cross{LIST}{every?} & +\cross{LIST}{explicitlyFinite?} \\ +\cross{LIST}{fill!} & +\cross{LIST}{find} & +\cross{LIST}{first} & +\cross{LIST}{hash} & +\cross{LIST}{index?} \\ +\cross{LIST}{indices} & +\cross{LIST}{insert} & +\cross{LIST}{insert!} & +\cross{LIST}{last} & +\cross{LIST}{latex} \\ +\cross{LIST}{leaf?} & +\cross{LIST}{leaves} & +\cross{LIST}{less?} & +\cross{LIST}{list} & +\cross{LIST}{map} \\ +\cross{LIST}{map!} & +\cross{LIST}{max} & +\cross{LIST}{maxIndex} & +\cross{LIST}{member?} & +\cross{LIST}{members} \\ +\cross{LIST}{merge} & +\cross{LIST}{merge!} & +\cross{LIST}{min} & +\cross{LIST}{minIndex} & +\cross{LIST}{more?} \\ +\cross{LIST}{node?} & +\cross{LIST}{new} & +\cross{LIST}{nil} & +\cross{LIST}{nodes} & +\cross{LIST}{null} \\ +\cross{LIST}{OMwrite} & +\cross{LIST}{parts} & +\cross{LIST}{position} & +\cross{LIST}{possiblyInfinite?} & +\cross{LIST}{qelt} \\ +\cross{LIST}{qsetelt!} & +\cross{LIST}{reduce} & +\cross{LIST}{remove} & +\cross{LIST}{remove!} & +\cross{LIST}{removeDuplicates} \\ +\cross{LIST}{removeDuplicates!} & +\cross{LIST}{rest} & +\cross{LIST}{reverse} & +\cross{LIST}{reverse!} & +\cross{LIST}{sample} \\ +\cross{LIST}{second} & +\cross{LIST}{select} & +\cross{LIST}{select!} & +\cross{LIST}{setDifference} & +\cross{LIST}{setIntersection} \\ +\cross{LIST}{setUnion} & +\cross{LIST}{setchildren!} & +\cross{LIST}{setelt} & +\cross{LIST}{setfirst!} & +\cross{LIST}{setlast!} \\ +\cross{LIST}{setrest!} & +\cross{LIST}{setvalue!} & +\cross{LIST}{size?} & +\cross{LIST}{sort} & +\cross{LIST}{sort!} \\ +\cross{LIST}{sorted?} & +\cross{LIST}{split!} & +\cross{LIST}{swap!} & +\cross{LIST}{tail} & +\cross{LIST}{third} \\ +\cross{LIST}{value} & +\cross{LIST}{\#{}?} & +\cross{LIST}{?$<$?} & +\cross{LIST}{?$<=$?} & +\cross{LIST}{?=?} \\ +\cross{LIST}{?$>$?} & +\cross{LIST}{?$>=$?} & +\cross{LIST}{?.?} & +\cross{LIST}{?\~{}=?} & +\cross{LIST}{?.?} \\ +\cross{LIST}{?.last} & +\cross{LIST}{?.rest} & +\cross{LIST}{?.first} & +\cross{LIST}{?.value} & +\end{tabular} + <<domain LIST List>>= )abbrev domain LIST List ++ Author: Michael Monagan @@ -52122,6 +52841,34 @@ \pageto{InnerFreeAbelianMonoid}{IFAMON} \pageto{FreeAbelianMonoid}{FAMONOID} \pageto{FreeAbelianGroup}{FAGROUP} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{LMOPS}{coerce} & +\cross{LMOPS}{commutativeEquality} & +\cross{LMOPS}{hash} & +\cross{LMOPS}{latex} & +\cross{LMOPS}{leftMult} \\ +\cross{LMOPS}{listOfMonoms} & +\cross{LMOPS}{makeTerm} & +\cross{LMOPS}{makeUnit} & +\cross{LMOPS}{mapExpon} & +\cross{LMOPS}{mapGen} \\ +\cross{LMOPS}{makeMulti} & +\cross{LMOPS}{nthExpon} & +\cross{LMOPS}{nthFactor} & +\cross{LMOPS}{outputForm} & +\cross{LMOPS}{plus} \\ +\cross{LMOPS}{retract} & +\cross{LMOPS}{retractIfCan} & +\cross{LMOPS}{reverse} & +\cross{LMOPS}{reverse!} & +\cross{LMOPS}{rightMult} \\ +\cross{LMOPS}{size} & +\cross{LMOPS}{?=?} & +\cross{LMOPS}{?\~{}=?} && +\end{tabular} + <<domain LMOPS ListMonoidOps>>= )abbrev domain LMOPS ListMonoidOps ++ Internal representation for monoids @@ -52288,6 +53035,53 @@ \section{domain LMDICT ListMultiDictionary} \pagehead{ListMultiDictionary}{LMDICT} \pagepic{ps/v103listmultidictionary.ps}{LMDICT}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{LMDICT}{any?} & +\cross{LMDICT}{bag} & +\cross{LMDICT}{coerce} & +\cross{LMDICT}{construct} & +\cross{LMDICT}{convert} \\ +\cross{LMDICT}{copy} & +\cross{LMDICT}{count} & +\cross{LMDICT}{dictionary} & +\cross{LMDICT}{dictionary} & +\cross{LMDICT}{duplicates} \\ +\cross{LMDICT}{duplicates?} & +\cross{LMDICT}{empty} & +\cross{LMDICT}{empty?} & +\cross{LMDICT}{eq?} & +\cross{LMDICT}{eval} \\ +\cross{LMDICT}{extract!} & +\cross{LMDICT}{every?} & +\cross{LMDICT}{find} & +\cross{LMDICT}{hash} & +\cross{LMDICT}{insert!} \\ +\cross{LMDICT}{inspect} & +\cross{LMDICT}{latex} & +\cross{LMDICT}{less?} & +\cross{LMDICT}{map} & +\cross{LMDICT}{map!} \\ +\cross{LMDICT}{member?} & +\cross{LMDICT}{members} & +\cross{LMDICT}{more?} & +\cross{LMDICT}{parts} & +\cross{LMDICT}{reduce} \\ +\cross{LMDICT}{remove} & +\cross{LMDICT}{remove!} & +\cross{LMDICT}{removeDuplicates} & +\cross{LMDICT}{removeDuplicates!} & +\cross{LMDICT}{sample} \\ +\cross{LMDICT}{select} & +\cross{LMDICT}{select!} & +\cross{LMDICT}{size?} & +\cross{LMDICT}{substitute} & +\cross{LMDICT}{\#{}?} \\ +\cross{LMDICT}{?\~{}=?} & +\cross{LMDICT}{?=?} &&& +\end{tabular} + <<domain LMDICT ListMultiDictionary>>= )abbrev domain LMDICT ListMultiDictionary ++ Author: MBM Nov/87, MB Oct/89 @@ -52446,6 +53240,43 @@ {\bf See}\\ \pageto{Localize}{LO} \pageto{Fraction}{FRAC} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{LA}{0} & +\cross{LA}{1} & +\cross{LA}{abs} & +\cross{LA}{characteristic} & +\cross{LA}{coerce} \\ +\cross{LA}{denom} & +\cross{LA}{hash} & +\cross{LA}{latex} & +\cross{LA}{max} & +\cross{LA}{min} \\ +\cross{LA}{negative?} & +\cross{LA}{numer} & +\cross{LA}{one?} & +\cross{LA}{positive?} & +\cross{LA}{recip} \\ +\cross{LA}{sample} & +\cross{LA}{sign} & +\cross{LA}{subtractIfCan} & +\cross{LA}{zero?} & +\cross{LA}{?\~{}=?} \\ +\cross{LA}{?*?} & +\cross{LA}{?**?} & +\cross{LA}{?$<$?} & +\cross{LA}{?$<=$?} & +\cross{LA}{?$>$?} \\ +\cross{LA}{?$>=$?} & +\cross{LA}{?\^{}?} & +\cross{LA}{?+?} & +\cross{LA}{?-?} & +\cross{LA}{-?} \\ +\cross{LA}{?/?} & +\cross{LA}{?=?} &&& +\end{tabular} + <<domain LA LocalAlgebra>>= )abbrev domain LA LocalAlgebra ++ Author: Dave Barton, Barry Trager @@ -52490,6 +53321,33 @@ {\bf See}\\ \pageto{LocalAlgebra}{LA} \pageto{Fraction}{FRAC} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{LO}{0} & +\cross{LO}{coerce} & +\cross{LO}{denom} & +\cross{LO}{hash} & +\cross{LO}{latex} \\ +\cross{LO}{max} & +\cross{LO}{min} & +\cross{LO}{numer} & +\cross{LO}{sample} & +\cross{LO}{subtractIfCan} \\ +\cross{LO}{zero?} & +\cross{LO}{?\~{}=?} & +\cross{LO}{?*?} & +\cross{LO}{?$<$?} & +\cross{LO}{?$<=$?} \\ +\cross{LO}{?$>$?} & +\cross{LO}{?$>=$?} & +\cross{LO}{?+?} & +\cross{LO}{?-?} & +\cross{LO}{-?} \\ +\cross{LO}{?/?} & +\cross{LO}{?=?} &&& +\end{tabular} + <<domain LO Localize>>= )abbrev domain LO Localize ++ Author: Dave Barton, Barry Trager @@ -52905,6 +53763,36 @@ @ \pagehead{LyndonWord}{LWORD} \pagepic{ps/v103lyndonword.ps}{LWORD}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{LWORD}{coerce} & +\cross{LWORD}{factor} & +\cross{LWORD}{hash} & +\cross{LWORD}{latex} & +\cross{LWORD}{left} \\ +\cross{LWORD}{length} & +\cross{LWORD}{lexico} & +\cross{LWORD}{lyndon} & +\cross{LWORD}{lyndon?} & +\cross{LWORD}{lyndonIfCan} \\ +\cross{LWORD}{LyndonWordsList} & +\cross{LWORD}{LyndonWordsList1} & +\cross{LWORD}{max} & +\cross{LWORD}{min} & +\cross{LWORD}{retract} \\ +\cross{LWORD}{retractIfCan} & +\cross{LWORD}{retractable?} & +\cross{LWORD}{right} & +\cross{LWORD}{varList} & +\cross{LWORD}{?$<$?} \\ +\cross{LWORD}{?$<=$?} & +\cross{LWORD}{?=?} & +\cross{LWORD}{?$>$?} & +\cross{LWORD}{?$>=$?} & +\cross{LWORD}{?\~{}=?} +\end{tabular} + <<domain LWORD LyndonWord>>= )abbrev domain LWORD LyndonWord ++ Author: Michel Petitot (pe...@li...). Modified: trunk/axiom/changelog =================================================================== --- trunk/axiom/changelog 2009-01-16 15:51:45 UTC (rev 1083) +++ trunk/axiom/changelog 2009-01-16 22:17:24 UTC (rev 1084) @@ -1,3 +1,5 @@ +20090116 tpd src/axiom-website/patches.html 20090116.02.tpd.patch +20090116 tpd books/bookvol10.3 add exports 20090116 tpd src/axiom-website/patches.html 20090116.01.tpd.patch 20090116 tpd books/bookvol10.3 add exports 20090115 tpd src/axiom-website/patches.html 20090115.01.tpd.patch Modified: trunk/axiom/src/axiom-website/patches.html =================================================================== --- trunk/axiom/src/axiom-website/patches.html 2009-01-16 15:51:45 UTC (rev 1083) +++ trunk/axiom/src/axiom-website/patches.html 2009-01-16 22:17:24 UTC (rev 1084) @@ -883,6 +883,8 @@ bookvol10.3 add exports<br/> <a href="patches/20090116.01.tpd.patch">20090116.01.tpd.patch</a> bookvol10.3 add exports<br/> +<a href="patches/20090116.02.tpd.patch">20090116.02.tpd.patch</a> +bookvol10.3 add exports<br/> </body> </html> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |