simplifyAssertEq((a'^b' * b'^in_n' * c'^a_ab'):tidyIndexes(), a'^a' * b'^ib_b' * c'^c_ca')
${{{{ a} ^a}} {{{{{ b} ^i} ^b} _b}} {{{{{ c} ^c} _c} _a}}} = {{{{ a} ^a}} {{{{{ b} ^i} ^b} _b}} {{{{{ c} ^c} _c} _a}}}$
GOOD
time: 21.590000ms
stack: size: 8
  • Init
  • Prune
  • Expand
  • Prune
  • Factor
  • Prune
  • *:Tidy:apply
  • Tidy


simplifyAssertEq((a'^a' * b'^b_ba'):tidyIndexes(), a'^a' * b'^b_ba')
${{{{ a} ^a}} {{{{{ b} ^b} _b} _a}}} = {{{{ a} ^a}} {{{{{ b} ^b} _b} _a}}}$
GOOD
time: 9.596000ms
stack: size: 8
  • Init
  • Prune
  • Expand
  • Prune
  • Factor
  • Prune
  • *:Tidy:apply
  • Tidy

simplifyAssertEq((a'^i_i' * b'^j_j'):tidyIndexes(), a'^a_a' * b'^b_b')
${{{{{ a} ^a} _a}} {{{{ b} ^b} _b}}} = {{{{{ a} ^a} _a}} {{{{ b} ^b} _b}}}$
GOOD
time: 7.669000ms
stack: size: 8
  • Init
  • Prune
  • Expand
  • Prune
  • Factor
  • Prune
  • *:Tidy:apply
  • Tidy


simplifyAssertEq(a'^i_i^j_j':tidyIndexes(), a'^a_a^b_b')
${{{{{ a} ^a} _a} ^b} _b} = {{{{{ a} ^a} _a} ^b} _b}$
GOOD
time: 2.693000ms
stack: size: 7
  • Init
  • Prune
  • Expand
  • Prune
  • Factor
  • Prune
  • Tidy

simplifyAssertEq((a'^i_i' + a'^j_j'):tidyIndexes(), 2 * a'^a_a')
${{{{ a} ^a} _a} + {{{ a} ^a} _a}} = {{{2}} {{{{ a} ^a} _a}}}$
GOOD
time: 6.602000ms
stack: size: 8
  • Init
  • Prune
  • Expand
  • Prune
  • Factor
  • Prune
  • *:Tidy:apply
  • Tidy

simplifyAssertEq((a'^ij' * (b'_jk' + c'_jk')):tidyIndexes(), a'^ia' * (b'_ak' + c'_ak'))
${{{{{{ a} ^i} ^a}} {{{{ b} _a} _k}}} + {{{{{ a} ^i} ^a}} {{{{ c} _a} _k}}}} = {{{{{ a} ^i} ^a}} {{\left({{{{ b} _a} _k} + {{{ c} _a} _k}}\right)}}}$
GOOD
time: 28.315000ms
stack: size: 14
  • Init
  • Prune
  • *:Expand:apply
  • Expand
  • Prune
  • unm:Prune:doubleNegative
  • +:Prune:combineConstants
  • unm:Prune:doubleNegative
  • +:Prune:combineConstants
  • +:Factor:apply
  • Factor
  • Prune
  • *:Tidy:apply
  • Tidy

simplifyAssertEq((a'_ijk' * b'^jk' + a'_ilm' * b'^lm'):tidyIndexes(), 2 * a'_iab' * b'^ab')
${{{{{{ b} ^a} ^b}} {{{{{ a} _i} _a} _b}}} + {{{{{ b} ^a} ^b}} {{{{{ a} _i} _a} _b}}}} = {{{2}} {{{{{ a} _i} _a} _b}} {{{{ b} ^a} ^b}}}$
GOOD
time: 24.358000ms
stack: size: 8
  • Init
  • Prune
  • Expand
  • Prune
  • Factor
  • Prune
  • *:Tidy:apply
  • Tidy

simplifyAssertEq((a'_ajk' * b'^jk' + a'_alm' * b'^lm'):tidyIndexes(), 2 * a'_abc' * b'^bc')
${{{{{{ b} ^b} ^c}} {{{{{ a} _a} _b} _c}}} + {{{{{ b} ^b} ^c}} {{{{{ a} _a} _b} _c}}}} = {{{2}} {{{{{ a} _a} _b} _c}} {{{{ b} ^b} ^c}}}$
GOOD
time: 18.399000ms
stack: size: 8
  • Init
  • Prune
  • Expand
  • Prune
  • Factor
  • Prune
  • *:Tidy:apply
  • Tidy

