not a TensorRef == no indexes used

assertIndexesUsed(c)
${fixed} = {fixed}$
${summed} = {summed}$
${extra} = {extra}$
GOOD
time: 0.506000ms
stack: size: 7
  • Init
  • Prune
  • Expand
  • Prune
  • Factor
  • Prune
  • Tidy

single TensorRef, fixed

assertIndexesUsed(c'_i', {fixed='_i'})
${{ fixed} _i} = {{ fixed} _i}$
${summed} = {summed}$
${extra} = {extra}$
GOOD
time: 0.855000ms
stack: size: 7
  • Init
  • Prune
  • Expand
  • Prune
  • Factor
  • Prune
  • Tidy

assertIndexesUsed(c'_ij', {fixed='_ij'})
${{{ fixed} _i} _j} = {{{ fixed} _i} _j}$
${summed} = {summed}$
${extra} = {extra}$
GOOD
time: 0.705000ms
stack: size: 7
  • Init
  • Prune
  • Expand
  • Prune
  • Factor
  • Prune
  • Tidy

assertIndexesUsed(c'^i_jk', {fixed='^i_jk'})
${{{{ fixed} ^i} _j} _k} = {{{{ fixed} ^i} _j} _k}$
${summed} = {summed}$
${extra} = {extra}$
GOOD
time: 0.764000ms
stack: size: 7
  • Init
  • Prune
  • Expand
  • Prune
  • Factor
  • Prune
  • Tidy

single TensorRef, summed

assertIndexesUsed(c'^i_i', {summed='^i'})
${fixed} = {fixed}$
${{ summed} ^i} = {{ summed} ^i}$
${extra} = {extra}$
GOOD
time: 0.513000ms
stack: size: 7
  • Init
  • Prune
  • Expand
  • Prune
  • Factor
  • Prune
  • Tidy

single TensorRef, mixed

assertIndexesUsed(c'^i_ij', {fixed='_j', summed='^i'})
${{ fixed} _j} = {{ fixed} _j}$
${{ summed} ^i} = {{ summed} ^i}$
${extra} = {extra}$
GOOD
time: 1.002000ms
stack: size: 7
  • Init
  • Prune
  • Expand
  • Prune
  • Factor
  • Prune
  • Tidy

mul, fixed * summed

assertIndexesUsed(a'_i' * b'^j_j', {fixed='_i', summed='^j'})
${{ fixed} _i} = {{ fixed} _i}$
${{ summed} ^j} = {{ summed} ^j}$
${extra} = {extra}$
GOOD
time: 0.568000ms
stack: size: 7
  • Init
  • Prune
  • Expand
  • Prune
  • Factor
  • Prune
  • Tidy

mul, fixed * fixed => summed

assertIndexesUsed(g'^im' * c'_mjk', {fixed='^i_jk', summed='^m'})
${{{{ fixed} ^i} _j} _k} = {{{{ fixed} ^i} _j} _k}$
${{ summed} ^m} = {{ summed} ^m}$
${extra} = {extra}$
GOOD
time: 0.591000ms
stack: size: 7
  • Init
  • Prune
  • Expand
  • Prune
  • Factor
  • Prune
  • Tidy

add, nothing

