diff --git a/books/bookvol10.3.pamphlet b/books/bookvol10.3.pamphlet
index e43566c..bfb6bb7 100644
--- a/books/bookvol10.3.pamphlet
+++ b/books/bookvol10.3.pamphlet
@@ -25431,7 +25431,7 @@ Dequeue(S:SetCategory): DequeueAggregate S with
 )set message test on
 )set message auto off
 )clear all
---S 1 of 36
+--S 1 of 100
 coefRing := Integer
 --R 
 --R
@@ -25439,7 +25439,7 @@ coefRing := Integer
 --R                                                                 Type: Domain
 --E 1
 
---S 2 of 36
+--S 2 of 100
 lv : List Symbol := [x,y,z] 
 --R 
 --R
@@ -25447,7 +25447,7 @@ lv : List Symbol := [x,y,z]
 --R                                                           Type: List(Symbol)
 --E 2
 
---S 3 of 36
+--S 3 of 100
 der := DERHAM(coefRing,lv) 
 --R 
 --R
@@ -25455,7 +25455,7 @@ der := DERHAM(coefRing,lv)
 --R                                                                 Type: Domain
 --E 3
 
---S 4 of 36
+--S 4 of 100
 R := Expression coefRing
 --R 
 --R
@@ -25463,7 +25463,7 @@ R := Expression coefRing
 --R                                                                 Type: Domain
 --E 4
 
---S 5 of 36
+--S 5 of 100
 f : R := x**2*y*z-5*x**3*y**2*z**5
 --R 
 --R
@@ -25472,7 +25472,7 @@ f : R := x**2*y*z-5*x**3*y**2*z**5
 --R                                                    Type: Expression(Integer)
 --E 5
 
---S 6 of 36
+--S 6 of 100
 g : R := z**2*y*cos(z)-7*sin(x**3*y**2)*z**2 
 --R 
 --R
@@ -25481,7 +25481,7 @@ g : R := z**2*y*cos(z)-7*sin(x**3*y**2)*z**2
 --R                                                    Type: Expression(Integer)
 --E 6
 
---S 7 of 36
+--S 7 of 100
 h : R :=x*y*z-2*x**3*y*z**2 
 --R 
 --R
@@ -25490,7 +25490,7 @@ h : R :=x*y*z-2*x**3*y*z**2
 --R                                                    Type: Expression(Integer)
 --E 7
 
---S 8 of 36
+--S 8 of 100
 dx : der := generator(1)
 --R 
 --R
@@ -25498,7 +25498,7 @@ dx : der := generator(1)
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 8
 
---S 9 of 36
+--S 9 of 100
 dy : der := generator(2)
 --R 
 --R
@@ -25506,7 +25506,7 @@ dy : der := generator(2)
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 9
 
---S 10 of 36
+--S 10 of 100
 dz : der := generator(3)
 --R 
 --R
@@ -25514,7 +25514,7 @@ dz : der := generator(3)
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 10
 
---S 11 of 36
+--S 11 of 100
 [dx,dy,dz] := [generator(i)$der for i in 1..3]
 --R 
 --R
@@ -25522,7 +25522,7 @@ dz : der := generator(3)
 --R                                   Type: List(DeRhamComplex(Integer,[x,y,z]))
 --E 11
 
---S 12 of 36
+--S 12 of 100
 alpha : der := f*dx + g*dy + h*dz
 --R 
 --R
@@ -25535,7 +25535,7 @@ alpha : der := f*dx + g*dy + h*dz
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 12
 
---S 13 of 36
+--S 13 of 100
 beta  : der := cos(tan(x*y*z)+x*y*z)*dx + x*dy
 --R 
 --R
@@ -25543,7 +25543,7 @@ beta  : der := cos(tan(x*y*z)+x*y*z)*dx + x*dy
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 13
 
---S 14 of 36
+--S 14 of 100
 exteriorDifferential alpha
 --R 
 --R
@@ -25559,7 +25559,7 @@ exteriorDifferential alpha
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 14
 
---S 15 of 36
+--S 15 of 100
 exteriorDifferential %
 --R 
 --R
@@ -25567,7 +25567,7 @@ exteriorDifferential %
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 15
 
---S 16 of 36
+--S 16 of 100
 gamma := alpha * beta
 --R 
 --R
@@ -25580,15 +25580,16 @@ gamma := alpha * beta
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 16
 
---S 17 of 36
-exteriorDifferential(gamma) - (exteriorDifferential(alpha)*beta - alpha * exteriorDifferential(beta)) 
+--S 17 of 100
+exteriorDifferential(gamma) - (exteriorDifferential(alpha)*beta - _
+    alpha * exteriorDifferential(beta)) 
 --R 
 --R
 --R   (17)  0
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 17
 
