示例#1
0
 def test_combineLikeTerms7(self):
     eq = Equation("3CA^{\\gamma} + \\frac{5}{7} DB^{\\gamma}")
     eq.combineLikeTerms(eq.getTree().getRoot())
     self.assertEqual(
         repr(eq), "\\(3C A^{\\gamma} +\\frac{5}{7}D B^{\\gamma} \\)",
         'error in combining like terms differing by any (numerical or symbolic) factor'
     )
示例#2
0
 def test_replaceIndices(self):
     eq = Equation(" Z \\partial_{\\mu} \\partial_{\\nu}h^{\\mu \\nu} + X \\partial_{\\alpha}\\partial_{\\beta} h^{\\alpha \\beta} ")
     indices_to_replace = "\\mu, \\nu, \\alpha, \\beta"
     replacement_indices = "\\gamma, \\zeta, \\chi, \\xi"
     eq.replaceIndices(indices_to_replace, replacement_indices)
     self.assertEqual(repr(eq), "\\(Z \\partial_{\\gamma} \\partial_{\\zeta} h^{\\gamma \\zeta} +X \\partial_{\\chi} \\partial_{\\xi} h^{\\chi \\xi} \\)",
      'error in replacing indices')
示例#3
0
 def test_combineLikeTermsNum1(self):
     eq = Equation("3A^{\\gamma} + \\frac{5}{7} A^{\\gamma} ")
     eq.combineLikeTermsWithoutSymCo(eq.getTree().getRoot())
     self.assertEqual(
         repr(eq), "\\(\\frac{26}{7} A^{\\gamma} \\)",
         'error in combining like terms differing only by a numerical factor'
     )
示例#4
0
 def test_combineLikeTermsNum9(self):
     eq = Equation("A^{\\beta} + A^{\\alpha}")
     eq.combineLikeTermsWithoutSymCo(eq.getTree().getRoot())
     self.assertEqual(
         repr(eq), "\\( A^{\\beta} + A^{\\alpha} \\)",
         'error in combining like terms differing only by a numerical factor'
     )
示例#5
0
 def test_distributep4(self):
     eq = Equation("\\partial_{\\mu} \\( A^{\\gamma}B^{\\zeta}\\) ")
     eq.getTree().distributePs(eq.getTree().getRoot())
     self.assertEqual(
         repr(eq),
         "\\( \\partial_{\\mu} A^{\\gamma} B^{\\zeta} + \\partial_{\\mu} B^{\\zeta} A^{\\gamma} \\)",
         '')
示例#6
0
 def test_factor_gcf9(self):
     eq = Equation(
         "\\(X \\partial_{\\nu}h^{\\mu \\nu} + \\partial_{\\nu} h^{\\mu \\nu}\\)"
     )
     eq.factorGCF(eq.getTree().getRoot())
     self.assertEqual(repr(eq),
                      "\\partial_{\\nu} h^{\\mu \\nu} \\(X +1 \\)", '')
示例#7
0
 def test_combineLikeTerms8(self):
     eq = Equation("XA^{\\beta} + A^{\\alpha}")
     eq.combineLikeTerms(eq.getTree().getRoot())
     self.assertEqual(
         repr(eq), "\\(X A^{\\beta} + A^{\\alpha} \\)",
         'error in combining like terms differing by any (numerical or symbolic) factor'
     )
示例#8
0
 def test_contract_etas5(self):
     eq = Equation(
         "\\eta^{\\nu \\alpha} \\partial_{\\mu} d^{\\mu}_{\\ \\zeta \\alpha}  "
     )
     eq.contract(eq.getTree().getRoot(), 'eta')
     self.assertEqual(repr(eq),
                      "\\partial_{\\mu} d_{\\ \\zeta \\ }^{\\mu \\ \\nu}",
                      '')
示例#9
0
 def test_rep_term2(self):
     eq = Equation("A^{\\alpha \\gamma} +  A^{\\gamma}  + C^{} ")
     term_to_replace = "A^{\\gamma}"
     replacement_term = "B^{\\gamma}"
     eq.replaceTerms(term_to_replace, replacement_term)
     self.assertEqual(repr(eq),
                      "\\( A^{\\alpha \\gamma} + B^{\\gamma} + C^{} \\)",
                      'tensor -> tensor, replacing a tensor on its own')