simplifyAssertEq((c'^pq' * (d'_ipqj' + d'_jpqi') - c'^mr' * (d'_imrj' + d'_jmri')):tidyIndexes(), 0)
${{{{{{ c} ^a} ^b}} {{{{{{ d} _i} _a} _b} _j}}} + {{{{{ c} ^a} ^b}} {{{{{{ d} _j} _a} _b} _i}}} + {{{-1}} {{{{ c} ^a} ^b}} {{{{{{ d} _i} _a} _b} _j}}} + {{{-1}} {{{{ c} ^a} ^b}} {{{{{{ d} _j} _a} _b} _i}}}} = {0}$
GOOD
time: 33.498000ms
stack: size: 7
  • Init
  • Prune
  • Expand
  • Prune
  • Factor
  • Prune
  • Tidy

simplifyAssertEq(((a'^k' + b'^k') * (c'_k' + d'_k')):tidyIndexes(), (a'^a' + b'^a') * (c'_a' + d'_a'))
${{{{{ a} ^a}} {{{ c} _a}}} + {{{{ a} ^a}} {{{ d} _a}}} + {{{{ b} ^a}} {{{ c} _a}}} + {{{{ b} ^a}} {{{ d} _a}}}} = {{{\left({{{ a} ^a} + {{ b} ^a}}\right)}} {{\left({{{ c} _a} + {{ d} _a}}\right)}}}$
GOOD
time: 29.385000ms
stack: size: 21
  • Init
  • Prune
  • *:Expand:apply
  • *:Expand:apply
  • *:Expand:apply
  • Expand
  • +:Prune:flatten
  • Prune
  • +:Factor:apply
  • Factor
  • Prune
  • Expand
  • Prune
  • +:Factor:apply
  • Factor
  • Prune
  • *:Tidy:apply
  • *:Tidy:apply
  • *:Tidy:apply
  • *:Tidy:apply
  • Tidy

simplifyAssertEq((a'^i' * (b'_i' + c'_i^j' * d'_j')):tidyIndexes(), a'^a' * (b'_a' + c'_a^b' * d'_b'))
${{{{{ a} ^a}} {{{ b} _a}}} + {{{{ a} ^a}} {{{ d} _b}} {{{{ c} _a} ^b}}}} = {{{{ a} ^a}} {{\left({{{ b} _a} + {{{{{ c} _a} ^b}} {{{ d} _b}}}}\right)}}}$
GOOD
time: 32.015000ms
stack: size: 16
  • Init
  • Prune
  • *:Expand:apply
  • Expand
  • *:Prune:flatten
  • Prune
  • unm:Prune:doubleNegative
  • +:Prune:combineConstants
  • unm:Prune:doubleNegative
  • +:Prune:combineConstants
  • +:Factor:apply
  • Factor
  • Prune
  • *:Tidy:apply
  • *:Tidy:apply
  • Tidy

simplifyAssertEq(((a'^i' + b'^i_j' * c'^j') * (d'_i' + e'_i^k' * f'_k')):tidyIndexes(), a'^a' * d'_a' + c'^a' * b'^b_a' * d'_b' + a'^a' * f'_b' * e'_a^b' + c'^a' * f'_b' * b'^c_a' * e'_c^b')
${{{{{ a} ^a}} {{{ d} _a}}} + {{{{ a} ^a}} {{{ f} _b}} {{{{ e} _a} ^b}}} + {{{{ c} ^a}} {{{ d} _b}} {{{{ b} ^b} _a}}} + {{{{ c} ^a}} {{{ f} _b}} {{{{ b} ^c} _a}} {{{{ e} _c} ^b}}}} = {{{{{ a} ^a}} {{{ d} _a}}} + {{{{ c} ^a}} {{{{ b} ^b} _a}} {{{ d} _b}}} + {{{{ a} ^a}} {{{ f} _b}} {{{{ e} _a} ^b}}} + {{{{ c} ^a}} {{{ f} _b}} {{{{ b} ^c} _a}} {{{{ e} _c} ^b}}}}$
GOOD
time: 34.183000ms
stack: size: 12
  • Init
  • Prune
  • Expand
  • Prune
  • +:Factor:apply
  • Factor
  • Prune
  • *:Tidy:apply
  • *:Tidy:apply
  • *:Tidy:apply
  • *:Tidy:apply
  • Tidy

