simplifyAssertEq(a'^i':simplifyMetrics(), a'^i')
${{ a} ^i} = {{ a} ^i}$
GOOD
time: 2.691000ms
stack: size: 7
  • Init
  • Prune
  • Expand
  • Prune
  • Factor
  • Prune
  • Tidy

simplifyAssertEq((a'^min' * delta'_i^j'):simplifyMetrics(), a'^mjn')
${{{{ a} ^m} ^j} ^n} = {{{{ a} ^m} ^j} ^n}$
GOOD
time: 5.298000ms
stack: size: 7
  • Init
  • Prune
  • Expand
  • Prune
  • Factor
  • Prune
  • Tidy


g shouldn't apply to delta, but delta should apply to g


simplifyAssertEq((g'^ij' * delta'_j^k'):simplifyMetrics(), g'^ik')
${{{ g} ^i} ^k} = {{{ g} ^i} ^k}$
GOOD
time: 3.599000ms
stack: size: 7
  • Init
  • Prune
  • Expand
  • Prune
  • Factor
  • Prune
  • Tidy

simplifyAssertEq((delta'_j^k' * g'^ij'):simplifyMetrics(), g'^ik')
${{{ g} ^i} ^k} = {{{ g} ^i} ^k}$
GOOD
time: 2.156000ms
stack: size: 7
  • Init
  • Prune
  • Expand
  • Prune
  • Factor
  • Prune
  • Tidy


delta works on mixed tensors


simplifyAssertEq((a'^i' * delta'_i^j'):simplifyMetrics(), a'^j')
${{ a} ^j} = {{ a} ^j}$
GOOD
time: 1.977000ms
stack: size: 7
  • Init
  • Prune
  • Expand
  • Prune
  • Factor
  • Prune
  • Tidy

simplifyAssertEq((a'^i' * delta'^j_i'):simplifyMetrics(), a'^j')
${{ a} ^j} = {{ a} ^j}$
GOOD
time: 1.820000ms
stack: size: 7
  • Init
  • Prune
  • Expand
  • Prune
  • Factor
  • Prune
  • Tidy

simplifyAssertEq((delta'_i^j' * a'^i'):simplifyMetrics(), a'^j')
${{ a} ^j} = {{ a} ^j}$
GOOD
time: 2.070000ms
stack: size: 7
  • Init
  • Prune
  • Expand
  • Prune
  • Factor
  • Prune
  • Tidy

simplifyAssertEq((delta'^j_i' * a'^i'):simplifyMetrics(), a'^j')
${{ a} ^j} = {{ a} ^j}$
GOOD
time: 2.178000ms
stack: size: 7
  • Init
  • Prune
  • Expand
  • Prune
  • Factor
  • Prune
  • Tidy


does delta work when not mixed? it shouldn't (unless the metric is equal to identity)


simplifyAssertEq((a'^i' * delta'_ij'):simplifyMetrics(), a'^i' * delta'_ij')
${{{{ a} ^i}} {{{{ δ} _i} _j}}} = {{{{ a} ^i}} {{{{ δ} _i} _j}}}$
GOOD
time: 5.393000ms
stack: size: 7
  • Init
  • Prune
  • Expand
  • Prune
  • Factor
  • Prune
  • Tidy


g raises and lowers


simplifyAssertEq((a'^i' * g'_ij'):simplifyMetrics(), a'_j')
${{ a} _j} = {{ a} _j}$
GOOD
time: 2.642000ms
stack: size: 7
  • Init
  • Prune
  • Expand
  • Prune
  • Factor
  • Prune
  • Tidy

simplifyAssertEq((g'_ij' * a'^i'):simplifyMetrics(), a'_j')
${{ a} _j} = {{ a} _j}$
GOOD
time: 2.497000ms
stack: size: 7
  • Init
  • Prune
  • Expand
  • Prune
  • Factor
  • Prune
  • Tidy

simplifyAssertEq((a'_i' * g'^ij'):simplifyMetrics(), a'^j')
${{ a} ^j} = {{ a} ^j}$
GOOD
time: 2.531000ms
stack: size: 7
  • Init
  • Prune
  • Expand
  • Prune
  • Factor
  • Prune
  • Tidy