示例#10
0
 def test_factor_gcf8(self):
     eq = Equation(
         "\\(\\frac{1}{2} \\partial_{\\gamma} h^{\\mu \\gamma} + \\frac{1}{4}  h^{\\gamma \\nu}\\) "
     )
     eq.factorGCF(eq.getTree().getRoot())
     self.assertEqual(
         repr(eq),
         "\\frac{1}{4} \\(2 \\partial_{\\gamma} h^{\\mu \\gamma} + h^{\\gamma \\nu} \\)",
         '')
示例#11
0
 def test_noPmult14(self):
     eq = Equation(
         "\\delta^{\\gamma}_{\\zeta} \\eta^{\\nu \\alpha} \\partial_{\\mu} \\(Y \\partial_{\\nu}h^{\\mu \\zeta} + X \\partial^{\\mu} h^{\\zeta }_{\\nu}\\)"
     )
     eq.getTree().noPfoil(eq.getTree().getRoot())
     self.assertEqual(
         repr(eq),
         "\\partial_{\\mu} \\(Y \\delta_{\\zeta}^{\\gamma} \\eta^{\\nu \\alpha} \\partial_{\\nu} h^{\\mu \\zeta} +X \\delta_{\\zeta}^{\\gamma} \\eta^{\\nu \\alpha} \\partial^{\\mu} h_{\\nu}^{\\zeta} \\)",
         '')
示例#12
0
 def test_noPmult15(self):
     eq = Equation(
         "\\(A \\eta^{\\gamma \\epsilon} + A5B + 56 \\delta^{\\phi}_{\\xi} \\) \\partial_{\\mu} \\(Y \\partial_{\\nu}h^{\\mu \\nu} + X \\partial^{\\mu} h^{\\nu }_{\\nu}\\)"
     )
     eq.getTree().noPfoil(eq.getTree().getRoot())
     self.assertEqual(
         repr(eq),
         "\\partial_{\\mu} \\(YA \\eta^{\\gamma \\epsilon} \\partial_{\\nu} h^{\\mu \\nu} +5 YAB \\partial_{\\nu} h^{\\mu \\nu} +56 Y \\delta_{\\xi}^{\\phi} \\partial_{\\nu} h^{\\mu \\nu} +XA \\eta^{\\gamma \\epsilon} \\partial^{\\mu} h_{\\nu}^{\\nu} +5 XAB \\partial^{\\mu} h_{\\nu}^{\\nu}  \\\\ \n +56 X \\delta_{\\xi}^{\\phi} \\partial^{\\mu} h_{\\nu}^{\\nu} \\)",
         '')
示例#13
0
 def test_noPmult17(self):
     eq = Equation(
         "H \\(A^{\\epsilon} + B^{\\gamma} \\) \\( \\partial_{\\mu}X^{\\mu} + M^{\\nu \\zeta}_{\\gamma} \\) \\( X + Y\\) "
     )
     eq.getTree().noPfoil(eq.getTree().getRoot())
     self.assertEqual(
         repr(eq),
         "\\(HX A^{\\epsilon} \\partial_{\\mu} X^{\\mu} +HY A^{\\epsilon} \\partial_{\\mu} X^{\\mu} +HX A^{\\epsilon} M_{\\gamma}^{\\nu \\zeta} +HY A^{\\epsilon} M_{\\gamma}^{\\nu \\zeta} +HX B^{\\gamma} \\partial_{\\mu} X^{\\mu} +HY B^{\\gamma} \\partial_{\\mu} X^{\\mu}  \\\\ \n +HX B^{\\gamma} M_{\\gamma}^{\\nu \\zeta} +HY B^{\\gamma} M_{\\gamma}^{\\nu \\zeta} \\)",
         '')
