PhysLean Documentation

PhysLean.QFT.PerturbationTheory.WickContraction.Basic

Wick contractions #

Given a natural number n, which will correspond to the number of fields needing contracting, a Wick contraction is a finite set of pairs of Fin n (numbers 0, ..., n-1), such that no element of Fin n occurs in more than one pair. The pairs are the positions of fields we 'contract' together.

Equations
Instances For

    The contraction consisting of no contracted pairs.

    Equations
    Instances For
      theorem WickContraction.exists_pair_of_not_eq_empty {n : } (c : WickContraction n) (h : c empty) :
      ∃ (i : Fin n) (j : Fin n), {i, j} c

      The equivalence between WickContraction n and WickContraction m derived from a propositional equality of n and m.

      Equations
      Instances For
        @[simp]
        theorem WickContraction.congr_refl {n : } (c : WickContraction n) :
        (congr ) c = c
        @[simp]
        theorem WickContraction.card_congr {n m : } (h : n = m) (c : WickContraction n) :
        (↑((congr h) c)).card = (↑c).card
        @[simp]
        theorem WickContraction.congr_trans {n m o : } (h1 : n = m) (h2 : m = o) :
        (congr h1).trans (congr h2) = congr
        @[simp]
        theorem WickContraction.congr_trans_apply {n m o : } (h1 : n = m) (h2 : m = o) (c : WickContraction n) :
        (congr h2) ((congr h1) c) = (congr ) c
        theorem WickContraction.mem_congr_iff {n m : } (h : n = m) {c : WickContraction n} {a : Finset (Fin m)} :
        a ((congr h) c) Finset.map (finCongr ).toEmbedding a c
        def WickContraction.congrLift {n m : } (h : n = m) {c : WickContraction n} (a : { x : Finset (Fin n) // x c }) :
        { x : Finset (Fin m) // x ((congr h) c) }

        Given a contracted pair in c : WickContraction n the contracted pair in congr h c.

        Equations
        Instances For
          def WickContraction.congrLiftInv {n m : } (h : n = m) {c : WickContraction n} (a : { x : Finset (Fin m) // x ((congr h) c) }) :
          { x : Finset (Fin n) // x c }

          Given a contracted pair in c : WickContraction n the contracted pair in congr h c.

          Equations
          Instances For
            def WickContraction.getDual? {n : } (c : WickContraction n) (i : Fin n) :

            For a contraction c : WickContraction n and i : Fin n the j such that {i, j} is a contracted pair in c. If such an j does not exist, this returns none.

            Equations
            Instances For
              theorem WickContraction.getDual?_congr {n m : } (h : n = m) (c : WickContraction n) (i : Fin m) :
              ((congr h) c).getDual? i = Option.map (⇑(finCongr h)) (c.getDual? ((finCongr ) i))
              theorem WickContraction.getDual?_congr_get {n m : } (h : n = m) (c : WickContraction n) (i : Fin m) (hg : (((congr h) c).getDual? i).isSome = true) :
              (((congr h) c).getDual? i).get hg = (finCongr h) ((c.getDual? ((finCongr ) i)).get )
              @[simp]
              theorem WickContraction.getDual?_get_self_mem {n : } (c : WickContraction n) (i : Fin n) (h : (c.getDual? i).isSome = true) :
              {(c.getDual? i).get h, i} c
              @[simp]
              theorem WickContraction.self_getDual?_get_mem {n : } (c : WickContraction n) (i : Fin n) (h : (c.getDual? i).isSome = true) :
              {i, (c.getDual? i).get h} c
              theorem WickContraction.getDual?_eq_some_neq {n : } (c : WickContraction n) (i j : Fin n) (h : c.getDual? i = some j) :
              ¬i = j
              @[simp]
              theorem WickContraction.self_neq_getDual?_get {n : } (c : WickContraction n) (i : Fin n) (h : (c.getDual? i).isSome = true) :
              ¬i = (c.getDual? i).get h
              @[simp]
              theorem WickContraction.getDual?_get_self_neq {n : } (c : WickContraction n) (i : Fin n) (h : (c.getDual? i).isSome = true) :
              ¬(c.getDual? i).get h = i
              theorem WickContraction.getDual?_isSome_iff {n : } (c : WickContraction n) (i : Fin n) :
              (c.getDual? i).isSome = true ∃ (a : { x : Finset (Fin n) // x c }), i a
              theorem WickContraction.getDual?_isSome_of_mem {n : } (c : WickContraction n) (a : { x : Finset (Fin n) // x c }) (i : { x : Fin n // x a }) :
              @[simp]

              Extracting parts from a contraction. #

              def WickContraction.fstFieldOfContract {n : } (c : WickContraction n) (a : { x : Finset (Fin n) // x c }) :
              Fin n

              The smallest of the two positions in a contracted pair given a Wick contraction.

              Equations
              Instances For
                @[simp]
                theorem WickContraction.fstFieldOfContract_congr {n m : } (h : n = m) (c : WickContraction n) (a : { x : Finset (Fin n) // x c }) :
                def WickContraction.sndFieldOfContract {n : } (c : WickContraction n) (a : { x : Finset (Fin n) // x c }) :
                Fin n

                The largest of the two positions in a contracted pair given a Wick contraction.

                Equations
                Instances For
                  @[simp]
                  theorem WickContraction.sndFieldOfContract_congr {n m : } (h : n = m) (c : WickContraction n) (a : { x : Finset (Fin n) // x c }) :
                  @[simp]
                  @[simp]
                  theorem WickContraction.eq_fstFieldOfContract_of_mem {n : } (c : WickContraction n) (a : { x : Finset (Fin n) // x c }) (i j : Fin n) (hi : i a) (hj : j a) (hij : i < j) :
                  theorem WickContraction.eq_sndFieldOfContract_of_mem {n : } (c : WickContraction n) (a : { x : Finset (Fin n) // x c }) (i j : Fin n) (hi : i a) (hj : j a) (hij : i < j) :
                  def WickContraction.contractEquivFinTwo {n : } (c : WickContraction n) (a : { x : Finset (Fin n) // x c }) :
                  { x : Fin n // x a } Fin 2

                  As a type, any pair of contractions is equivalent to Fin 2 with 0 being associated with c.fstFieldOfContract a and 1 being associated with c.sndFieldOfContract.

                  Equations
                  • One or more equations did not get rendered due to their size.
                  Instances For
                    theorem WickContraction.prod_finset_eq_mul_fst_snd {n : } {M : Type u_1} (c : WickContraction n) (a : { x : Finset (Fin n) // x c }) (f : { x : Fin n // x a }M) [CommMonoid M] :
                    x : { x : Fin n // x a }, f x = f c.fstFieldOfContract a, * f c.sndFieldOfContract a,

                    For a field specification 𝓕, φs a list of 𝓕.FieldOp and a Wick contraction φsΛ of φs, the Wick contraction φsΛ is said to be GradingCompliant if for every pair in φsΛ the contracted fields are either both fermionic or both bosonic. In other words, in a GradingCompliant Wick contraction if no contracted pairs occur between fermionic and bosonic fields.

                    Equations
                    Instances For
                      theorem WickContraction.gradingCompliant_congr {𝓕 : FieldSpecification} {φs φs' : List 𝓕.FieldOp} (h : φs = φs') (φsΛ : WickContraction φs.length) :
                      GradingCompliant φs φsΛ GradingCompliant φs' ((congr ) φsΛ)
                      def WickContraction.sigmaContractedEquiv {n : } (c : WickContraction n) :
                      (a : { x : Finset (Fin n) // x c }) × { x : Fin n // x a } { x : Fin n // (c.getDual? x).isSome = true }

                      An equivalence from the sigma type (a : c.1) × a to the subtype of Fin n consisting of those positions which are contracted.

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