diff --git a/books/bookvol10.3.pamphlet b/books/bookvol10.3.pamphlet index f165480..a4fb558 100644 --- a/books/bookvol10.3.pamphlet +++ b/books/bookvol10.3.pamphlet @@ -67877,37 +67877,73 @@ OrderedDirectProduct(dim:NonNegativeInteger, --S 1 of 24 m1:=(x*y*y*z)$OFMONOID(Symbol) +--R +--R +--R 2 +--R (1) x y z +--R Type: OrderedFreeMonoid Symbol --E 1 --S 2 of 24 m2:=(x*y)$OFMONOID(Symbol) +--R +--R +--R (2) x y +--R Type: OrderedFreeMonoid Symbol --E 2 --S 3 of 24 lquo(m1,m2) +--R +--R +--R (3) y z +--R Type: Union(OrderedFreeMonoid Symbol,...) --E 3 --S 4 of 24 m3:=(y*y)$OFMONOID(Symbol) +--R +--R +--R 2 +--R (4) y +--R Type: OrderedFreeMonoid Symbol --E 4 --S 5 of 24 divide(m1,m2) +--R +--R +--R (5) [lm= y z,rm= "failed"] +--RType: Union(Record(lm: Union(OrderedFreeMonoid Symbol,"failed"),rm: Union(OrderedFreeMonoid Symbol,"failed")),...) --E 5 --S 6 of 24 divide(m1,m3) +--R +--R +--R (6) [lm= "failed",rm= "failed"] +--RType: Union(Record(lm: Union(OrderedFreeMonoid Symbol,"failed"),rm: Union(OrderedFreeMonoid Symbol,"failed")),...) --E 6 --S 7 of 24 m4:=(y^3)$OFMONOID(Symbol) +--R +--R +--R 3 +--R (7) y +--R Type: OrderedFreeMonoid Symbol --E 7 --S 8 of 24 divide(m1,m4) +--R +--R +--R (8) [lm= "failed",rm= "failed"] +--RType: Union(Record(lm: Union(OrderedFreeMonoid Symbol,"failed"),rm: Union(OrderedFreeMonoid Symbol,"failed")),...) --E 8 )set function compile on + -- Build the non-commutative algebra h=k[x,y] and then make computations -- in h using some predefined rules for x and y. For example, giving @@ -67925,6 +67961,8 @@ divide(m1,m4) --S 9 of 24 C ==> OVAR [a,b] +--R +--R Type: Void --E 9 -- Commutative Field: k = Q[a,b] @@ -67933,12 +67971,16 @@ C ==> OVAR [a,b] --S 10 of 24 K ==> SMP(FRAC INT,C) +--R +--R Type: Void --E 10 -- Non-commutative variables --S 11 of 24 V ==> OVAR [x,y] +--R +--R Type: Void --E 11 -- Non-commuative algebra k=k[x,y] @@ -67946,12 +67988,16 @@ V ==> OVAR [x,y] --S 12 of 24 H ==> XDPOLY(V,K) +--R +--R Type: Void --E 12 -- Free Monoid --S 13 of 24 M ==> OFMONOID V +--R +--R Type: Void --E 13 -- Substitution rules are applied to words from the monoid over the @@ -67971,35 +68017,127 @@ subs(w:M):H == monom(n3,1)$H * (a::K*y::V+b::K)$M * monom(n3,1)$H monom(n2,1)$H * (a::K*x::V+b::K)$H * monom(n2,1)$H monom(n1,1)$H * (y::V*x::V*y::V)$H * monom(n1,1)$H +--R +--R Function declaration subs : OrderedFreeMonoid OrderedVariableList [x +--R ,y] -> XDistributedPolynomial(OrderedVariableList [x,y], +--R SparseMultivariatePolynomial(Fraction Integer,OrderedVariableList +--R [a,b])) has been added to workspace. +--R Type: Void --E 14 -- Apply rules to a term. Keep coefficients --S 15 of 24 newterm(x:Record(k:M,c:K)):H == x.c*subs(x,k) +--R +--R Function declaration newterm : Record(k: OrderedFreeMonoid +--R OrderedVariableList [x,y],c: SparseMultivariatePolynomial( +--R Fraction Integer,OrderedVariableList [a,b])) -> +--R XDistributedPolynomial(OrderedVariableList [x,y], +--R SparseMultivariatePolynomial(Fraction Integer,OrderedVariableList +--R [a,b])) has been added to workspace. +--R Type: Void --E 15 -- Reconstruct the polynomial term by term --S 16 of 24 newpoly(t:H):H == reduce(+,map(newterm,listOfTerms(t))) +--R +--R Function declaration newpoly : XDistributedPolynomial( +--R OrderedVariableList [x,y],SparseMultivariatePolynomial(Fraction +--R Integer,OrderedVariableList [a,b])) -> XDistributedPolynomial( +--R OrderedVariableList [x,y],SparseMultivariatePolynomial(Fraction +--R Integer,OrderedVariableList [a,b])) has been added to workspace. +--R Type: Void --E 16 -- Example calcuations --S 17 of 24 p1:(x::V+y::V)$H^2 +--R +--R +--RDaly Bug +--R Category, domain or package constructor ^ is not available. --E 17 --S 18 of 24 newpoly(p1) +--R +--R There are no library operations named listOfTerms +--R Use HyperDoc Browse or issue +--R )what op listOfTerms +--R to learn if there is any operation containing " listOfTerms " in +--R its name. +--R Cannot find a definition or applicable library operation named +--R listOfTerms with argument type(s) +--RXDistributedPolynomial(OrderedVariableList [x,y],SparseMultivariatePolynomial(Fraction Integer,OrderedVariableList [a,b])) +--R +--R Perhaps you should use "@" to indicate the required return type, +--R or "$" to specify which version of the function you need. +--R AXIOM will attempt to step through and interpret the code. +--R Compiling function newpoly with type XDistributedPolynomial( +--R OrderedVariableList [x,y],SparseMultivariatePolynomial(Fraction +--R Integer,OrderedVariableList [a,b])) -> XDistributedPolynomial( +--R OrderedVariableList [x,y],SparseMultivariatePolynomial(Fraction +--R Integer,OrderedVariableList [a,b])) +--R There are no library operations named listOfTerms +--R Use HyperDoc Browse or issue +--R )what op listOfTerms +--R to learn if there is any operation containing " listOfTerms " in +--R its name. +--R +--RDaly Bug +--R Cannot find a definition or applicable library operation named +--R listOfTerms with argument type(s) +--RXDistributedPolynomial(OrderedVariableList [x,y],SparseMultivariatePolynomial(Fraction Integer,OrderedVariableList [a,b])) +--R +--R Perhaps you should use "@" to indicate the required return type, +--R or "$" to specify which version of the function you need. --E 18 --S 19 of 24 p2:=(x::V+y::V)$H^3 +--R +--R +--R 3 2 2 2 2 3 +--R (17) y + y x + y x y + y x + x y + x y x + x y + x +--RType: XDistributedPolynomial(OrderedVariableList [x,y],SparseMultivariatePolynomial(Fraction Integer,OrderedVariableList [a,b])) --E 19 --S 20 of 24 pNew:=newpoly(p2) +--R +--R There are no library operations named listOfTerms +--R Use HyperDoc Browse or issue +--R )what op listOfTerms +--R to learn if there is any operation containing " listOfTerms " in +--R its name. +--R Cannot find a definition or applicable library operation named +--R listOfTerms with argument type(s) +--RXDistributedPolynomial(OrderedVariableList [x,y],SparseMultivariatePolynomial(Fraction Integer,OrderedVariableList [a,b])) +--R +--R Perhaps you should use "@" to indicate the required return type, +--R or "$" to specify which version of the function you need. +--R AXIOM will attempt to step through and interpret the code. +--R Compiling function newpoly with type XDistributedPolynomial( +--R OrderedVariableList [x,y],SparseMultivariatePolynomial(Fraction +--R Integer,OrderedVariableList [a,b])) -> XDistributedPolynomial( +--R OrderedVariableList [x,y],SparseMultivariatePolynomial(Fraction +--R Integer,OrderedVariableList [a,b])) +--R There are no library operations named listOfTerms +--R Use HyperDoc Browse or issue +--R )what op listOfTerms +--R to learn if there is any operation containing " listOfTerms " in +--R its name. +--R +--RDaly Bug +--R Cannot find a definition or applicable library operation named +--R listOfTerms with argument type(s) +--RXDistributedPolynomial(OrderedVariableList [x,y],SparseMultivariatePolynomial(Fraction Integer,OrderedVariableList [a,b])) +--R +--R Perhaps you should use "@" to indicate the required return type, +--R or "$" to specify which version of the function you need. --E 20 -- But the rules should be applied more than once @@ -68007,10 +68145,45 @@ pNew:=newpoly(p2) while pNew ~= p2 repeat p2 := pNew pNew := newpoly(p2) +--R +--R There are no library operations named listOfTerms +--R Use HyperDoc Browse or issue +--R )what op listOfTerms +--R to learn if there is any operation containing " listOfTerms " in +--R its name. +--R Cannot find a definition or applicable library operation named +--R listOfTerms with argument type(s) +--RXDistributedPolynomial(OrderedVariableList [x,y],SparseMultivariatePolynomial(Fraction Integer,OrderedVariableList [a,b])) +--R +--R Perhaps you should use "@" to indicate the required return type, +--R or "$" to specify which version of the function you need. +--R AXIOM will attempt to step through and interpret the code. +--R Compiling function newpoly with type XDistributedPolynomial( +--R OrderedVariableList [x,y],SparseMultivariatePolynomial(Fraction +--R Integer,OrderedVariableList [a,b])) -> XDistributedPolynomial( +--R OrderedVariableList [x,y],SparseMultivariatePolynomial(Fraction +--R Integer,OrderedVariableList [a,b])) +--R There are no library operations named listOfTerms +--R Use HyperDoc Browse or issue +--R )what op listOfTerms +--R to learn if there is any operation containing " listOfTerms " in +--R its name. +--R +--RDaly Bug +--R Cannot find a definition or applicable library operation named +--R listOfTerms with argument type(s) +--RXDistributedPolynomial(OrderedVariableList [x,y],SparseMultivariatePolynomial(Fraction Integer,OrderedVariableList [a,b])) +--R +--R Perhaps you should use "@" to indicate the required return type, +--R or "$" to specify which version of the function you need. --E 21 --S 22 of 24 pNew +--R +--R +--R (18) pNew +--R Type: Variable pNew --E 22 --S 23 of 24 @@ -68021,10 +68194,54 @@ reduce(p:H):H == p2 := p3 p3 := newpoly(p2) p3 +--R +--R Function declaration reduce : XDistributedPolynomial( +--R OrderedVariableList [x,y],SparseMultivariatePolynomial(Fraction +--R Integer,OrderedVariableList [a,b])) -> XDistributedPolynomial( +--R OrderedVariableList [x,y],SparseMultivariatePolynomial(Fraction +--R Integer,OrderedVariableList [a,b])) has been added to workspace. +--R Compiled code for newpoly has been cleared. +--R Type: Void --E 23 --S 24 of 24 reduce(p2) +--R +--R There are no library operations named listOfTerms +--R Use HyperDoc Browse or issue +--R )what op listOfTerms +--R to learn if there is any operation containing " listOfTerms " in +--R its name. +--R Cannot find a definition or applicable library operation named +--R listOfTerms with argument type(s) +--RXDistributedPolynomial(OrderedVariableList [x,y],SparseMultivariatePolynomial(Fraction Integer,OrderedVariableList [a,b])) +--R +--R Perhaps you should use "@" to indicate the required return type, +--R or "$" to specify which version of the function you need. +--R AXIOM will attempt to step through and interpret the code. +--R Compiling function newpoly with type XDistributedPolynomial( +--R OrderedVariableList [x,y],SparseMultivariatePolynomial(Fraction +--R Integer,OrderedVariableList [a,b])) -> XDistributedPolynomial( +--R OrderedVariableList [x,y],SparseMultivariatePolynomial(Fraction +--R Integer,OrderedVariableList [a,b])) +--R Compiling function reduce with type XDistributedPolynomial( +--R OrderedVariableList [x,y],SparseMultivariatePolynomial(Fraction +--R Integer,OrderedVariableList [a,b])) -> XDistributedPolynomial( +--R OrderedVariableList [x,y],SparseMultivariatePolynomial(Fraction +--R Integer,OrderedVariableList [a,b])) +--R There are no library operations named listOfTerms +--R Use HyperDoc Browse or issue +--R )what op listOfTerms +--R to learn if there is any operation containing " listOfTerms " in +--R its name. +--R +--RDaly Bug +--R Cannot find a definition or applicable library operation named +--R listOfTerms with argument type(s) +--RXDistributedPolynomial(OrderedVariableList [x,y],SparseMultivariatePolynomial(Fraction Integer,OrderedVariableList [a,b])) +--R +--R Perhaps you should use "@" to indicate the required return type, +--R or "$" to specify which version of the function you need. --E 24 )spool @@ -71387,6 +71604,9 @@ PartialFraction(R: EuclideanDomain): Cat == Capsule where coerce: % -> Fraction R ++ coerce(p) sums up the components of the partial fraction and ++ returns a single fraction. + ++ + ++X a:=(13/74)::PFR(INT) + ++X a::FRAC(INT) coerce: Fraction FRR -> % ++ coerce(f) takes a fraction with numerator and denominator in @@ -71394,32 +71614,52 @@ PartialFraction(R: EuclideanDomain): Cat == Capsule where ++ necessary for the parts to be factored because it is not ++ known in general how to factor elements of \spad{R} and ++ this is needed to decompose into partial fractions. + ++ + ++X (13/74)::PFR(INT) compactFraction: % -> % ++ compactFraction(p) normalizes the partial fraction \spad{p} ++ to the compact representation. In this form, the partial ++ fraction has only one fractional term per prime in the ++ denominator. + ++ + ++X a:=partialFraction(1,factorial 10) + ++X b:=padicFraction(a) + ++X compactFraction(b) firstDenom: % -> FRR ++ firstDenom(p) extracts the denominator of the first fractional ++ term. This returns 1 if there is no fractional part (use ++ \spadfunFrom{wholePart}{PartialFraction} to get the whole part). + ++ + ++X a:=partialFraction(1,factorial 10) + ++X firstDenom(a) firstNumer: % -> R ++ firstNumer(p) extracts the numerator of the first fractional ++ term. This returns 0 if there is no fractional part (use ++ \spadfunFrom{wholePart}{PartialFraction} to get the whole part). + ++ + ++X a:=partialFraction(1,factorial 10) + ++X firstNumer(a) nthFractionalTerm: (%,Integer) -> % ++ nthFractionalTerm(p,n) extracts the nth fractional term from ++ the partial fraction \spad{p}. This returns 0 if the index ++ \spad{n} is out of range. + ++ + ++X a:=partialFraction(1,factorial 10) + ++X b:=padicFraction(a) + ++X nthFractionalTerm(b,3) numberOfFractionalTerms: % -> Integer ++ numberOfFractionalTerms(p) computes the number of fractional ++ terms in \spad{p}. This returns 0 if there is no fractional ++ part. + ++ + ++X a:=partialFraction(1,factorial 10) + ++X b:=padicFraction(a) + ++X numberOfFractionalTerms(b) padicallyExpand: (R,R) -> SUPR ++ padicallyExpand(p,x) is a utility function that expands @@ -71430,16 +71670,25 @@ PartialFraction(R: EuclideanDomain): Cat == Capsule where ++ padicFraction(q) expands the fraction p-adically in the primes ++ \spad{p} in the denominator of \spad{q}. For example, ++ \spad{padicFraction(3/(2**2)) = 1/2 + 1/(2**2)}. - ++ Use \spadfunFrom{compactFraction}{PartialFraction} to return to compact form. + ++ Use \spadfunFrom{compactFraction}{PartialFraction} to + ++ return to compact form. + ++ + ++X a:=partialFraction(1,factorial 10) + ++X padicFraction(a) partialFraction: (R, FRR) -> % ++ partialFraction(numer,denom) is the main function for ++ constructing partial fractions. The second argument is the ++ denominator and should be factored. + ++ + ++X partialFraction(1,factorial 10) wholePart: % -> R ++ wholePart(p) extracts the whole part of the partial fraction ++ \spad{p}. + ++ + ++X a:=(74/13)::PFR(INT) + ++X wholePart(a) Capsule == add diff --git a/changelog b/changelog index 0e8816d..e096256 100644 --- a/changelog +++ b/changelog @@ -1,3 +1,5 @@ +20091030 tpd src/axiom-website/patches.html 20091030.04.tpd.patch +20091030 tpd books/bookvol10.3 partial fix OrderedFreeMonoid 20091030 tpd src/axiom-website/patches.html 20091030.03.tpd.patch 20091030 tpd src/algebra/Makefile add PartialFractionPackage.help 20091030 tpd books/bookvol10.4 document PartialFractionPackage diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html index fef7922..208e80a 100644 --- a/src/axiom-website/patches.html +++ b/src/axiom-website/patches.html @@ -2203,5 +2203,7 @@ src/input/donsimple.input added
books/bookvol10.3 document OrderedFreeMonoid
20091030.03.tpd.patch books/bookvol10.4 document PartialFractionPackage
+20091030.04.tpd.patch +books/bookvol10.3 partial fix OrderedFreeMonoid