diff --git a/sparse-tensor.cabal b/sparse-tensor.cabal
--- a/sparse-tensor.cabal
+++ b/sparse-tensor.cabal
@@ -1,5 +1,5 @@
 name:                sparse-tensor
-version:             0.2.1.1
+version:             0.2.1.2
 synopsis:            typesafe tensor algebra library
 description:
     .
diff --git a/src/Math/Tensor.hs b/src/Math/Tensor.hs
--- a/src/Math/Tensor.hs
+++ b/src/Math/Tensor.hs
@@ -595,8 +595,8 @@
 
 instance Num a => Num (SField a) where
     (+) = liftA2 (+)
-    (-) = liftA2 (+)
-    (*) = liftA2 (+)
+    (-) = liftA2 (-)
+    (*) = liftA2 (*)
     negate = fmap negate
     abs = fmap abs
     signum = fmap signum
@@ -738,7 +738,7 @@
 shiftLabels8 s = mapTo8 (shiftVarLabels s)
 
 instance TAdd a => TAdd (AnsVar a) where
-    addS (AnsVar v1) (AnsVar v2) = AnsVar $ I.unionWith addS v1 v2
+    addS (AnsVar v1) (AnsVar v2) = AnsVar $ I.filter (not . scaleZero) $ I.unionWith addS v1 v2
     negateS (AnsVar v1) = AnsVar $ I.map negateS v1
     scaleZero (AnsVar v) = I.null v
 
@@ -1120,7 +1120,7 @@
 
 (&-) :: (TIndex k, TAdd v) => Tensor n k v -> Tensor n k v -> Tensor n k v
 (&-) (Scalar a) (Scalar b) = Scalar $ subS a b
-(&-) (Tensor m1) (Tensor m2) = Tensor $ addTMaps (&-) m1 m2
+(&-) t1@(Tensor _) t2@(Tensor _) = t1 &+ (negateTens t2)
 (&-) t1 ZeroTensor = t1
 (&-) ZeroTensor t2 = negateS t2
 (&-) _ _ = error "incompatible combination of summands"
diff --git a/src/Math/Tensor/Examples/Gravity.hs b/src/Math/Tensor/Examples/Gravity.hs
--- a/src/Math/Tensor/Examples/Gravity.hs
+++ b/src/Math/Tensor/Examples/Gravity.hs
@@ -315,14 +315,14 @@
 flatInterMetric :: ATens 0 0 0 1 1 1 (SField Rational)
 flatInterMetric = contrATens2 (0,1) $ interMetric &* etaAbs
 
--- | Is given by: \(  C_{An}^{Bm} \delta_p^q - \delta_A^B \delta_m^n \)
+-- | Is given by: \(  C_{An}^{Bm} \delta_p^q - \delta_A^B \delta_p^m \delta_n^q \)
 interEqn2 :: ATens 1 1 0 0 2 2 (SField Rational)
 interEqn2 = int1 &- int2
         where
             int1 = interArea &* delta3A
             int2 = tensorTrans6 (0,1) (delta3A &* delta3A) &* delta20
 
--- | Is given by: \(  K_{In}^{Jm} \delta_p^q - \delta_I^J \delta_m^n \)
+-- | Is given by: \(  K_{In}^{Jm} \delta_p^q - \delta_I^J \delta_p^m \delta_n^q \)
 interEqn2Metric :: ATens 0 0 1 1 2 2 (SField Rational)
 interEqn2Metric = int1 &- int2
         where
diff --git a/src/Math/Tensor/Examples/Gravity/DiffeoSymEqns.hs b/src/Math/Tensor/Examples/Gravity/DiffeoSymEqns.hs
--- a/src/Math/Tensor/Examples/Gravity/DiffeoSymEqns.hs
+++ b/src/Math/Tensor/Examples/Gravity/DiffeoSymEqns.hs
@@ -38,7 +38,7 @@
 -- In the following documentation these input tensors are labeled as \(a_0,a^{A}, a^{AI}, a^{AB},\) etc. For the definition of the further included tensors see  "Math.Tensor.Examples.Gravity".
 eqn1, eqn3, eqn1A, eqn1AI,  eqn2Aa, eqn3A, eqn1AB, eqn1ABI, eqn1AaBb, eqn2ABb, eqn3AB,
 -- ** Metric
--- | The following equations can be used with the Lorentz invariant ansätze for the a traditional metric metric \(g_I = J_I^{ab}g_{ab}\) as input.
+-- | The following equations can be used with the Lorentz invariant ansätze for the a traditional metric \(g_I = J_I^{ab}g_{ab}\) as input.
 -- In the following documentation these input tensors are labeled as \(a_0,a^{A}, a^{AJ}, a^{AB},\) etc. Care must be taken as for the case of the metric equations all indices that are labeled by \(A,B,C,D,... \) are also of type @'Ind9'@,
 -- but are distinguished from the indices labeled by \(I,J,K,L,...\) as they describe the metric components and the latter ones describe symmetric spacetime derivative pairs.
 -- For the definition of the further included tensors see  "Math.Tensor.Examples.Gravity".
@@ -197,7 +197,7 @@
 
 --order 1
 
--- | The equation is given by: \( 0 = a^{AI}\left [C_{An}^{Bm}\delta^I _J- 2 \delta^A_B J_I^{pm}I^J_{pn} \right ] + a^{ABJ}C_{An}^{Cm}N_C + a^{BJ} \delta^m_n \).
+-- | The equation is given by: \( 0 = a^{AI}\left [C_{An}^{Bm}\delta^J _I- 2 \delta^B_A J_I^{pm}I^J_{pn} \right ] + a^{ABJ}C_{An}^{Cm}N_C + a^{BJ} \delta^m_n \).
 eqn1AI :: ATens 1 0 1 0 0 0 AnsVarR -> ATens 2 0 1 0 0 0 AnsVarR -> ATens 1 0 1 0 1 1 AnsVarR
 eqn1AI ans6 ans10_2 = block1 &+ block2 &+ block3
         where