示例#14
0
 def test_noPmult9(self):
     eq = Equation(
         "A^{\\epsilon} \\partial_{\\mu}  \\(Y \\partial_{\\nu}h^{\\mu \\nu} + X \\partial^{\\mu} h^{\\nu }_{\\nu}\\) - B^{\\epsilon}   "
     )
     eq.getTree().noPfoil(eq.getTree().getRoot())
     self.assertEqual(
         repr(eq),
         "A^{\\epsilon} \\partial_{\\mu} \\(Y \\partial_{\\nu} h^{\\mu \\nu} +X \\partial^{\\mu} h_{\\nu}^{\\nu} \\)- B^{\\epsilon}",
         '')
示例#15
0
 def test_rep_term17(self):
     eq = Equation("A^{\\alpha \\gamma} +  A^{\\gamma}  + C^{} ")
     term_to_replace = "A^{\\gamma}"
     replacement_term = "B^{\\gamma} + 8fG^{\\gamma}"
     eq.replaceTerms(term_to_replace, replacement_term)
     self.assertEqual(
         repr(eq),
         "\\( A^{\\alpha \\gamma} + C^{} \\)+\\( B^{\\gamma} +8 f G^{\\gamma} \\)",
         'tensor -> sum, replacing just a tensor')
示例#16
0
 def test_noPmult13(self):
     eq = Equation(
         "\\(A + 5B + CD \\) \\partial_{\\mu} \\(Y \\partial_{\\nu}h^{\\mu \\nu} + X \\partial^{\\mu} h^{\\nu }_{\\nu}\\) "
     )
     eq.getTree().noPfoil(eq.getTree().getRoot())
     self.assertEqual(
         repr(eq),
         "\\partial_{\\mu} \\(YA \\partial_{\\nu} h^{\\mu \\nu} +5 YB \\partial_{\\nu} h^{\\mu \\nu} +YCD \\partial_{\\nu} h^{\\mu \\nu} +XA \\partial^{\\mu} h_{\\nu}^{\\nu} +5 XB \\partial^{\\mu} h_{\\nu}^{\\nu} +XCD \\partial^{\\mu} h_{\\nu}^{\\nu} \\)",
         '')
示例#17
0
 def test_contract_both(self):
     eq = Equation(
         "\\delta^{\\gamma}_{\\beta} \\eta^{\\nu \\alpha} \\partial_{\\mu} h^{\\mu}_{\\alpha}\\partial_{\\nu} h^{\\beta}_{\\gamma}",
         "h")
     eq.contract(eq.getTree().getRoot())
     self.assertEqual(
         repr(eq),
         "\\partial_{\\mu} h^{\\mu \\nu} \\partial_{\\nu} h_{\\gamma}^{\\gamma}",
         '')
示例#18
0
 def test_distributep8(self):
     eq = Equation("\\square \\(A^{\\alpha}B_{\\alpha}\\)")
     eq.getTree().distributePs(eq.getTree().getRoot())
     # self.assertRegex(repr(eq), '\\( \\square A\^\{\\alpha\} B_\{\\alpha\} + \\partial\^\{\\.*\} B_\{\\alpha\} \\partial_\{\\.*\} A\^\{\\alpha\} + \\square B_\{\\\\alpha\} A\^\{\\alpha\} + \\partial\^\{\\\\.*\} A\^\{\\alpha\} \\partial_\{\\.*\} B_\{\\alpha\} \\)', 'product rule with squares')
     # self.assertRegex(repr(eq), '\\\\( \\\\square A\{\\\\alpha} B_{\\\\alpha} \+ \\\\partial\^{\\\\.*} B_{\\\\alpha} \\\\partial_{\\\\.*} A\^{\\\\alpha} \+ \\\\square B_{\\\\alpha} A\^{\\\\alpha} \+ \\\\partial\^{\\\\.*} A\^{\\\\alpha} \\\\partial_{\\\\.*} B_{\\\\alpha} \\\\)', 'product rule with squares')
     self.assertRegex(
         repr(eq),
         '\\\\\( \\\\square A\^\{\\\\alpha\} B_\{\\\\alpha\} \+ \\\\partial\^\{\\\\.*\} B_\{\\\\alpha\} \\\\partial_\{\\\\.*\} A\^\{\\\\alpha\} \+ \\\\square B_\{\\\\alpha\} A\^\{\\\\alpha\} \+ \\\\partial\^\{\\\\.*\} A\^\{\\\\alpha\} \\\\partial_\{\\\\.*\} B_\{\\\\alpha\} \\\\\)',
         'product rule with squares')