simplifyAssertEq((-a'_i' * a'_j' + (d'_ji^k' + d'_ij^k' - d'^k_ij') * (a'_k' + c'_k' - d'^l_lk')):tidyIndexes(), -a'_i' * a'_j' + (d'_ji^a' + d'_ij^a' - d'^a_ij') * (a'_a' + c'_a' - d'^b_ba') )
${{{{-1}} {{{ a} _i}} {{{ a} _j}}} + {{{{ a} _a}} {{{{{ d} _j} _i} ^a}}} + {{{{ a} _a}} {{{{{ d} _i} _j} ^a}}} + {{{-1}} {{{ a} _a}} {{{{{ d} ^a} _i} _j}}} + {{{{ c} _a}} {{{{{ d} _j} _i} ^a}}} + {{{{ c} _a}} {{{{{ d} _i} _j} ^a}}} + {{{-1}} {{{ c} _a}} {{{{{ d} ^a} _i} _j}}} + {{{-1}} {{{{{ d} _j} _i} ^a}} {{{{{ d} ^b} _b} _a}}} + {{{-1}} {{{{{ d} _i} _j} ^a}} {{{{{ d} ^b} _b} _a}}} + {{{{{{ d} ^a} _i} _j}} {{{{{ d} ^b} _b} _a}}}} = {{ {-{{ a} _i}} {{{ a} _j}}} + {{{\left({{{{{ d} _j} _i} ^a} + {{{{ d} _i} _j} ^a}{-{{{{ d} ^a} _i} _j}}}\right)}} {{\left({{{ a} _a} + {{ c} _a}{-{{{{ d} ^b} _b} _a}}}\right)}}}}$
GOOD
time: 89.441000ms
stack: size: 54
  • Init
  • unm:Prune:doubleNegative
  • *:Prune:flatten
  • unm:Prune:doubleNegative
  • unm:Prune:doubleNegative
  • Prune
  • *:Expand:apply
  • *:Expand:apply
  • *:Expand:apply
  • *:Expand:apply
  • Expand
  • *:Prune:flatten
  • *:Prune:flatten
  • *:Prune:flatten
  • *:Prune:flatten
  • *:Prune:flatten
  • *:Prune:flatten
  • +:Prune:flatten
  • +:Prune:flatten
  • Prune
  • +:Factor:apply
  • Factor
  • Prune
  • Expand
  • Prune
  • +:Factor:apply
  • Factor
  • Prune
  • Constant:Tidy:apply
  • *:Tidy:apply
  • *:Tidy:apply
  • *:Tidy:apply
  • *:Tidy:apply
  • *:Tidy:apply
  • Constant:Tidy:apply
  • *:Tidy:apply
  • *:Tidy:apply
  • *:Tidy:apply
  • *:Tidy:apply
  • *:Tidy:apply
  • Constant:Tidy:apply
  • *:Tidy:apply
  • *:Tidy:apply
  • *:Tidy:apply
  • Constant:Tidy:apply
  • *:Tidy:apply
  • *:Tidy:apply
  • *:Tidy:apply
  • Constant:Tidy:apply
  • *:Tidy:apply
  • *:Tidy:apply
  • *:Tidy:apply
  • *:Tidy:apply
  • Tidy

simplifyAssertEq((a'^j_aj' * b'^a' - a'^k_jk' * b'^j'):tidyIndexes(), 0)
${{{{{ b} ^a}} {{{{{ a} ^b} _a} _b}}} + {{{-1}} {{{ b} ^a}} {{{{{ a} ^b} _a} _b}}}} = {0}$
GOOD
time: 5.669000ms
stack: size: 7
  • Init
  • Prune
  • Expand
  • Prune
  • Factor
  • Prune
  • Tidy

should tidyIndexes automatically simplify()? or at least add.Factor? otherwise mul terms don't get sorted.
simplifyAssertEq((2 * phi_K^4 * A' _\\alpha' * F' _\\gamma ^\\beta' * F' _\\beta ^\\gamma' * A' ^\\alpha' + phi_K^2 * F' _\\beta ^\\alpha' * F' _\\alpha ^\\beta' + 4 * R - 2 * phi_K^4 * F' _\\beta ^\\alpha' * A' _\\gamma' * F' _\\alpha ^\\beta' * A' ^\\gamma')():tidyIndexes()(), 4 * R + F'_a^b' * F'_b^a' * phi_K^2)
${{{{4}} {{R}}} + {{{{{ F} _a} ^b}} {{{{ F} _b} ^a}} {{{{\phi_K}}^{2}}}}} = {{{{4}} {{R}}} + {{{{{ F} _a} ^b}} {{{{ F} _b} ^a}} {{{{\phi_K}}^{2}}}}}$
GOOD
time: 69.663000ms
stack: size: 10
  • Init
  • Prune
  • ^:Expand:integerPower
  • Expand
  • +:Prune:combineConstants
  • *:Prune:combinePows
  • Prune
  • Factor
  • Prune
  • Tidy

this uses the first available indexes
simplifyAssertEq((a'^i' * b'^j_ji'):tidyIndexes(), a'^a' * b'^b_ba')
${{{{ a} ^a}} {{{{{ b} ^b} _b} _a}}} = {{{{ a} ^a}} {{{{{ b} ^b} _b} _a}}}$
GOOD
time: 3.162000ms
stack: size: 8
  • Init
  • Prune
  • Expand
  • Prune
  • Factor
  • Prune
  • *:Tidy:apply
  • Tidy