diff --git a/books/bookvol10.3.pamphlet b/books/bookvol10.3.pamphlet
index bfb6bb7..f0c0ed8 100644
--- a/books/bookvol10.3.pamphlet
+++ b/books/bookvol10.3.pamphlet
@@ -26716,7 +26716,7 @@ o )show DeRhamComplex
\begin{chunk}{domain DERHAM DeRhamComplex}
)abbrev domain DERHAM DeRhamComplex
-++ Author: Larry A. Lambe
+++ Author: Larry A. Lambe and Kurt Pagani
++ Date : 01/26/91.
++ Revised : 12/01/91.
++ Description:
@@ -26783,6 +26783,14 @@ DeRhamComplex(CoefRing,listIndVar:List Symbol): Export == Implement where
++ to the metric g.
dot : (%,%,SMR) -> R
++ compute the inner product of two differential forms w.r.t. g
+ proj : (%,NNI) -> %
+ ++ projection to homogeneous terms of degree p
+ interiorProduct : (Vector(R),%,SMR) -> %
+ ++ calculates the interior product i_X(a) of the vector field X
+ ++ with the differential form a (w.r.t. metric g)
+ lieDerivative : (Vector(R),%,SMR) -> %
+ ++ calculates the Lie derivative L_X(a) of the differential
+ ++ form a with respect to the vector field X (w.r.t. metric g)
Implement == ASY add
Rep := ASY
@@ -26824,6 +26832,7 @@ DeRhamComplex(CoefRing,listIndVar:List Symbol): Export == Implement where
err1:="CoefRing has no IntegralDomain"
err2:="Not Implemented"
err3:="Degenerate metric"
+ err4:="Index out of range"
-- coord space dimension
dim(f) == dim
@@ -26838,36 +26847,12 @@ DeRhamComplex(CoefRing,listIndVar:List Symbol): Export == Implement where
y:= x pretend List(NNI)
[j for j in 1..#y | y.j=a]
- -- compute factors for hodgeStar
- facs(cc:Record(k:EAB,c:R),g:SMR):R ==
- not CoefRing has IntegralDomain => error(err1)
- not diagonal? g => error(err2)
- G:=reduce("*",[g(j,j) for j in 1..dim]::List(R))
- G=0 => error(err3)
- idx:=pos(cc.k,0) -- pos of 0 since already flipped
- eps:=concat(pos(cc.k,1),pos(cc.k,0))::List(NNI)
- dom:=[j for j in 1..dim]::List(NNI)
- sgn:=sign(coercePreimagesImages([dom,eps])::Permutation(NNI))::R
- if idx ^= [] then
- fg:R:=sgn*reduce("*",[1/g(j,j) for j in idx]::List(R))
- else
- fg:R:=sgn
- fg*sqrt(abs(G))*cc.c
-
- -- export
- hodgeStar(x,g) ==
- t:=terms(x)
- s:=[copy(r) for r in t] -- we need a copy of x
- for j in 1..#t repeat
- s.j.k := flip(s.j.k)
- s.j.c := facs(s.j,g) -- builtin g
- s pretend %
-
-- compute dot of singletons
dot1(r:Record(k:EAB,c:R),s:Record(k:EAB,c:R),g:SMR):R ==
not CoefRing has IntegralDomain => error(err1)
test(r.k ^= s.k) => 0::R
idx := pos(r.k,1)
+ idx = [] => r.c * s.c
reduce("*",[1/g(j,j) for j in idx]::List(R))*r.c*s.c
-- export
@@ -26876,6 +26861,49 @@ DeRhamComplex(CoefRing,listIndVar:List Symbol): Export == Implement where
ty:=terms(y)
reduce("+",[dot1(tx.j,ty.j,g) for j in 1..#tx])
+ -- export
+ hodgeStar(x,g) ==
+ not CoefRing has IntegralDomain => error(err1)
+ not diagonal? g => error(err2)
+ v := sqrt(abs(determinant(g))) -- volume factor
+ v = 0 => error(err3)
+ t:=terms(x)
+ s:=[copy(r) for r in t] -- we need a copy of x
+ for j in 1..#t repeat
+ s.j.k := flip(s.j.k)
+ fs:=[s.j] pretend %
+ ft:=[t.j] pretend %
+ s.j.c := s.j.c * v * dot1(t.j,t.j,g)/leadingCoefficient(ft*fs)
+ s pretend %
+
+ -- export
+ proj(x,p) ==
+ p < 0 or p > dim => error(err4)
+ t := terms(x)
+ idx := [j for j in 1..#t | #pos(t.j.k,1)=p]
+ s := [copy(t.j) for j in idx::List(NNI)]
+ s pretend %
+
+ interiorProduct(v,x,g) ==
+ not CoefRing has IntegralDomain => error(err1)
+ f := reduce("+",[generator(i)$% for i in 1..dim]::List(%))
+ t := terms(f)
+ for j in 1..dim repeat
+ t.(dim-j+1).c := g(j,j)*v(j) -- reverse order
+ f -- term manipulations are destructive
+ dg:R := determinant(g)
+ sg:R := dg/abs(dg)
+ if odd?(dim) then
+ m:R := sg
+ else
+ m:R := (-1)**degree(x)*sg
+ m * hodgeStar(f*hodgeStar(x,g),g)
+
+ lieDerivative(v,x,g) ==
+ a:= exteriorDifferential(interiorProduct(v,x,g))
+ b:= interiorProduct(v,exteriorDifferential(x),g)
+ a+b
+
coerce(a):O ==
a = 0$Rep => 0$I::O
ta := terms a
diff --git a/books/bookvol5.pamphlet b/books/bookvol5.pamphlet
index 1b581e3..706a2b9 100644
--- a/books/bookvol5.pamphlet
+++ b/books/bookvol5.pamphlet
@@ -103,7 +103,7 @@ of effort. We would like to acknowledge and thank the following people:
"Stephen Watt Jaap Weel Juergen Weiss"
"M. Weller Mark Wegman James Wen"
"Thorsten Werther Michael Wester R. Clint Whaley"
-"James T. Wheeler" John M. Wiley Berhard Will"
+"James T. Wheeler John M. Wiley Berhard Will"
"Clifton J. Williamson Stephen Wilson Shmuel Winograd"
"Robert Wisbauer Sandra Wityak Waldemar Wiwianka"
"Knut Wolf Liu Xiaojun Clifford Yapp"
diff --git a/books/bookvolbib.pamphlet b/books/bookvolbib.pamphlet
index 66d3083..2d07bec 100644
--- a/books/bookvolbib.pamphlet
+++ b/books/bookvolbib.pamphlet
@@ -6327,6 +6327,102 @@ Proc ISSAC 97 pp172-175 (1997)
\end{chunk}
+\index{Polyakov, S.P.}
+\begin{chunk}{axiom.bib}
+@article{Poly11,
+ author = "Polyadov, S.P.",
+ title = "Indefinite summation of rational functions with factorization
+ of denominators",
+ year = "2011",
+ month = "November",
+ journal = "Programming and Computer Software",
+ volume = "37",
+ number = "6",
+ pages = "322--325",
+ paper = "Poly11.pdf",
+ abstract = "
+ A computer algebra algorithm for indefinite summation of rational
+ functions based on complete factorization of denominators is
+ proposed. For a given $f$, the algorithm finds two rational functions
+ $g$, $r$ such that $f=g(x+1)-g(x)+r$ and the degree of the denominator
+ of $r$ is minimal. A modification of the algorithm is also proposed
+ that additionally minimizes the degree of the denominator of
+ $g$. Computational complexity of the algorithms without regard to
+ denominator factorization is shown to be $O(m^2)$, where $m$ is the
+ degree of the denominator of $f$."
+}
+
+\end{chunk}
+
+\index{Gerhard, J.}
+\index{Giesbrecht, M.}
+\index{Storjohann, A.}
+\index{Zima, E.V.}
+\begin{chunk}{axiom.bib}
+@inproceedings{Gerh03,
+ author = "Gerhard, J. and Giesbrecht, M. and Storjohann, A. and Zima, E.V.",
+ title = "Shiftless decomposition and polynomial-time rational summation",
+ booktitle = "Proceedings of ISSAC'03",
+ year = "2003",
+ pages = "119--126",
+ paper = "Gerh03.pdf",
+ abstract = "
+ New algorithms are presented for computing the dispersion set of two
+ polynomials over {\bf Q} and for {\sl shiftless} factorization. Together
+ with a summability criterion by Abramov, these are applied to get a
+ polynomial-time algorithm for indefinite rational summation, using a
+ sparse representation of the output."
+}
+
+\end{chunk}
+
+\index{Abramov, S.A.}
+\begin{chunk}{axiom.bib}
+@article{Abra85,
+ author = "Abramov, S.A.",
+ title = "Separation of variables in rational functions",
+ year = "1985",
+ journal = "USSR Computational Mathematics and Mathematical Physics",
+ volume = "25",
+ number = "5",
+ pages = "99--102",
+ paper = "Abra85.pdf",
+ abstract = "
+The problem of expanding a rational function of several variables into
+terms with separable variables is formulated. An algorithm for solving
+this problem is given. Programs which implement this algorithm can
+occur in sets of algebraic alphabetical transformations on a computer
+and can be used to reduce the multiplicity of sums and integrals of
+rational functions for investigating differential equations with
+rational right-hand sides etc."
+}
+
+\end{chunk}
+
+\index{Abramov, S.A.}
+\begin{chunk}{axiom.bib}
+@article{Abra71,
+ author = "Abramov, S.A.",
+ title = "On the summation of rational functions",
+ year = "1971",
+ journal = "USSR Computational Mathematics and Mathematical Physics",
+ volume = "11",
+ number = "4",
+ pages = "324--330",
+ paper = "Abra71.pdf",
+ abstract = "
+ An algorithm is given for solving the following problem: let
+ $F(x_1,\ldots,x_n)$ be a rational function of the variables
+ $x_i$ with rational (read or complex) coefficients; to see if
+ there exists a rational function $G(v,w,x_2,\ldots,x_n)$ with
+ coefficients from the same field, such that
+ \[\sum_{x_1=v}^w{F(x_1,\ldots,x_n)} = G(v,w,x_2,\ldots,x_n)\]
+ for all integral values of $v \le w$. If $G$ exists, to obtain it.
+ Realization of the algorithm in the LISP language is discussed."
+}
+
+\end{chunk}
+
\index{Er\"ocal, Bur\c{c}in}
\begin{chunk}{axiom.bib}
@article{Eroc10,
@@ -6436,6 +6532,8 @@ Proc ISSAC 97 pp172-175 (1997)
implemented in Sigma to solve multi-summation problems efficiently.
For instacne, the extended Sigma package has been applied successively
to provide a computer-assisted proof of Stembridge's TSPP Theorem."
+}
+
\end{chunk}
\index{Kauers, Manuel}
diff --git a/changelog b/changelog
index 3af7c95..cd8b464 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,9 @@
+20141010 kxp src/axiom-website/patches.html 20141010.01.kxp.patch
+20141010 kxp books/bookvolbib add references
+20141010 kxp src/input/derham3.input test Pagani's functions
+20141010 kxp src/input/Makefile add derham3.input tests
+20141010 kxp books/bookvol10.3 add Pagani's functions to DERHAM
+20141010 tpd books/bookvol5 fix typo
20141008 tpd src/axiom-website/patches.html 20141008.03.tpd.patch
20141008 tpd books/bookvolbib add a section on Symbolic Summation
20141008 jtw src/axiom-website/patches.html 20141008.02.jtw.patch
diff --git a/patch b/patch
index 60bc62c..1583b4b 100644
--- a/patch
+++ b/patch
@@ -1,3 +1,3 @@
-books/bookvolbib add a section on Symbolic Summation
+books/bookvol10.3 add Pagani's functions to DERHAM
-Collect references to papers on symbolic summation using Karr's method
+Additional functions in DERHAM
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index c79b4ca..7a66eeb 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -4678,6 +4678,8 @@ books/bookvol10.3 DERHAM: add code for differential forms
books/bookvol10.1 add chapter on differential forms
20141008.03.tpd.patch
books/bookvolbib add a section on Symbolic Summation
+20141010.01.kxp.patch
+books/bookvol10.3 add Pagani's functions to DERHAM