示例#19
0
 def test_foil1(self):
     eq = Equation(
         "\\(A^{}\\) \\partial_{\\mu} \\(Y \\partial_{\\nu}h^{\\mu \\nu} + X \\partial^{\\mu} h^{\\nu }_{\\nu}\\)"
     )
     eq.getTree().foil(eq.getTree().getRoot())
     self.assertEqual(
         repr(eq),
         "\\(Y A^{} \\partial_{\\nu} \\partial_{\\mu} h^{\\mu \\nu} +X A^{} \\partial^{\\mu} \\partial_{\\mu} h_{\\nu}^{\\nu} \\)",
         '')
示例#20
0
 def test_distributep3(self):
     eq = Equation(
         "\\partial_{\\mu} \\(5 \\partial_{\\nu}h^{\\mu \\nu} + V \\partial^{\\mu} h^{\\nu }_{\\nu}\\) "
     )
     eq.getTree().distributePs(eq.getTree().getRoot())
     self.assertEqual(
         repr(eq),
         "\\(5 \\partial_{\\nu} \\partial_{\\mu} h^{\\mu \\nu} +V \\partial^{\\mu} \\partial_{\\mu} h_{\\nu}^{\\nu} \\)",
         '')
示例#21
0
 def test_factor_gcf6(self):
     eq = Equation(
         "\\(X \\partial_{\\gamma}h^{\\mu \\gamma} A^{\\alpha}_{\\alpha} + Y \\partial_{\\nu} h^{\\mu \\nu}\\)"
     )
     eq.factorGCF(eq.getTree().getRoot())
     self.assertEqual(
         repr(eq),
         "\\partial_{\\gamma} h^{\\mu \\gamma} \\(X A_{\\alpha}^{\\alpha} +Y \\)",
         '')
示例#22
0
 def test_noPmult12(self):
     eq = Equation(
         "4 \\partial_{\\mu}  \\(Y \\partial_{\\nu}h^{\\mu \\nu} + X \\partial^{\\mu} h^{\\nu }_{\\nu}\\)"
     )
     eq.getTree().noPfoil(eq.getTree().getRoot())
     self.assertEqual(
         repr(eq),
         "\\partial_{\\mu} \\(4 Y \\partial_{\\nu} h^{\\mu \\nu} +4 X \\partial^{\\mu} h_{\\nu}^{\\nu} \\)",
         '')
示例#23
0
 def test_noPmult7(self):
     eq = Equation(
         " \\partial_{\\mu} \\(Y \\partial_{\\nu}h^{\\mu \\nu} + X \\partial^{\\mu} h^{\\nu }_{\\nu}\\) +  T^{\\gamma} \\(A_{\\gamma} + B_{\\gamma}\\)"
     )
     eq.getTree().noPfoil(eq.getTree().getRoot())
     self.assertEqual(
         repr(eq),
         "\\partial_{\\mu} \\(Y \\partial_{\\nu} h^{\\mu \\nu} +X \\partial^{\\mu} h_{\\nu}^{\\nu} \\)+\\( T^{\\gamma} A_{\\gamma} + T^{\\gamma} B_{\\gamma} \\)",
         '')
示例#24
0
 def test_factor_gcf1(self):
     eq = Equation(
         "\\(3Y \\partial_{\\nu}h^{\\mu \\nu} + Y \\partial^{\\mu} h^{\\nu }_{\\nu}\\)"
     )
     eq.factorGCF(eq.getTree().getRoot())
     self.assertEqual(
         repr(eq),
         "Y \\(3 \\partial_{\\nu} h^{\\mu \\nu} + \\partial^{\\mu} h_{\\nu}^{\\nu} \\)",
         '')