assertIndexesUsed(a + b)
${fixed} = {fixed}$
${summed} = {summed}$
${extra} = {extra}$
GOOD
time: 0.122000ms
stack: size: 0

    add, fixed

    assertIndexesUsed(a'_i' + b'_i', {fixed='_i'})
    ${{ fixed} _i} = {{ fixed} _i}$
    ${summed} = {summed}$
    ${extra} = {extra}$
    GOOD
    time: 0.287000ms
    stack: size: 7
    • Init
    • Prune
    • Expand
    • Prune
    • Factor
    • Prune
    • Tidy

    assertIndexesUsed(a'_ij' + b'_ij', {fixed='_ij'})
    ${{{ fixed} _i} _j} = {{{ fixed} _i} _j}$
    ${summed} = {summed}$
    ${extra} = {extra}$
    GOOD
    time: 0.363000ms
    stack: size: 7
    • Init
    • Prune
    • Expand
    • Prune
    • Factor
    • Prune
    • Tidy

    add, summed

    assertIndexesUsed(a'^i_i' + b'^i_i', {summed='^i'})
    ${fixed} = {fixed}$
    ${{ summed} ^i} = {{ summed} ^i}$
    ${extra} = {extra}$
    GOOD
    time: 0.296000ms
    stack: size: 7
    • Init
    • Prune
    • Expand
    • Prune
    • Factor
    • Prune
    • Tidy

    assertIndexesUsed(a'^i_i' + b'^j_j', {summed='^ij'})
    ${fixed} = {fixed}$
    ${{{ summed} ^i} ^j} = {{{ summed} ^i} ^j}$
    ${extra} = {extra}$
    GOOD
    time: 0.318000ms
    stack: size: 7
    • Init
    • Prune
    • Expand
    • Prune
    • Factor
    • Prune
    • Tidy

    add, extra

    assertIndexesUsed( a'_i' + b, {extra='_i'})
    ${fixed} = {fixed}$
    ${summed} = {summed}$
    ${{ extra} _i} = {{ extra} _i}$
    GOOD
    time: 0.214000ms
    stack: size: 7
    • Init
    • Prune
    • Expand
    • Prune
    • Factor
    • Prune
    • Tidy

    assertIndexesUsed( a + b'_j', {extra='_j'})
    ${fixed} = {fixed}$
    ${summed} = {summed}$
    ${{ extra} _j} = {{ extra} _j}$
    GOOD
    time: 0.233000ms
    stack: size: 7
    • Init
    • Prune
    • Expand
    • Prune
    • Factor
    • Prune
    • Tidy

    assertIndexesUsed( a'_i' + b'_j', {extra='_ij'})
    ${fixed} = {fixed}$
    ${summed} = {summed}$
    ${{{ extra} _i} _j} = {{{ extra} _i} _j}$
    GOOD
    time: 0.308000ms
    stack: size: 7
    • Init
    • Prune
    • Expand
    • Prune
    • Factor
    • Prune
    • Tidy

    add, fixed + summed

    assertIndexesUsed( a'^i_ij' + b'^i_ij', {fixed='_j', summed='^i'})
    ${{ fixed} _j} = {{ fixed} _j}$
    ${{ summed} ^i} = {{ summed} ^i}$
    ${extra} = {extra}$
    GOOD
    time: 0.359000ms
    stack: size: 7
    • Init
    • Prune
    • Expand
    • Prune
    • Factor
    • Prune
    • Tidy

    assertIndexesUsed( a'^i_ij' + b'^k_kj', {fixed='_j', summed='^ik'})
    ${{ fixed} _j} = {{ fixed} _j}$
    ${{{ summed} ^i} ^k} = {{{ summed} ^i} ^k}$
    ${extra} = {extra}$
    GOOD
    time: 0.392000ms
    stack: size: 7
    • Init
    • Prune
    • Expand
    • Prune
    • Factor
    • Prune
    • Tidy

    add, fixed + extra

    assertIndexesUsed( a'_ij' + b'_kj', {fixed='_j', extra='_ik'})
    ${{ fixed} _j} = {{ fixed} _j}$
    ${summed} = {summed}$
    ${{{ extra} _i} _k} = {{{ extra} _i} _k}$
    GOOD
    time: 0.300000ms
    stack: size: 7
    • Init
    • Prune
    • Expand
    • Prune
    • Factor
    • Prune
    • Tidy

    add, summed + extra

    assertIndexesUsed( a'^i_ij' + b'^i_ik', {summed='^i', extra='_jk'})
    ${fixed} = {fixed}$
    ${{ summed} ^i} = {{ summed} ^i}$
    ${{{ extra} _j} _k} = {{{ extra} _j} _k}$
    GOOD
    time: 0.423000ms
    stack: size: 7
    • Init
    • Prune
    • Expand
    • Prune
    • Factor
    • Prune
    • Tidy

    add, fixed + summed + extra

    assertIndexesUsed( a'_ij^jk' + b'_ij^jl', {fixed='_i', summed='_j', extra='^kl'})
    ${{ fixed} _i} = {{ fixed} _i}$
    ${{ summed} _j} = {{ summed} _j}$
    ${{{ extra} ^k} ^l} = {{{ extra} ^k} ^l}$
    GOOD
    time: 0.448000ms
    stack: size: 7
    • Init
    • Prune
    • Expand
    • Prune
    • Factor
    • Prune
    • Tidy


    TODO fixed and summed of add
    TODO fixed and summed of add and mul


    notice that the summed index is counted by the number of the symbol's occurrence, regardless of the lower/upper
    this means the lower/upper of the summed will be arbitrary

    assertIndexesUsed( a'^i' * b'_i' * c'_j', {fixed='_j', summed='^i'})
    ${{ fixed} _j} = {{ fixed} _j}$
    ${{ summed} ^i} = {{ summed} ^i}$
    ${extra} = {extra}$
    GOOD
    time: 0.339000ms
    stack: size: 7
    • Init
    • Prune
    • Expand
    • Prune
    • Factor
    • Prune
    • Tidy


    assertIndexesUsed(a'^i' * b'_i' * c'_j' + d'^i' * e'_i' * f'_j', {fixed='_j', summed='^i'})
    ${{ fixed} _j} = {{ fixed} _j}$
    ${{ summed} ^i} = {{ summed} ^i}$
    ${extra} = {extra}$
    GOOD
    time: 0.401000ms
    stack: size: 7
    • Init
    • Prune
    • Expand
    • Prune
    • Factor
    • Prune
    • Tidy


    assertIndexesUsed(a'^i' * b'_i', {summed='^i'})
    ${fixed} = {fixed}$
    ${{ summed} ^i} = {{ summed} ^i}$
    ${extra} = {extra}$
    GOOD
    time: 0.202000ms
    stack: size: 7
    • Init
    • Prune
    • Expand
    • Prune
    • Factor
    • Prune
    • Tidy


    assertIndexesUsed(a'^i' * b'_i' + c, {summed='^i'})
    ${fixed} = {fixed}$
    ${{ summed} ^i} = {{ summed} ^i}$
    ${extra} = {extra}$
    GOOD
    time: 0.236000ms
    stack: size: 7
    • Init
    • Prune
    • Expand
    • Prune
    • Factor
    • Prune
    • Tidy


    assertIndexesUsed(a'^i' * b'_i' + c'^i' * d'_i', {summed='^i'})
    ${fixed} = {fixed}$
    ${{ summed} ^i} = {{ summed} ^i}$
    ${extra} = {extra}$
    GOOD
    time: 0.189000ms
    stack: size: 7
    • Init
    • Prune
    • Expand
    • Prune
    • Factor
    • Prune
    • Tidy