simplifyAssertEq((g'^ij' * a'_i'):simplifyMetrics(), a'^j')
${{ a} ^j} = {{ a} ^j}$
GOOD
time: 3.777000ms
stack: size: 7
  • Init
  • Prune
  • Expand
  • Prune
  • Factor
  • Prune
  • Tidy


does g work when mixed? technically $g^i_j == \delta^i_j$


simplifyAssertEq((a'^i' * g'_i^j'):simplifyMetrics(), a'^j')
${{ a} ^j} = {{ a} ^j}$
GOOD
time: 2.636000ms
stack: size: 7
  • Init
  • Prune
  • Expand
  • Prune
  • Factor
  • Prune
  • Tidy


how about simplifying solely metrics without any non-metric tensors?


simplifyAssertEq((g'^ik' * delta'_k^l'):simplifyMetrics(), g'^il')
${{{ g} ^i} ^l} = {{{ g} ^i} ^l}$
GOOD
time: 2.348000ms
stack: size: 7
  • Init
  • Prune
  • Expand
  • Prune
  • Factor
  • Prune
  • Tidy

simplifyAssertEq((g'^ik' * delta'_k^l' * delta'_l^m'):simplifyMetrics(), g'^im')
${{{ g} ^i} ^m} = {{{ g} ^i} ^m}$
GOOD
time: 2.322000ms
stack: size: 7
  • Init
  • Prune
  • Expand
  • Prune
  • Factor
  • Prune
  • Tidy


how about simplifying from metrics to deltas?


simplifyAssertEq((g'^ik' * g'_kj'):simplifyMetrics(), delta'^i_j')
${{{ δ} ^i} _j} = {{{ δ} ^i} _j}$
GOOD
time: 1.915000ms
stack: size: 7
  • Init
  • Prune
  • Expand
  • Prune
  • Factor
  • Prune
  • Tidy

simplifyAssertEq((g'^ik' * delta'_k^l' * g'_lm'):simplifyMetrics(), delta'^i_m')
${{{ δ} ^i} _m} = {{{ δ} ^i} _m}$
GOOD
time: 2.303000ms
stack: size: 7
  • Init
  • Prune
  • Expand
  • Prune
  • Factor
  • Prune
  • Tidy

simplifyAssertEq((g'^ik' * delta'_k^l' * delta'_l^m' * g'_mn'):simplifyMetrics(), delta'^i_n')
${{{ δ} ^i} _n} = {{{ δ} ^i} _n}$
GOOD
time: 3.233000ms
stack: size: 7
  • Init
  • Prune
  • Expand
  • Prune
  • Factor
  • Prune
  • Tidy


how about derivatives? delta should work but g should not.

TODO technically g should work on the last ... technically ... but raised partials are awkward to deal with.

and on that note, I might as well lower with the metric


simplifyAssertEq((a'_,i' * g'^ij'):simplifyMetrics(), a'_,i' * g'^ij')
${{{{ a} _{,i}}} {{{{ g} ^i} ^j}}} = {{{{ a} _{,i}}} {{{{ g} ^i} ^j}}}$
GOOD
time: 4.961000ms
stack: size: 7
  • Init
  • Prune
  • Expand
  • Prune
  • Factor
  • Prune
  • Tidy

simplifyAssertEq((a'^,i' * g'_ij'):simplifyMetrics(), a'^,i' * g'_ij')
${{{{ a} ^{,i}}} {{{{ g} _i} _j}}} = {{{{ a} ^{,i}}} {{{{ g} _i} _j}}}$
GOOD
time: 3.648000ms
stack: size: 7
  • Init
  • Prune
  • Expand
  • Prune
  • Factor
  • Prune
  • Tidy

