not a TensorRef == no indexes used

assertIndexesUsed(c)
${fixed} = {fixed}$
${summed} = {summed}$
${extra} = {extra}$
GOOD
time: 2.461000ms
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: 5.197000ms
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: 3.559000ms
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: 3.845000ms
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: 3.152000ms
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: 3.030000ms
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: 2.612000ms
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: 7.294000ms
stack: size: 7
  • Init
  • Prune
  • Expand
  • Prune
  • Factor
  • Prune
  • Tidy

add, nothing

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

    add, fixed

    assertIndexesUsed(a'_i' + b'_i', {fixed='_i'})
    ${{ fixed} _i} = {{ fixed} _i}$
    ${summed} = {summed}$
    ${extra} = {extra}$
    GOOD
    time: 2.032000ms
    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: 3.255000ms
    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: 2.185000ms
    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: 3.853000ms
    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: 2.355000ms
    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: 2.026000ms
    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: 2.184000ms
    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: 3.219000ms
    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: 3.543000ms
    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: 3.088000ms
    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: 4.456000ms
    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: 6.256000ms
    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: 4.291000ms
    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: 4.838000ms
    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: 1.866000ms
    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: 1.381000ms
    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: 1.650000ms
    stack: size: 7
    • Init
    • Prune
    • Expand
    • Prune
    • Factor
    • Prune
    • Tidy