@@ -221,7 +221,7 @@
 
 --order 2
 
--- | The equation is given by: \( 0 = a^{CAI} \left [C_{An}^{Bm}\delta^I _J- 2 \delta^A_B J_I^{pm}I^J_{pn} \right ] + 2 a^{ACBJ} C_{An}^{Dm} N_D + a^{CBJ} \delta ^m _n \).
+-- | The equation is given by: \( 0 = a^{CAI} \left [C_{An}^{Bm}\delta^J _I- 2 \delta^B_A J_I^{pm}I^J_{pn} \right ] + 2 a^{ACBJ} C_{An}^{Dm} N_D + a^{CBJ} \delta ^m _n \).
 eqn1ABI :: ATens 2 0 1 0 0 0 AnsVarR -> ATens 3 0 1 0 0 0 AnsVarR -> ATens 2 0 1 0 1 1 AnsVarR
 eqn1ABI ans10_2 ans14_2 = block1 &+ block2 &+ block3 &+ block4
         where
@@ -246,7 +246,7 @@
             block2 = symATens5 (0,2) block2'
             block3 = tensorTrans1 (0,1) $ symATens5 (0,2) $ contrATens1 (0,0) $ ans10_1 &* interArea
 
--- | The equation is given by: \( 0 = 2 a^{BqCr} \left [ C_{An}^{Bm} \delta ^q_p - \delta^B_A \delta^m_n \right ] +2 a^{A Bq Cr} C_{An}^{Dm} N_D + 2 a^{BqCr} \delta^m_n \).
+-- | The equation is given by: \( 0 = 2 a^{ApCr} \left [ C_{An}^{Bm} \delta ^q_p - \delta^B_A \delta^m_p \delta^q_n \right ] +2 a^{A Bq Cr} C_{An}^{Dm} N_D + 2 a^{BqCr} \delta^m_n \).
 eqn1AaBb :: ATens 2 0 0 0 2 0 AnsVarR -> ATens 3 0 0 0 2 0 AnsVarR -> ATens 2 0 0 0 3 1 AnsVarR
 eqn1AaBb ans10_1 ans14_1 = block1 &+ block2 &+ block3 &+ block4
         where
@@ -407,7 +407,7 @@
 
 --order 1
 
--- | The equation is given by: \( 0 = a^{AI}\left [K_{An}^{Bm}\delta^I _J- 2 \delta^A_B J_I^{pm}I^J_{pn} \right ] + a^{ABJ}K_{An}^{Cm}\eta_C + a^{BJ} \delta^m_n \).
+-- | The equation is given by: \( 0 = a^{AI}\left [K_{An}^{Bm}\delta^J _I- 2 \delta^B_A J_I^{pm}I^J_{pn} \right ] + a^{ABJ}K_{An}^{Cm}\eta_C + a^{BJ} \delta^m_n \).
 eqn1AIMet :: ATens 0 0 2 0 0 0 AnsVarR -> ATens 0 0 3 0 0 0 AnsVarR -> ATens 0 0 2 0 1 1 AnsVarR
 eqn1AIMet ans4 ans6 = block1 &+ block2 &+ block3
         where
@@ -431,7 +431,7 @@
 
 --order 2
 
--- | The equation is given by: \( 0 = a^{CAI} \left [K_{An}^{Bm}\delta^I _J- 2 \delta^A_B J_I^{pm}I^J_{pn} \right ] + 2 a^{ACBJ} K_{An}^{Dm} \eta_D + a^{CBJ} \delta ^m _n \).
+-- | The equation is given by: \( 0 = a^{CAI} \left [K_{An}^{Bm}\delta^J _I- 2 \delta^B_A J_I^{pm}I^J_{pn} \right ] + 2 a^{ACBJ} K_{An}^{Dm} \eta_D + a^{CBJ} \delta ^m _n \).
 eqn1ABIMet :: ATens 0 0 3 0 0 0 AnsVarR -> ATens 0 0 4 0 0 0 AnsVarR -> ATens 0 0 3 0 1 1 AnsVarR
 eqn1ABIMet ans6 ans8 = block1 &+ block2 &+ block3  &+ block4
         where
@@ -456,7 +456,7 @@
             block2 = symATens5 (0,2) block2'
             block3 = tensorTrans3 (0,1) $ symATens5 (0,2) $ contrATens2 (0,0) $ ans6_1 &* interMetric
 
--- | The equation is given by: \( 0 = 2 a^{BqCr} \left [ K_{An}^{Bm} \delta ^q_p - \delta^B_A \delta^m_n \right ] +2 a^{A Bq Cr} K_{An}^{Dm} \eta_D + 2 a^{BqCr} \delta^m_n \).
+-- | The equation is given by: \( 0 = 2 a^{ApCr} \left [ K_{An}^{Bm} \delta ^q_p - \delta^B_A \delta^m_n \right ] +2 a^{A Bq Cr} K_{An}^{Dm} \eta_D + 2 a^{BqCr} \delta^m_n \).
 eqn1AaBbMet :: ATens 0 0 2 0 2 0 AnsVarR -> ATens 0 0 3 0 2 0 AnsVarR -> ATens 0 0 2 0 3 1 AnsVarR
 eqn1AaBbMet ans6 ans8 = block1 &+ block2 &+ block3 &+ block4
         where