---S 18 of 36
+--S 18 of 100
 a : BOP := operator('a)
 --R 
 --R
@@ -25596,7 +25597,7 @@ a : BOP := operator('a)
 --R                                                          Type: BasicOperator
 --E 18
 
---S 19 of 36
+--S 19 of 100
 b : BOP := operator('b)
 --R 
 --R
@@ -25604,7 +25605,7 @@ b : BOP := operator('b)
 --R                                                          Type: BasicOperator
 --E 19
 
---S 20 of 36
+--S 20 of 100
 c : BOP := operator('c)
 --R 
 --R
@@ -25612,7 +25613,7 @@ c : BOP := operator('c)
 --R                                                          Type: BasicOperator
 --E 20
 
---S 21 of 36
+--S 21 of 100
 sigma := a(x,y,z) * dx + b(x,y,z) * dy + c(x,y,z) * dz 
 --R 
 --R
@@ -25620,7 +25621,7 @@ sigma := a(x,y,z) * dx + b(x,y,z) * dy + c(x,y,z) * dz
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 21
 
---S 22 of 36
+--S 22 of 100
 theta  := a(x,y,z) * dx * dy + b(x,y,z) * dx * dz + c(x,y,z) * dy * dz 
 --R 
 --R
@@ -25628,7 +25629,7 @@ theta  := a(x,y,z) * dx * dy + b(x,y,z) * dx * dz + c(x,y,z) * dy * dz
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 22
 
---S 23 of 36
+--S 23 of 100
 totalDifferential(a(x,y,z))$der 
 --R 
 --R
@@ -25637,7 +25638,7 @@ totalDifferential(a(x,y,z))$der
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 23
 
---S 24 of 36
+--S 24 of 100
 exteriorDifferential sigma
 --R 
 --R
@@ -25650,7 +25651,7 @@ exteriorDifferential sigma
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 24
 
---S 25 of 36
+--S 25 of 100
 exteriorDifferential theta
 --R 
 --R
@@ -25659,7 +25660,7 @@ exteriorDifferential theta
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 25
 
---S 26 of 36
+--S 26 of 100
 one : der := 1
 --R 
 --R
@@ -25667,7 +25668,7 @@ one : der := 1
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 26
 
---S 27 of 36
+--S 27 of 100
 g1 : der := a([x,t,y,u,v,z,e]) * one 
 --R 
 --R
@@ -25675,7 +25676,7 @@ g1 : der := a([x,t,y,u,v,z,e]) * one
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 27
 
---S 28 of 36
+--S 28 of 100
 h1 : der := a([x,y,x,t,x,z,y,r,u,x]) * one 
 --R 
 --R
@@ -25683,7 +25684,7 @@ h1 : der := a([x,y,x,t,x,z,y,r,u,x]) * one
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 28
 
---S 29 of 36
+--S 29 of 100
 exteriorDifferential g1 
 --R 
 --R
@@ -25692,7 +25693,7 @@ exteriorDifferential g1
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 29
 
---S 30 of 36
+--S 30 of 100
 exteriorDifferential h1
 --R 
 --R
@@ -25713,7 +25714,7 @@ exteriorDifferential h1
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 30
 
---S 31 of 36
+--S 31 of 100
 coefficient(gamma, dx*dy)
 --R 
 --R
@@ -25722,7 +25723,7 @@ coefficient(gamma, dx*dy)
 --R                                                    Type: Expression(Integer)
 --E 31
 
---S 32 of 36
+--S 32 of 100
 coefficient(gamma, one)
 --R 
 --R
@@ -25730,7 +25731,7 @@ coefficient(gamma, one)
 --R                                                    Type: Expression(Integer)
 --E 32
 
---S 33 of 36
+--S 33 of 100
 coefficient(g1,one)
 --R 
 --R
@@ -25738,7 +25739,7 @@ coefficient(g1,one)
 --R                                                    Type: Expression(Integer)
 --E 33
 
---S 34 of 36
+--S 34 of 100
 gamma := alpha * beta
 --R 
 --R
@@ -25751,7 +25752,7 @@ gamma := alpha * beta
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 34
 
---S 35 of 36
+--S 35 of 100
 t1:=generator(1)$der
 --R 
 --R
@@ -25759,7 +25760,7 @@ t1:=generator(1)$der
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 35
 
---S 36 of 36
+--S 36 of 100
 degree(t1)
 --R 
 --R
@@ -25767,6 +25768,657 @@ degree(t1)
 --R                                                        Type: PositiveInteger
 --E 36
 
+)clear all
+ 
+
+--S 37 of 100
+X:=DERHAM(Integer,[x,y,z])
+--R 
+--R
+--R   (1)  DeRhamComplex(Integer,[x,y,z])
+--R                                                                 Type: Domain
+--E 37
+
+--S 38 of 100
+[dx,dy,dz]:=[generator(i)$X for i in 1..3]
+--R 
+--R
+--R   (2)  [dx,dy,dz]
+--R                                   Type: List(DeRhamComplex(Integer,[x,y,z]))
+--E 38
+
+--S 39 of 100
+f:BOP:=operator('f)
+--R 
+--R
+--R   (3)  f
+--R                                                          Type: BasicOperator
+--E 39
+
+--S 40 of 100
+g:BOP:=operator('g)
+--R 
+--R
+--R   (4)  g
+--R                                                          Type: BasicOperator
+--E 40
+
+--S 41 of 100
+h:BOP:=operator('h)
+--R 
+--R
+--R   (5)  h
+--R                                                          Type: BasicOperator
+--E 41
+
+--S 42 of 100
+a:BOP:=operator('a)
+--R 
+--R
+--R   (6)  a
+--R                                                          Type: BasicOperator
+--E 42
+
+--S 43 of 100
+b:BOP:=operator('b)
+--R 
+--R
+--R   (7)  b
+--R                                                          Type: BasicOperator
+--E 43
+
+--S 44 of 100
+c:BOP:=operator('c)
+--R 
+--R
+--R   (8)  c
+--R                                                          Type: BasicOperator
+--E 44
+
+--S 45 of 100
+sigma:=f(x,y,z)*dx + g(x,y,z)*dy + h(x,y,z)*dz
+--R 
+--R
+--R   (9)  h(x,y,z)dz + g(x,y,z)dy + f(x,y,z)dx
+--R                                         Type: DeRhamComplex(Integer,[x,y,z])
+--E 45
+
+--S 46 of 100
+theta:=a(x,y,z)*dx*dy + b(x,y,z)*dx*dz + c(x,y,z)*dy*dz
+--R 
+--R
+--R   (10)  c(x,y,z)dy dz + b(x,y,z)dx dz + a(x,y,z)dx dy
+--R                                         Type: DeRhamComplex(Integer,[x,y,z])
+--E 46
+
+--S 47 of 100
+d ==> exteriorDifferential
+--R 
+--R                                                                   Type: Void
+--E 47
+
+--S 48 of 100
+leadingCoefficient sigma
+--R 
+--R
+--R   (12)  h(x,y,z)
+--R                                                    Type: Expression(Integer)
+--E 48
+
+--S 49 of 100
+leadingBasisTerm sigma
+--R 
+--R
+--R   (13)  dz
+--R                                         Type: DeRhamComplex(Integer,[x,y,z])
+--E 49
+
+--S 50 of 100
+reductum sigma
+--R 
+--R
+--R   (14)  g(x,y,z)dy + f(x,y,z)dx
+--R                                         Type: DeRhamComplex(Integer,[x,y,z])
+--E 50
+
+--S 51 of 100
+coefficient(sigma,dz)
+--R 
+--R
+--R   (15)  h(x,y,z)
+--R                                                    Type: Expression(Integer)
+--E 51
+
+--S 52 of 100
+homogeneous? sigma
+--R 
+--R
+--R   (16)  true
+--R                                                                Type: Boolean
+--E 52
+
+--S 53 of 100
+homogeneous? (sigma+theta)
+--R 
+--R
+--R   (17)  false
+--R                                                                Type: Boolean
+--E 53
+
+--S 54 of 100
+retractable? sigma
+--R 
+--R
+--R   (18)  false
+--R                                                                Type: Boolean
+--E 54
+
+--S 55 of 100
+retractable? (1::X)
+--R 
+--R
+--R   (19)  true
+--R                                                                Type: Boolean
+--E 55
+
+--S 56 of 100
+[degree x for x in [sigma,theta,1::X]]
+--R 
+--R
+--R   (20)  [1,2,0]
+--R                                               Type: List(NonNegativeInteger)
+--E 56
+
+--S 57 of 100
+R:=Expression(Integer)
+--R 
+--R
+--R   (21)  Expression(Integer)
+--R                                                                 Type: Domain
+--E 57
+
+--S 58 of 100
+T:R->R
+--R 
+--R                                                                   Type: Void
+--E 58
+
+--S 59 of 100
+T(x)==x^2
+--R 
+--R                                                                   Type: Void
+--E 59
+
+--S 60 of 100
+map(T,sigma)
+--R 
+--R   Compiling function T with type Expression(Integer) -> Expression(
+--R      Integer) 
+--R
+--R                 2             2             2
+--R   (24)  h(x,y,z) dz + g(x,y,z) dy + f(x,y,z) dx
+--R                                         Type: DeRhamComplex(Integer,[x,y,z])
+--E 60
+
+--S 61 of 100
+exteriorDifferential sigma
+--R 
+--R
+--R   (25)
+--R     (h  (x,y,z) - g  (x,y,z))dy dz + (h  (x,y,z) - f  (x,y,z))dx dz
+--R       ,2           ,3                  ,1           ,3
+--R   + 
+--R     (g  (x,y,z) - f  (x,y,z))dx dy
+--R       ,1           ,2
+--R                                         Type: DeRhamComplex(Integer,[x,y,z])
+--E 61
+
+--S 62 of 100
+d theta
+--R 
+--R
+--R   (26)  (c  (x,y,z) - b  (x,y,z) + a  (x,y,z))dx dy dz
+--R           ,1           ,2           ,3
+--R                                         Type: DeRhamComplex(Integer,[x,y,z])
+--E 62
+
+--S 63 of 100
+F:=operator 'F
+--R 
+--R
+--R   (27)  F
+--R                                                          Type: BasicOperator
+--E 63
+
+--S 64 of 100
+nullForm:=F(x,y,z)*(1::X)
+--R 
+--R
+--R   (28)  F(x,y,z)
+--R                                         Type: DeRhamComplex(Integer,[x,y,z])
+--E 64
+
+--S 65 of 100
+d nullForm
+--R 
+--R
+--R   (29)  F  (x,y,z)dz + F  (x,y,z)dy + F  (x,y,z)dx
+--R          ,3             ,2             ,1
+--R                                         Type: DeRhamComplex(Integer,[x,y,z])
+--E 65
+
+--S 66 of 100
+totalDifferential(x^2+y^2+sin(x)*z^2)$X
+--R 
+--R
+--R                                 2
+--R   (30)  2z sin(x)dz + 2y dy + (z cos(x) + 2x)dx
+--R                                         Type: DeRhamComplex(Integer,[x,y,z])
+--E 66
+
+--S 67 of 100
+d(d sigma)
+--R 
+--R
+--R   (31)
+--R       h    (x,y,z) - h    (x,y,z) - g    (x,y,z) + g    (x,y,z) + f    (x,y,z)
+--R        ,2,1           ,1,2           ,3,1           ,1,3           ,3,2
+--R     + 
+--R       - f    (x,y,z)
+--R          ,2,3
+--R  *
+--R     dx dy dz
+--R                                         Type: DeRhamComplex(Integer,[x,y,z])
+--E 67
+
+--S 68 of 100
+d(d theta)
+--R 
+--R
+--R   (32)  0
+--R                                         Type: DeRhamComplex(Integer,[x,y,z])
+--E 68
+
+--S 69 of 100
+sigma*theta
+--R 
+--R
+--R   (33)  (a(x,y,z)h(x,y,z) - b(x,y,z)g(x,y,z) + c(x,y,z)f(x,y,z))dx dy dz
+--R                                         Type: DeRhamComplex(Integer,[x,y,z])
+--E 69
+
+--S 70 of 100
+dx*dy+dy*dx
+--R 
+--R
+--R   (34)  0
+--R                                         Type: DeRhamComplex(Integer,[x,y,z])
+--E 70
+
+--S 71 of 100
+sigma+dz
+--R 
+--R
+--R   (35)  (h(x,y,z) + 1)dz + g(x,y,z)dy + f(x,y,z)dx
+--R                                         Type: DeRhamComplex(Integer,[x,y,z])
+--E 71
+
+--S 72 of 100
+theta-(2/3)*sigma+%pi*dx
+--R 
+--R
+--R   (36)
+--R       2h(x,y,z)      2g(x,y,z)                      - 2f(x,y,z) + 3%pi
+--R     - --------- dz - --------- dy + c(x,y,z)dy dz + ------------------ dx
+--R           3              3                                   3
+--R   + 
+--R     b(x,y,z)dx dz + a(x,y,z)dx dy
+--R                                         Type: DeRhamComplex(Integer,[x,y,z])
+--E 72
+
+--S 73 of 100
+G:=diagonalMatrix([1,1,1])
+--R 
+--R
+--R         +1  0  0+
+--R         |       |
+--R   (37)  |0  1  0|
+--R         |       |
+--R         +0  0  1+
+--R                                                        Type: Matrix(Integer)
+--E 73
+
+--S 74 of 100
+dot(sigma,sigma,G)
+--R 
+--R
+--R                 2           2           2
+--R   (38)  h(x,y,z)  + g(x,y,z)  + f(x,y,z)
+--R                                                    Type: Expression(Integer)
+--E 74
+
+--S 75 of 100
+hodgeStar(sigma,G)
+--R 
+--R
+--R   (39)  h(x,y,z)dx dy - g(x,y,z)dx dz + f(x,y,z)dy dz
+--R                                         Type: DeRhamComplex(Integer,[x,y,z])
+--E 75
+
+--S 76 of 100
+A:=dot(sigma,sigma,G)*sqrt(abs(determinant(G)))
+--R 
+--R
+--R                 2           2           2
+--R   (40)  h(x,y,z)  + g(x,y,z)  + f(x,y,z)
+--R                                                    Type: Expression(Integer)
+--E 76
+
+--S 77 of 100
+B:=sigma*hodgeStar(sigma,G)
+--R 
+--R
+--R                  2           2           2
+--R   (41)  (h(x,y,z)  + g(x,y,z)  + f(x,y,z) )dx dy dz
+--R                                         Type: DeRhamComplex(Integer,[x,y,z])
+--E 77
+
+--S 78 of 100
+test(A*dx*dy*dz=B)
+--R 
+--R
+--R   (42)  true
+--R                                                                Type: Boolean
+--E 78
+
+--S 79 of 100
+hodgeStar(dx,G)
+--R 
+--R
+--R   (43)  dy dz
+--R                                         Type: DeRhamComplex(Integer,[x,y,z])
+--E 79
+
+--S 80 of 100
+hodgeStar(dy,G)
+--R 
+--R
+--R   (44)  - dx dz
+--R                                         Type: DeRhamComplex(Integer,[x,y,z])
+--E 80
+
+--S 81 of 100
+d hodgeStar(d nullForm,G) --- = Laplace(F) ?
+--R 
+--R
+--R   (45)  (F    (x,y,z) + F    (x,y,z) + F    (x,y,z))dx dy dz
+--R           ,3,3           ,2,2           ,1,1
+--R                                         Type: DeRhamComplex(Integer,[x,y,z])
+--E 81
+
+--S 82 of 100
+H:=diagonalMatrix([1+x^2,z^2+exp(-y^2),1/z^2])
+--R 
+--R
+--R         + 2                     +
+--R         |x  + 1       0       0 |
+--R         |                       |
+--R         |             2         |
+--R         |          - y     2    |
+--R   (46)  |  0     %e     + z   0 |
+--R         |                       |
+--R         |                      1|
+--R         |  0          0       --|
+--R         |                      2|
+--R         +                     z +
+--R                                            Type: Matrix(Expression(Integer))
+--E 82
+
+--S 83 of 100
+hodgeStar(dy,H)
+--R 
+--R
+--R            +--------------------------------+
+--R            |                 2
+--R            |      2       - y      2      2
+--R            |    (x  + 1)%e     + (x  + 1)z
+--R            |abs(---------------------------)
+--R            |                  2
+--R           \|                 z
+--R   (47)  - ----------------------------------- dx dz
+--R                            2
+--R                         - y     2
+--R                       %e     + z
+--R                                         Type: DeRhamComplex(Integer,[x,y,z])
+--E 83
+
+--S 84 of 100
+hodgeStar(sigma,H)
+--R 
+--R
+--R   (48)
+--R                +--------------------------------+
+--R                |                 2
+--R                |      2       - y      2      2
+--R      2         |    (x  + 1)%e     + (x  + 1)z
+--R     z h(x,y,z) |abs(---------------------------) dx dy
+--R                |                  2
+--R               \|                 z
+--R   + 
+--R                +--------------------------------+
+--R                |                 2
+--R                |      2       - y      2      2
+--R                |    (x  + 1)%e     + (x  + 1)z
+--R       g(x,y,z) |abs(---------------------------)
+--R                |                  2
+--R               \|                 z
+--R     - ------------------------------------------- dx dz
+--R                            2
+--R                         - y     2
+--R                       %e     + z
+--R   + 
+--R              +--------------------------------+
+--R              |                 2
+--R              |      2       - y      2      2
+--R              |    (x  + 1)%e     + (x  + 1)z
+--R     f(x,y,z) |abs(---------------------------)
+--R              |                  2
+--R             \|                 z
+--R     ------------------------------------------- dy dz
+--R                         2
+--R                        x  + 1
+--R                                         Type: DeRhamComplex(Integer,[x,y,z])
+--E 84
+
+--S 85 of 100
+VolH:=sqrt(abs(determinant(H)))*dx*dy*dz
+--R 
+--R
+--R          +--------------------------------+
+--R          |                 2
+--R          |      2       - y      2      2
+--R          |    (x  + 1)%e     + (x  + 1)z
+--R   (49)   |abs(---------------------------) dx dy dz
+--R          |                  2
+--R         \|                 z
+--R                                         Type: DeRhamComplex(Integer,[x,y,z])
+--E 85
+
+--S 86 of 100
+AA:=dot(sigma,sigma,H)*VolH
+--R 
+--R
+--R   (50)
+--R                                                 2
+--R              2      2        2           2   - y      2      4        2
+--R           ((x  + 1)z h(x,y,z)  + f(x,y,z) )%e     + (x  + 1)z h(x,y,z)
+--R         + 
+--R             2             2    2        2
+--R           (x  + 1)g(x,y,z)  + z f(x,y,z)
+--R      *
+--R          +--------------------------------+
+--R          |                 2
+--R          |      2       - y      2      2
+--R          |    (x  + 1)%e     + (x  + 1)z
+--R          |abs(---------------------------)
+--R          |                  2
+--R         \|                 z
+--R    /
+--R                    2
+--R         2       - y      2      2
+--R       (x  + 1)%e     + (x  + 1)z
+--R  *
+--R     dx dy dz
+--R                                         Type: DeRhamComplex(Integer,[x,y,z])
+--E 86
+
+--S 87 of 100
+BB:=sigma*hodgeStar(sigma,H)
+--R 
+--R
+--R   (51)
+--R                                                 2
+--R              2      2        2           2   - y      2      4        2
+--R           ((x  + 1)z h(x,y,z)  + f(x,y,z) )%e     + (x  + 1)z h(x,y,z)
+--R         + 
+--R             2             2    2        2
+--R           (x  + 1)g(x,y,z)  + z f(x,y,z)
+--R      *
+--R          +--------------------------------+
+--R          |                 2
+--R          |      2       - y      2      2
+--R          |    (x  + 1)%e     + (x  + 1)z
+--R          |abs(---------------------------)
+--R          |                  2
+--R         \|                 z
+--R    /
+--R                    2
+--R         2       - y      2      2
+--R       (x  + 1)%e     + (x  + 1)z
+--R  *
+--R     dx dy dz
+--R                                         Type: DeRhamComplex(Integer,[x,y,z])
+--E 87
+
+--S 88 of 100
+test(AA=BB)
+--R 
+--R
+--R   (52)  true
+--R                                                                Type: Boolean
+--E 88
+
+--S 89 of 100
+M:=DERHAM(Integer,[t,x,y,z])
+--R 
+--R
+--R   (53)  DeRhamComplex(Integer,[t,x,y,z])
+--R                                                                 Type: Domain
+--E 89
+
+--S 90 of 100
+[dt,dx,dy,dz]:=[generator(i)$M for i in 1..4]
+--R 
+--R
+--R   (54)  [dt,dx,dy,dz]
+--R                                 Type: List(DeRhamComplex(Integer,[t,x,y,z]))
+--E 90
+
+--S 91 of 100
+L:=diagonalMatrix([1,-1,-1,-1])
+--R 
+--R
+--R         +1   0    0    0 +
+--R         |                |
+--R         |0  - 1   0    0 |
+--R   (55)  |                |
+--R         |0   0   - 1   0 |
+--R         |                |
+--R         +0   0    0   - 1+
+--R                                                        Type: Matrix(Integer)
+--E 91
+
+--S 92 of 100
+hodgeStar(dt,L)
+--R 
+--R
+--R   (56)  - dx dy dz
+--R                                       Type: DeRhamComplex(Integer,[t,x,y,z])
+--E 92
+
+--S 93 of 100
+hodgeStar(dx,L)
+--R 
+--R
+--R   (57)  - dt dy dz
+--R                                       Type: DeRhamComplex(Integer,[t,x,y,z])
+--E 93
+
+--S 94 of 100
+hodgeStar(dy,L)
+--R 
+--R
+--R   (58)  dt dx dz
+--R                                       Type: DeRhamComplex(Integer,[t,x,y,z])
+--E 94
+
+--S 95 of 100
+hodgeStar(dz,L)
+--R 
+--R
+--R   (59)  - dt dx dy
+--R                                       Type: DeRhamComplex(Integer,[t,x,y,z])
+--E 95
+
+--S 96 of 100
+hodgeStar(dt*dz,L)
+--R 
+--R
+--R   (60)  - dx dy
+--R                                       Type: DeRhamComplex(Integer,[t,x,y,z])
+--E 96
+
+--S 97 of 100
+P:=a(t,x,y,z)*(dx+dy+dz-dt)
+--R 
+--R
+--R   (61)  a(t,x,y,z)dz + a(t,x,y,z)dy + a(t,x,y,z)dx - a(t,x,y,z)dt
+--R                                       Type: DeRhamComplex(Integer,[t,x,y,z])
+--E 97
+
+--S 98 of 100
+dot(P,P,L)
+--R 
+--R
+--R                      2
+--R   (62)  - 2a(t,x,y,z)
+--R                                                    Type: Expression(Integer)
+--E 98
+
+--S 99 of 100
+P*P
+--R 
+--R
+--R   (63)  0
+--R                                       Type: DeRhamComplex(Integer,[t,x,y,z])
+--E 99
+
+--S 100 of 100
+d P
+--R 
+--R
+--R   (64)
+--R     (- a  (t,x,y,z) + a  (t,x,y,z))dy dz + (- a  (t,x,y,z) + a  (t,x,y,z))dx dz
+--R         ,4             ,3                      ,4             ,2
+--R   + 
+--R     (- a  (t,x,y,z) + a  (t,x,y,z))dx dy + (a  (t,x,y,z) + a  (t,x,y,z))dt dz
+--R         ,3             ,2                    ,4             ,1
+--R   + 
+--R     (a  (t,x,y,z) + a  (t,x,y,z))dt dy + (a  (t,x,y,z) + a  (t,x,y,z))dt dx
+--R       ,3             ,1                    ,2             ,1
+--R                                       Type: DeRhamComplex(Integer,[t,x,y,z])
+--E 100
+
 )spool
 )lisp (bye)
 \end{chunk}
@@ -25900,7 +26552,8 @@ that is, D satisfies:
 
 We try this for the one-forms alpha and beta.
 
-  exteriorDifferential(gamma) - (exteriorDifferential(alpha)*beta - alpha * exteriorDifferential(beta)) 
+  exteriorDifferential(gamma) - (exteriorDifferential(alpha)*beta - _
+         alpha * exteriorDifferential(beta)) 
     0
                       Type: DeRhamComplex(Integer,[x,y,z])
 
@@ -26084,6 +26737,7 @@ DeRhamComplex(CoefRing,listIndVar:List Symbol): Export == Implement where
   NNI     ==> NonNegativeInteger
   O       ==> OutputForm
   R       ==> Expression(CoefRing)
+  SMR     ==> SquareMatrix(#listIndVar,R)
  
   Export == Join(LALG(R), RetractableTo(R)) with
       leadingCoefficient : %           -> R
@@ -26121,6 +26775,14 @@ DeRhamComplex(CoefRing,listIndVar:List Symbol): Export == Implement where
         ++  exteriorDifferential(df) returns the exterior 
         ++  derivative (gradient, curl, divergence, ...) of
         ++  the differential form df.
+      dim : % -> NNI
+        ++ dimension of the underlying space
+        ++ that is, dim ExtAlg = 2^dim
+      hodgeStar : (%,SMR) -> %
+        ++ computes the Hodge dual of the differential form % with respect
+        ++ to the metric g.
+      dot : (%,%,SMR) -> R
+        ++ compute the inner product of two differential forms w.r.t. g
 
   Implement == ASY add
       Rep := ASY 
@@ -26137,24 +26799,21 @@ DeRhamComplex(CoefRing,listIndVar:List Symbol): Export == Implement where
 
       exteriorDifferential(x) ==
         x = 0 => 0
-        termDiff(leadingCoefficient(x)$Rep,leadingBasisTerm x) + exteriorDifferential(reductum x)
+        termDiff(leadingCoefficient(x)$Rep,leadingBasisTerm x) + _
+          exteriorDifferential(reductum x)
 
       lv := [concat("d",string(liv))$String::Symbol for liv in listIndVar]
 
       displayList:EAB -> O
       displayList(x):O ==
         le: L I := exponents(x)$EAB
---      reduce(_*,[(lv.i)::O for i in 1..dim | le.i = 1])$L(O)
---        reduce(_*,[(lv.i)::O for i in 1..dim | one?(le.i)])$L(O)
         reduce(_*,[(lv.i)::O for i in 1..dim | ((le.i) = 1)])$L(O)
 
       makeTerm:(R,EAB) -> O
       makeTerm(r,x) ==
       -- we know that r ^= 0
         x = Nul(dim)$EAB  => r::O
---        one? r => displayList(x)
         (r = 1) => displayList(x)
---      r = 1 => displayList(x)
         r::O * displayList(x)
 
       terms : % -> List Record(k: EAB, c: R)
@@ -26162,10 +26821,64 @@ DeRhamComplex(CoefRing,listIndVar:List Symbol): Export == Implement where
         -- it is the case that there are at least two terms in a
         a pretend List Record(k: EAB, c: R)
         
+      err1:="CoefRing has no IntegralDomain"
+      err2:="Not Implemented"
+      err3:="Degenerate metric"
+
+      -- coord space dimension
+      dim(f) == dim
+
+      -- flip 0->1, 1->0
+      flip(b:ExtAlgBasis):ExtAlgBasis ==
+        bl := b pretend List(NNI)
+        [(i+1) rem 2 for i in bl] pretend ExtAlgBasis
+
+      -- list the positions of a's (a=0,1) in x
+      pos(x:EAB, a:NNI):List(NNI) ==
+        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)
+        reduce("*",[1/g(j,j) for j in idx]::List(R))*r.c*s.c
+
+      -- export
+      dot(x,y,g) ==
+        tx:=terms(x)
+        ty:=terms(y)
+        reduce("+",[dot1(tx.j,ty.j,g) for j in 1..#tx])
+     
       coerce(a):O ==
         a           = 0$Rep => 0$I::O
         ta := terms a
---      reductum(a) = 0$Rep => makeTerm(leadingCoefficient a, a.first.k)
         null ta.rest => makeTerm(ta.first.c, ta.first.k)
         reduce(_+,[makeTerm(t.c,t.k) for t in ta])$L(O)
 
diff --git a/changelog b/changelog
index 9c8a661..69ce447 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,8 @@
+20141008 kxp src/axiom-website/patches.html 20141008.01.kxp.patch
+20141008 kxp src/input/Makefile test new derham code
+20141008 kxp src/input/derham2.input test new derham code
+20141008 kxp books/bookvol10.3 extend derham with new code
+20141008 kxp books/bookvol10.3 add code, tests to derham domain
 20141006 kxp src/axiom-website/patches.html 20141006.01.kxp.patch
 20141006 kxp books/bookvol10.3 DERHAM: fix signature of 'degree'
 20141006 kxp Kurt Pagani <nilqed@gmail.com>
diff --git a/patch b/patch
index 554e7b0..1ffe3a3 100644
--- a/patch
+++ b/patch
@@ -1,3 +1,3 @@
-books/bookvol10.3 DERHAM: fix signature of 'degree'
+books/bookvol10.3 DERHAM: add code for differential forms
 
-Kurt Pagani <nilqed@gmail.com> found and posted a fix
+Kurt Pagani <nilqed@gmail.com> posted additional code
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index 9a78b64..98c3e98 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -4672,6 +4672,8 @@ src/share/algebra/*.daase update databases<br/>
 books/endpaper fix algebra hierarchy for OSAGP change<br/>
 <a href="patches/20141006.01.kxp.patch">20141006.01.kxp.patch</a>
 books/bookvol10.3 DERHAM: fix signature of 'degree'<br/>
+<a href="patches/20141008.01.kxp.patch">20141008.01.kxp.patch</a>
+books/bookvol10.3 DERHAM: add code for differential forms<br/>
  </body>
 </html>
 
diff --git a/src/input/Makefile.pamphlet b/src/input/Makefile.pamphlet
index 94ddfec..6b9ee5e 100644
--- a/src/input/Makefile.pamphlet
+++ b/src/input/Makefile.pamphlet
@@ -314,7 +314,7 @@ REGRESSTESTS= ackermann.regress \
     danzwill.regress  danzwill2.regress  davenport.regress \
     davis.regress \
     decimal.regress   defintef.regress defintrf.regress \
-    derham.regress    derivefail.regress \
+    derham.regress    derham2.regress  derivefail.regress \
     dfloat.regress    dftrig.regress \
     dhmatrix.regress  \
     dhtri.regress     directproduct.regress distexpr.regress \
@@ -730,7 +730,7 @@ FILES= ${OUT}/ackermann.input \
        ${OUT}/danzwill.input ${OUT}/danzwill2.input  ${OUT}/davenport.input \
        ${OUT}/davis.input    ${OUT}/decimal.input    ${OUT}/defs.input \
        ${OUT}/defintef.input ${OUT}/defintrf.input   ${OUT}/derham.input \
-       ${OUT}/derivefail.input ${OUT}/de2re.input \
+       ${OUT}/derham2.input  ${OUT}/derivefail.input ${OUT}/de2re.input \
        ${OUT}/dfloat.input   ${OUT}/dftrig.input     ${OUT}/dhmatrix.input \
        ${OUT}/dhtri.input    ${OUT}/directproduct.input \
        ${OUT}/distexpr.input ${OUT}/divisor.input ${OUT}/donsimple.input \
@@ -1090,7 +1090,7 @@ DOCFILES= \
   ${DOC}/de2re.input.dvi       ${DOC}/decimal.input.dvi    \
   ${DOC}/defintef.input.dvi    ${DOC}/defintrf.input.dvi   \
   ${DOC}/defs.input.dvi        ${DOC}/derham.input.dvi     \
-  ${DOC}/derivefail.input.dvi  \
+  ${DOC}/derham2.input.dvi     ${DOC}/derivefail.input.dvi \
   ${DOC}/dfloat.input.dvi      ${DOC}/dftrig.input.dvi     \
   ${DOC}/dhmatrix.input.dvi    ${DOC}/dhtri.input.dvi      \
   ${DOC}/directproduct.input.dvi ${DOC}/distexpr.input.dvi \
diff --git a/src/input/derham2.input.pamphlet b/src/input/derham2.input.pamphlet
new file mode 100644
index 0000000..d487d73
--- /dev/null
+++ b/src/input/derham2.input.pamphlet
@@ -0,0 +1,693 @@
+\documentclass{article}
+\usepackage{amssymb}
+\usepackage{axiom}
+\setlength{\textwidth}{400pt}
+\begin{document}
+\title{\$SPAD/src/input derham2.input}
+\author{Kurt Pagani}
+\maketitle
+\begin{abstract}
+\end{abstract}
+\eject
+\begin{chunk}{*}
+)set break resume
+)sys rm -f derham2.output
+)spool derham2.output
+)set message test on
+)set message auto off
+)clear all
+ 
+\end{chunk}
+
+$X \sim \mathit{C}^\infty(\mathbb{R}^3,\oplus^3_{p=0}\wedge^p(\mathbb{R}^3))$
+\begin{chunk}{*}
+--S 1 of 64
+X:=DERHAM(Integer,[x,y,z])
+--R 
+--R
+--R   (1)  DeRhamComplex(Integer,[x,y,z])
+--R                                                                 Type: Domain
+--E 1
+
+--S 2 of 64
+[dx,dy,dz]:=[generator(i)$X for i in 1..3]
+--R 
+--R
+--R   (2)  [dx,dy,dz]
+--R                                   Type: List(DeRhamComplex(Integer,[x,y,z]))
+--E 2
+
+--S 3 of 64
+f:BOP:=operator('f)
+--R 
+--R
+--R   (3)  f
+--R                                                          Type: BasicOperator
+--E 3
+
+--S 4 of 64
+g:BOP:=operator('g)
+--R 
+--R
+--R   (4)  g
+--R                                                          Type: BasicOperator
+--E 4
+
+--S 5 of 64
+h:BOP:=operator('h)
+--R 
+--R
+--R   (5)  h
+--R                                                          Type: BasicOperator
+--E 5
+
+--S 6 of 64
+a:BOP:=operator('a)
+--R 
+--R
+--R   (6)  a
+--R                                                          Type: BasicOperator
+--E 6
+
+--S 7 of 64
+b:BOP:=operator('b)
+--R 
+--R
+--R   (7)  b
+--R                                                          Type: BasicOperator
+--E 7
+
+--S 8 of 64
+c:BOP:=operator('c)
+--R 
+--R
+--R   (8)  c
+--R                                                          Type: BasicOperator
+--E 8
+
+--S 9 of 64
+sigma:=f(x,y,z)*dx + g(x,y,z)*dy + h(x,y,z)*dz
+--R 
+--R
+--R   (9)  h(x,y,z)dz + g(x,y,z)dy + f(x,y,z)dx
+--R                                         Type: DeRhamComplex(Integer,[x,y,z])
+--E 9
+
+--S 10 of 64
+theta:=a(x,y,z)*dx*dy + b(x,y,z)*dx*dz + c(x,y,z)*dy*dz
+--R 
+--R
+--R   (10)  c(x,y,z)dy dz + b(x,y,z)dx dz + a(x,y,z)dx dy
+--R                                         Type: DeRhamComplex(Integer,[x,y,z])
+--E 10
+
+--S 11 of 64
+d ==> exteriorDifferential
+--R 
+--R                                                                   Type: Void
+--E 11
+
+--S 12 of 64
+leadingCoefficient sigma
+--R 
+--R
+--R   (12)  h(x,y,z)
+--R                                                    Type: Expression(Integer)
+--E 12
+
+--S 13 of 64
+leadingBasisTerm sigma
+--R 
+--R
+--R   (13)  dz
+--R                                         Type: DeRhamComplex(Integer,[x,y,z])
+--E 13
+
+--S 14 of 64
+reductum sigma
+--R 
+--R
+--R   (14)  g(x,y,z)dy + f(x,y,z)dx
+--R                                         Type: DeRhamComplex(Integer,[x,y,z])
+--E 14
+
+--S 15 of 64
+coefficient(sigma,dz)
+--R 
+--R
+--R   (15)  h(x,y,z)
+--R                                                    Type: Expression(Integer)
+--E 15
+
+--S 16 of 64
+homogeneous? sigma
+--R 
+--R
+--R   (16)  true
+--R                                                                Type: Boolean
+--E 16
+
+--S 17 of 64
+homogeneous? (sigma+theta)
+--R 
+--R
+--R   (17)  false
+--R                                                                Type: Boolean
+--E 17
+
+--S 18 of 64
+retractable? sigma
+--R 
+--R
+--R   (18)  false
+--R                                                                Type: Boolean
+--E 18
+
+--S 19 of 64
+retractable? (1::X)
+--R 
+--R
+--R   (19)  true
+--R                                                                Type: Boolean
+--E 19
+
+--S 20 of 64
+[degree x for x in [sigma,theta,1::X]]
+--R 
+--R
+--R   (20)  [1,2,0]
+--R                                               Type: List(NonNegativeInteger)
+--E 20
+
+--S 21 of 64
+R:=Expression(Integer)
+--R 
+--R
+--R   (21)  Expression(Integer)
+--R                                                                 Type: Domain
+--E 21
+
+--S 22 of 64
+T:R->R
+--R 
+--R                                                                   Type: Void
+--E 22
+
+--S 23 of 64
+T(x)==x^2
+--R 
+--R                                                                   Type: Void
+--E 23
+
+--S 24 of 64
+map(T,sigma)
+--R 
+--R   Compiling function T with type Expression(Integer) -> Expression(
+--R      Integer) 
+--R
+--R                 2             2             2
+--R   (24)  h(x,y,z) dz + g(x,y,z) dy + f(x,y,z) dx
+--R                                         Type: DeRhamComplex(Integer,[x,y,z])
+--E 24
+
+--S 25 of 64
+exteriorDifferential sigma
+--R 
+--R
+--R   (25)
+--R     (h  (x,y,z) - g  (x,y,z))dy dz + (h  (x,y,z) - f  (x,y,z))dx dz
+--R       ,2           ,3                  ,1           ,3
+--R   + 
+--R     (g  (x,y,z) - f  (x,y,z))dx dy
+--R       ,1           ,2
+--R                                         Type: DeRhamComplex(Integer,[x,y,z])
+--E 25
+
+--S 26 of 64
+d theta
+--R 
+--R
+--R   (26)  (c  (x,y,z) - b  (x,y,z) + a  (x,y,z))dx dy dz
+--R           ,1           ,2           ,3
+--R                                         Type: DeRhamComplex(Integer,[x,y,z])
+--E 26
+
+--S 27 of 64
+F:=operator 'F
+--R 
+--R
+--R   (27)  F
+--R                                                          Type: BasicOperator
+--E 27
+
+--S 28 of 64
+nullForm:=F(x,y,z)*(1::X)
+--R 
+--R
+--R   (28)  F(x,y,z)
+--R                                         Type: DeRhamComplex(Integer,[x,y,z])
+--E 28
+
+--S 29 of 64
+d nullForm
+--R 
+--R
+--R   (29)  F  (x,y,z)dz + F  (x,y,z)dy + F  (x,y,z)dx
+--R          ,3             ,2             ,1
+--R                                         Type: DeRhamComplex(Integer,[x,y,z])
+--E 29
+
+--S 30 of 64
+totalDifferential(x^2+y^2+sin(x)*z^2)$X
+--R 
+--R
+--R                                 2
+--R   (30)  2z sin(x)dz + 2y dy + (z cos(x) + 2x)dx
+--R                                         Type: DeRhamComplex(Integer,[x,y,z])
+--E 30
+
+--S 31 of 64
+d(d sigma)
+--R 
+--R
+--R   (31)
+--R       h    (x,y,z) - h    (x,y,z) - g    (x,y,z) + g    (x,y,z) + f    (x,y,z)
+--R        ,2,1           ,1,2           ,3,1           ,1,3           ,3,2
+--R     + 
+--R       - f    (x,y,z)
+--R          ,2,3
+--R  *
+--R     dx dy dz
+--R                                         Type: DeRhamComplex(Integer,[x,y,z])
+--E 31
+
+--S 32 of 64
+d(d theta)
+--R 
+--R
+--R   (32)  0
+--R                                         Type: DeRhamComplex(Integer,[x,y,z])
+--E 32
+
+--S 33 of 64
+sigma*theta
+--R 
+--R
+--R   (33)  (a(x,y,z)h(x,y,z) - b(x,y,z)g(x,y,z) + c(x,y,z)f(x,y,z))dx dy dz
+--R                                         Type: DeRhamComplex(Integer,[x,y,z])
+--E 33
+
+--S 34 of 64
+dx*dy+dy*dx
+--R 
+--R
+--R   (34)  0
+--R                                         Type: DeRhamComplex(Integer,[x,y,z])
+--E 34
+
+--S 35 of 64
+sigma+dz
+--R 
+--R
+--R   (35)  (h(x,y,z) + 1)dz + g(x,y,z)dy + f(x,y,z)dx
+--R                                         Type: DeRhamComplex(Integer,[x,y,z])
+--E 35
+
+--S 36 of 64
+theta-(2/3)*sigma+%pi*dx
+--R 
+--R
+--R   (36)
+--R       2h(x,y,z)      2g(x,y,z)                      - 2f(x,y,z) + 3%pi
+--R     - --------- dz - --------- dy + c(x,y,z)dy dz + ------------------ dx
+--R           3              3                                   3
+--R   + 
+--R     b(x,y,z)dx dz + a(x,y,z)dx dy
+--R                                         Type: DeRhamComplex(Integer,[x,y,z])
+--E 36
+
+\end{chunk}
+
+Definition 1: a*hodgeStar(b,g) = dot(a,b,g)$\times$VolumeForm(g)
+
+$\alpha\land\star\beta=\langle\alpha,beta\rangle\eta,\quad
+\eta=\sqrt{|g|}dx_1\land\ldots\land dx_n$
+\begin{chunk}{*}
+--S 37 of 64
+G:=diagonalMatrix([1,1,1])
+--R 
+--R
+--R         +1  0  0+
+--R         |       |
+--R   (37)  |0  1  0|
+--R         |       |
+--R         +0  0  1+
+--R                                                        Type: Matrix(Integer)
+--E 37
+
+--S 38 of 64
+dot(sigma,sigma,G)
+--R 
+--R
+--R                 2           2           2
+--R   (38)  h(x,y,z)  + g(x,y,z)  + f(x,y,z)
+--R                                                    Type: Expression(Integer)
+--E 38
+
+--S 39 of 64
+hodgeStar(sigma,G)
+--R 
+--R
+--R   (39)  h(x,y,z)dx dy - g(x,y,z)dx dz + f(x,y,z)dy dz
+--R                                         Type: DeRhamComplex(Integer,[x,y,z])
+--E 39
+
+--S 40 of 64
+A:=dot(sigma,sigma,G)*sqrt(abs(determinant(G)))
+--R 
+--R
+--R                 2           2           2
+--R   (40)  h(x,y,z)  + g(x,y,z)  + f(x,y,z)
+--R                                                    Type: Expression(Integer)
+--E 40
+
+--S 41 of 64
+B:=sigma*hodgeStar(sigma,G)
+--R 
+--R
+--R                  2           2           2
+--R   (41)  (h(x,y,z)  + g(x,y,z)  + f(x,y,z) )dx dy dz
+--R                                         Type: DeRhamComplex(Integer,[x,y,z])
+--E 41
+
+--S 42 of 64
+test(A*dx*dy*dz=B)
+--R 
+--R
+--R   (42)  true
+--R                                                                Type: Boolean
+--E 42
+
+--S 43 of 64
+hodgeStar(dx,G)
+--R 
+--R
+--R   (43)  dy dz
+--R                                         Type: DeRhamComplex(Integer,[x,y,z])
+--E 43
+
+--S 44 of 64
+hodgeStar(dy,G)
+--R 
+--R
+--R   (44)  - dx dz
+--R                                         Type: DeRhamComplex(Integer,[x,y,z])
+--E 44
+
+--S 45 of 64
+d hodgeStar(d nullForm,G) --- = Laplace(F) ?
+--R 
+--R
+--R   (45)  (F    (x,y,z) + F    (x,y,z) + F    (x,y,z))dx dy dz
+--R           ,3,3           ,2,2           ,1,1
+--R                                         Type: DeRhamComplex(Integer,[x,y,z])
+--E 45
+
+--S 46 of 64
+H:=diagonalMatrix([1+x^2,z^2+exp(-y^2),1/z^2])
+--R 
+--R
+--R         + 2                     +
+--R         |x  + 1       0       0 |
+--R         |                       |
+--R         |             2         |
+--R         |          - y     2    |
+--R   (46)  |  0     %e     + z   0 |
+--R         |                       |
+--R         |                      1|
+--R         |  0          0       --|
+--R         |                      2|
+--R         +                     z +
+--R                                            Type: Matrix(Expression(Integer))
+--E 46
+
+--S 47 of 64
+hodgeStar(dy,H)
+--R 
+--R
+--R            +--------------------------------+
+--R            |                 2
+--R            |      2       - y      2      2
+--R            |    (x  + 1)%e     + (x  + 1)z
+--R            |abs(---------------------------)
+--R            |                  2
+--R           \|                 z
+--R   (47)  - ----------------------------------- dx dz
+--R                            2
+--R                         - y     2
+--R                       %e     + z
+--R                                         Type: DeRhamComplex(Integer,[x,y,z])
+--E 47
+
+--S 48 of 64
+hodgeStar(sigma,H)
+--R 
+--R
+--R   (48)
+--R                +--------------------------------+
+--R                |                 2
+--R                |      2       - y      2      2
+--R      2         |    (x  + 1)%e     + (x  + 1)z
+--R     z h(x,y,z) |abs(---------------------------) dx dy
+--R                |                  2
+--R               \|                 z
+--R   + 
+--R                +--------------------------------+
+--R                |                 2
+--R                |      2       - y      2      2
+--R                |    (x  + 1)%e     + (x  + 1)z
+--R       g(x,y,z) |abs(---------------------------)
+--R                |                  2
+--R               \|                 z
+--R     - ------------------------------------------- dx dz
+--R                            2
+--R                         - y     2
+--R                       %e     + z
+--R   + 
+--R              +--------------------------------+
+--R              |                 2
+--R              |      2       - y      2      2
+--R              |    (x  + 1)%e     + (x  + 1)z
+--R     f(x,y,z) |abs(---------------------------)
+--R              |                  2
+--R             \|                 z
+--R     ------------------------------------------- dy dz
+--R                         2
+--R                        x  + 1
+--R                                         Type: DeRhamComplex(Integer,[x,y,z])
+--E 48
+
+--S 49 of 64
+VolH:=sqrt(abs(determinant(H)))*dx*dy*dz
+--R 
+--R
+--R          +--------------------------------+
+--R          |                 2
+--R          |      2       - y      2      2
+--R          |    (x  + 1)%e     + (x  + 1)z
+--R   (49)   |abs(---------------------------) dx dy dz
+--R          |                  2
+--R         \|                 z
+--R                                         Type: DeRhamComplex(Integer,[x,y,z])
+--E 49
+
+--S 50 of 64
+AA:=dot(sigma,sigma,H)*VolH
+--R 
+--R
+--R   (50)
+--R                                                 2
+--R              2      2        2           2   - y      2      4        2
+--R           ((x  + 1)z h(x,y,z)  + f(x,y,z) )%e     + (x  + 1)z h(x,y,z)
+--R         + 
+--R             2             2    2        2
+--R           (x  + 1)g(x,y,z)  + z f(x,y,z)
+--R      *
+--R          +--------------------------------+
+--R          |                 2
+--R          |      2       - y      2      2
+--R          |    (x  + 1)%e     + (x  + 1)z
+--R          |abs(---------------------------)
+--R          |                  2
+--R         \|                 z
+--R    /
+--R                    2
+--R         2       - y      2      2
+--R       (x  + 1)%e     + (x  + 1)z
+--R  *
+--R     dx dy dz
+--R                                         Type: DeRhamComplex(Integer,[x,y,z])
+--E 50
+
+--S 51 of 64
+BB:=sigma*hodgeStar(sigma,H)
+--R 
+--R
+--R   (51)
+--R                                                 2
+--R              2      2        2           2   - y      2      4        2
+--R           ((x  + 1)z h(x,y,z)  + f(x,y,z) )%e     + (x  + 1)z h(x,y,z)
+--R         + 
+--R             2             2    2        2
+--R           (x  + 1)g(x,y,z)  + z f(x,y,z)
+--R      *
+--R          +--------------------------------+
+--R          |                 2
+--R          |      2       - y      2      2
+--R          |    (x  + 1)%e     + (x  + 1)z
+--R          |abs(---------------------------)
+--R          |                  2
+--R         \|                 z
+--R    /
+--R                    2
+--R         2       - y      2      2
+--R       (x  + 1)%e     + (x  + 1)z
+--R  *
+--R     dx dy dz
+--R                                         Type: DeRhamComplex(Integer,[x,y,z])
+--E 51
+
+--S 52 of 64
+test(AA=BB)
+--R 
+--R
+--R   (52)  true
+--R                                                                Type: Boolean
+--E 52
+
+\end{chunk}
+{\bf Minkowski spacetime} with metric signature $(+---)$ and
+coordinates (t,x,y,z)
+
+\noindent
+Checking {\tt http://en.wikipedia.org/wiki/Hodge\_dual}
+\begin{chunk}{*}
+--S 53 of 64
+M:=DERHAM(Integer,[t,x,y,z])
+--R 
+--R
+--R   (53)  DeRhamComplex(Integer,[t,x,y,z])
+--R                                                                 Type: Domain
+--E 53
+
+--S 54 of 64
+[dt,dx,dy,dz]:=[generator(i)$M for i in 1..4]
+--R 
+--R
+--R   (54)  [dt,dx,dy,dz]
+--R                                 Type: List(DeRhamComplex(Integer,[t,x,y,z]))
+--E 54
+
+--S 55 of 64
+L:=diagonalMatrix([1,-1,-1,-1])
+--R 
+--R
+--R         +1   0    0    0 +
+--R         |                |
+--R         |0  - 1   0    0 |
+--R   (55)  |                |
+--R         |0   0   - 1   0 |
+--R         |                |
+--R         +0   0    0   - 1+
+--R                                                        Type: Matrix(Integer)
+--E 55
+
+--S 56 of 64
+hodgeStar(dt,L)
+--R 
+--R
+--R   (56)  - dx dy dz
+--R                                       Type: DeRhamComplex(Integer,[t,x,y,z])
+--E 56
+
+--S 57 of 64
+hodgeStar(dx,L)
+--R 
+--R
+--R   (57)  - dt dy dz
+--R                                       Type: DeRhamComplex(Integer,[t,x,y,z])
+--E 57
+
+--S 58 of 64
+hodgeStar(dy,L)
+--R 
+--R
+--R   (58)  dt dx dz
+--R                                       Type: DeRhamComplex(Integer,[t,x,y,z])
+--E 58
+
+--S 59 of 64
+hodgeStar(dz,L)
+--R 
+--R
+--R   (59)  - dt dx dy
+--R                                       Type: DeRhamComplex(Integer,[t,x,y,z])
+--E 59
+
+--S 60 of 64
+hodgeStar(dt*dz,L)
+--R 
+--R
+--R   (60)  - dx dy
+--R                                       Type: DeRhamComplex(Integer,[t,x,y,z])
+--E 60
+
+--S 61 of 64
+P:=a(t,x,y,z)*(dx+dy+dz-dt)
+--R 
+--R
+--R   (61)  a(t,x,y,z)dz + a(t,x,y,z)dy + a(t,x,y,z)dx - a(t,x,y,z)dt
+--R                                       Type: DeRhamComplex(Integer,[t,x,y,z])
+--E 61
+
+--S 62 of 64
+dot(P,P,L)
+--R 
+--R
+--R                      2
+--R   (62)  - 2a(t,x,y,z)
+--R                                                    Type: Expression(Integer)
+--E 62
+
+--S 63 of 64
+P*P
+--R 
+--R
+--R   (63)  0
+--R                                       Type: DeRhamComplex(Integer,[t,x,y,z])
+--E 63
+
+--S 64 of 64
+d P
+--R 
+--R
+--R   (64)
+--R     (- a  (t,x,y,z) + a  (t,x,y,z))dy dz + (- a  (t,x,y,z) + a  (t,x,y,z))dx dz
+--R         ,4             ,3                      ,4             ,2
+--R   + 
+--R     (- a  (t,x,y,z) + a  (t,x,y,z))dx dy + (a  (t,x,y,z) + a  (t,x,y,z))dt dz
+--R         ,3             ,2                    ,4             ,1
+--R   + 
+--R     (a  (t,x,y,z) + a  (t,x,y,z))dt dy + (a  (t,x,y,z) + a  (t,x,y,z))dt dx
+--R       ,3             ,1                    ,2             ,1
+--R                                       Type: DeRhamComplex(Integer,[t,x,y,z])
+--E 64
+)spool
+)lisp (bye)
+ 
+\end{chunk}
+\eject
+\begin{thebibliography}{99}
+\bibitem{1} nothing
+\end{thebibliography}
+\end{document}
