PhysLean Documentation

PhysLean.Relativity.Tensors.Tree.NodeIdentities.ContrContr

Commutativity of two contractions #

The order of two contractions can be swapped, once the indices have been accordingly adjusted.

structure TensorTree.ContrQuartet {S : TensorSpecies} {n : } (c : Fin n.succ.succ.succ.succS.C) :

A structure containing two pairs of indices (i, j) and (k, l) to be sequentially contracted in a tensor.

Instances For

    On swapping the order of contraction (notionally (i, j) - (k, l) vs (k, l) - (i, j)), this is the new i index.

    Equations
    Instances For

      On swapping the order of contraction (notionally (i, j) - (k, l) vs (k, l) - (i, j)), this is the new j index.

      Equations
      Instances For

        On swapping the order of contraction (notionally (i, j) - (k, l) vs (k, l) - (i, j)), this is the new k index.

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For

          On swapping the order of contraction (notionally (i, j) - (k, l) vs (k, l) - (i, j)), this is the new l index.

          Equations
          Instances For
            @[simp]

            The ContrQuartet corresponding to swapping the order of contraction (notionally (i, j) - (k, l) vs (k, l) - (i, j)).

            Equations
            Instances For

              The contraction map for the first pair of indices.

              Equations
              Instances For

                The contraction map for the second pair of indices.

                Equations
                Instances For

                  The homomorphism one must apply on swapping the order of contractions.

                  Equations
                  Instances For
                    theorem TensorTree.ContrQuartet.contr_contr {S : TensorSpecies} {n : } {c : Fin n.succ.succ.succ.succS.C} (q : ContrQuartet c) (t : TensorTree S c) :
                    (contr q.k q.l (contr q.i q.j t)).tensor = (perm q.contrSwapHom (contr q.swapK q.swapL (contr q.swapI q.swapJ t))).tensor
                    def TensorTree.contrContrPerm {S : TensorSpecies} {n : } {c : Fin n.succ.succ.succ.succS.C} {i : Fin n.succ.succ.succ.succ} {j : Fin n.succ.succ.succ} {k : Fin n.succ.succ} {l : Fin n.succ} (hij : c (i.succAbove j) = S.τ (c i)) (hkl : (c i.succAbove j.succAbove) (k.succAbove l) = S.τ ((c i.succAbove j.succAbove) k)) :
                    IndexNotation.OverColor.mk ((c { i := i, j := j, k := k, l := l, hij := hij, hkl := hkl }.swapI.succAbove { i := i, j := j, k := k, l := l, hij := hij, hkl := hkl }.swapJ.succAbove) { i := i, j := j, k := k, l := l, hij := hij, hkl := hkl }.swapK.succAbove { i := i, j := j, k := k, l := l, hij := hij, hkl := hkl }.swapL.succAbove) IndexNotation.OverColor.mk ((c i.succAbove j.succAbove) k.succAbove l.succAbove)

                    The homomorphism one must apply on swapping the order of contractions. This is identical to ContrQuartet.contrSwapHom except manifestly between the correct types.

                    Equations
                    Instances For
                      @[simp]
                      theorem TensorTree.contrContrPerm_hom_left_apply {S : TensorSpecies} {n : } {c : Fin n.succ.succ.succ.succS.C} {i : Fin n.succ.succ.succ.succ} {j : Fin n.succ.succ.succ} {k : Fin n.succ.succ} {l : Fin n.succ} (hij : c (i.succAbove j) = S.τ (c i)) (hkl : (c i.succAbove j.succAbove) (k.succAbove l) = S.τ ((c i.succAbove j.succAbove) k)) (x : Fin n) :
                      (contrContrPerm hij hkl).hom.left x = x
                      theorem TensorTree.contr_contr {S : TensorSpecies} {n : } {c : Fin n.succ.succ.succ.succS.C} {i : Fin n.succ.succ.succ.succ} {j : Fin n.succ.succ.succ} {k : Fin n.succ.succ} {l : Fin n.succ} (hij : c (i.succAbove j) = S.τ (c i)) (hkl : (c i.succAbove j.succAbove) (k.succAbove l) = S.τ ((c i.succAbove j.succAbove) k)) (t : TensorTree S c) :
                      (contr k l hkl (contr i j hij t)).tensor = (perm (contrContrPerm hij hkl) (contr { i := i, j := j, k := k, l := l, hij := hij, hkl := hkl }.swapK { i := i, j := j, k := k, l := l, hij := hij, hkl := hkl }.swapL (contr { i := i, j := j, k := k, l := l, hij := hij, hkl := hkl }.swapI { i := i, j := j, k := k, l := l, hij := hij, hkl := hkl }.swapJ t))).tensor

                      Contraction nodes commute on adjusting indices.