示例#25
0
 def test_sortTerms3(self):
     eq = Equation(
         "\\(  9\\partial^{\\chi}B_{\\chi} +\\frac{1}{2}T \\partial_{\\gamma}\\partial_{\\kappa}A^{\\gamma} +M C^{} \\)"
     )
     eq.sortTerms()
     self.assertEqual(
         repr(eq),
         "\\(M C^{} +9 \\partial^{\\chi} B_{\\chi} +\\frac{1}{2} T \\partial_{\\gamma} \\partial_{\\kappa} A^{\\gamma} \\)",
         'error in sorting the terms by number of derivatives (least to greatest)'
     )
示例#26
0
 def test_combineLikeTermsNum10(self):
     eq = Equation(
         "3\\partial_{\\gamma}A^{\\gamma}_{\\nu} + 7 \\partial_{\\beta}\\partial^{\\zeta}A^{\\beta}_{\\nu \\zeta}"
     )
     eq.combineLikeTermsWithoutSymCo(eq.getTree().getRoot())
     self.assertEqual(
         repr(eq),
         "\\(3 \\partial_{\\gamma} A_{\\nu}^{\\gamma} +7 \\partial_{\\beta} \\partial^{\\zeta} A_{\\nu \\zeta}^{\\beta} \\)",
         'error in combining like terms differing only by a numerical factor'
     )
示例#27
0
 def test_rep_term19(self):
     eq = Equation(
         "\\partial_{\\mu} \\partial_{\\nu} h^{\\mu \\nu} + \\frac{3}{4} Y")
     term_to_replace = "\\partial_{\\mu} \\partial_{\\nu} h^{\\mu \\nu}"
     replacement_term = "\\partial_{\\gamma} B^{\\gamma} + 5 + G^{\\mu}_{\\mu} "
     eq.replaceTerms(term_to_replace, replacement_term)
     self.assertEqual(
         repr(eq),
         "\\(\\frac{3}{4} Y \\)+\\( \\partial_{\\gamma} B^{\\gamma} +5 + G_{\\mu}^{\\mu} \\)",
         'tensor -> sum, replacing a tensor that has partial derivatives')
示例#28
0
 def test_sortTerms5(self):
     eq = Equation(
         "\\(\\partial_{\\gamma} \\partial_{\\kappa}\\square A^{\\gamma}\\partial_{\\omega}G^{} + \\square \\partial^{\\chi}B_{\\chi} + \\square X_{\\xi}+ \\square V_{}C^{} \\)"
     )
     eq.sortTerms()
     self.assertEqual(
         repr(eq),
         "\\( \\square X_{\\xi} + \\square V^{} C^{} + \\partial^{\\chi} \\square B_{\\chi} + \\partial_{\\gamma} \\partial_{\\kappa} \\square A^{\\gamma} \\partial_{\\omega} G^{} \\)",
         'error in sorting the terms by number of derivatives (least to greatest)'
     )
示例#29
0
 def test_rep_term4(self):
     eq = Equation(
         "\\partial_{\\mu} \\partial_{\\nu} h^{\\mu \\nu} + \\frac{3}{4} Y")
     term_to_replace = "\\partial_{\\mu} \\partial_{\\nu} h^{\\mu \\nu} "
     replacement_term = "B^{\\gamma}_{\\gamma} "
     eq.replaceTerms(term_to_replace, replacement_term)
     self.assertEqual(
         repr(eq), "\\( B_{\\gamma}^{\\gamma} +\\frac{3}{4} Y \\)",
         'tensor -> tensor, replacing a tensor that has partial derivatives with just a tensor'
     )
示例#30
0
 def test_sortTerms6(self):
     eq = Equation(
         "\\partial_{\\xi}H^{}\\partial_{\\omega}G^{}\\partial^{\\xi}M^{} + \\square A^{}"
     )
     eq.sortTerms()
     self.assertEqual(
         repr(eq),
         "\\( \\square A^{} + \\partial_{\\xi} H^{} \\partial_{\\omega} G^{} \\partial^{\\xi} M^{} \\)",
         'error in sorting the terms by number of derivatives (least to greatest)'
     )