not a TensorRef == no indexes used

assertIndexesUsed(c)
${fixed} = {fixed}$
${summed} = {summed}$
${extra} = {extra}$
GOOD
time: 0.540000ms
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.594000ms
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.854000ms
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.915000ms
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.447000ms
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: 0.654000ms
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.551000ms
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.719000ms
stack: size: 7
  • Init
  • Prune
  • Expand
  • Prune
  • Factor
  • Prune
  • Tidy

add, nothing

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

    add, fixed

    assertIndexesUsed(a'_i' + b'_i', {fixed='_i'})
    ${{ fixed} _i} = {{ fixed} _i}$
    ${summed} = {summed}$
    ${extra} = {extra}$
    GOOD
    time: 0.601000ms
    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.536000ms
    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.423000ms
    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.338000ms
    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.279000ms
    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.314000ms
    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.228000ms
    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.294000ms
    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.534000ms
    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.571000ms
    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.610000ms
    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.689000ms
    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.610000ms
    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.637000ms
    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.265000ms
    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.227000ms
    stack: size: 7
    • Init
    • Prune
    • Expand
    • Prune
    • Factor
    • Prune
    • Tidy