simplifyAssertEq((a'_,im' * g'^ij'):simplifyMetrics(), a'_,im' * g'^ij')
${{{{{ a} _{,i}} _{,m}}} {{{{ g} ^i} ^j}}} = {{{{{ a} _{,i}} _{,m}}} {{{{ g} ^i} ^j}}}$
GOOD
time: 2.172000ms
stack: size: 7
  • Init
  • Prune
  • Expand
  • Prune
  • Factor
  • Prune
  • Tidy

simplifyAssertEq((a'^,im' * g'_ij'):simplifyMetrics(), a'^,im' * g'_ij')
${{{{{ a} ^{,i}} ^{,m}}} {{{{ g} _i} _j}}} = {{{{{ a} ^{,i}} ^{,m}}} {{{{ g} _i} _j}}}$
GOOD
time: 2.886000ms
stack: size: 7
  • Init
  • Prune
  • Expand
  • Prune
  • Factor
  • Prune
  • Tidy

simplifyAssertEq((a'_i,m' * g'^ij'):simplifyMetrics(), a'_i,m' * g'^ij')
${{{{{ a} _i} _{,m}}} {{{{ g} ^i} ^j}}} = {{{{{ a} _i} _{,m}}} {{{{ g} ^i} ^j}}}$
GOOD
time: 3.804000ms
stack: size: 7
  • Init
  • Prune
  • Expand
  • Prune
  • Factor
  • Prune
  • Tidy

simplifyAssertEq((a'^i,m' * g'_ij'):simplifyMetrics(), a'^i,m' * g'_ij')
${{{{{ a} ^i} ^{,m}}} {{{{ g} _i} _j}}} = {{{{{ a} ^i} ^{,m}}} {{{{ g} _i} _j}}}$
GOOD
time: 4.483000ms
stack: size: 7
  • Init
  • Prune
  • Expand
  • Prune
  • Factor
  • Prune
  • Tidy


but delta should simplify with commas


simplifyAssertEq((a'_,i' * delta'^i_j'):simplifyMetrics(), a'_,j')
${{ a} _{,j}} = {{ a} _{,j}}$
GOOD
time: 2.086000ms
stack: size: 7
  • Init
  • Prune
  • Expand
  • Prune
  • Factor
  • Prune
  • Tidy

simplifyAssertEq((a'^,i' * delta'_i^j'):simplifyMetrics(), a'^,j')
${{ a} ^{,j}} = {{ a} ^{,j}}$
GOOD
time: 1.904000ms
stack: size: 7
  • Init
  • Prune
  • Expand
  • Prune
  • Factor
  • Prune
  • Tidy

simplifyAssertEq((a'_,im' * delta'^i_j'):simplifyMetrics(), a'_,jm')
${{{ a} _{,j}} _{,m}} = {{{ a} _{,j}} _{,m}}$
GOOD
time: 2.080000ms
stack: size: 7
  • Init
  • Prune
  • Expand
  • Prune
  • Factor
  • Prune
  • Tidy

simplifyAssertEq((a'^,im' * delta'_i^j'):simplifyMetrics(), a'^,jm')
${{{ a} ^{,j}} ^{,m}} = {{{ a} ^{,j}} ^{,m}}$
GOOD
time: 2.314000ms
stack: size: 7
  • Init
  • Prune
  • Expand
  • Prune
  • Factor
  • Prune
  • Tidy

simplifyAssertEq((a'_i,m' * delta'^i_j'):simplifyMetrics(), a'_j_,m')
${{{ a} _j} _{,m}} = {{{ a} _j} _{,m}}$
GOOD
time: 3.231000ms
stack: size: 7
  • Init
  • Prune
  • Expand
  • Prune
  • Factor
  • Prune
  • Tidy

simplifyAssertEq((a'^i,m' * delta'_i^j'):simplifyMetrics(), a'^j^,m')
${{{ a} ^j} ^{,m}} = {{{ a} ^j} ^{,m}}$
GOOD
time: 5.555000ms
stack: size: 7
  • Init
  • Prune
  • Expand
  • Prune
  • Factor
  • Prune
  • Tidy


TODO someday:

allow g_ij to raise/lower the last partial derivative

allow g_ij to raise/lower any covariant derivatives not enclosed in partial derivatives.