Imports
/-
Copyright (c) 2025 Joseph Tooby-Smith. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Joseph Tooby-Smith
-/
module
public import Physlib.QFT.PerturbationTheory.FieldSpecification.Basic
public import Physlib.QFT.PerturbationTheory.CreateAnnihilateCreation and annihilation states
Called CrAnFieldOp for short here.
Given a field specification, in addition to defining states
(see: Physlib.QFT.PerturbationTheory.FieldSpecification.Basic),
we can also define creation and annihilation states.
These are similar to states but come with an additional specification of whether they correspond to
creation or annihilation operators.
In particular we have the following creation and annihilation states for each field:
Negative asymptotic states - with the implicit specification that it is a creation state.
Position states with a creation specification.
Position states with an annihilation specification.
Positive asymptotic states - with the implicit specification that it is an annihilation state.
In this module in addition to defining CrAnFieldOp we also define some maps:
The map crAnFieldOpToFieldOp takes a CrAnFieldOp to its state in FieldOp.
The map crAnFieldOpToCreateAnnihilate takes a CrAnFieldOp to its corresponding
CreateAnnihilate value.
The map crAnStatistics takes a CrAnFieldOp to its corresponding FieldStatistic
(bosonic or fermionic).
@[expose] public sectionTo each field operator the specification of the type of creation and annihilation parts. For asymptotic states there is only one allowed part, whilst for position field operator there is two.
def fieldOpToCrAnType : π.FieldOp β Type
| FieldOp.inAsymp _ => Unit
| FieldOp.position _ => CreateAnnihilate
| FieldOp.outAsymp _ => Unit
The instance of a finite type on π.fieldOpToCreateAnnihilateType i.
instance : β i, Fintype (π.fieldOpToCrAnType i) := fun i =>
match i with
| FieldOp.inAsymp _ => inferInstanceAs (Fintype Unit)
| FieldOp.position _ => inferInstanceAs (Fintype CreateAnnihilate)
| FieldOp.outAsymp _ => inferInstanceAs (Fintype Unit)
The instance of a decidable equality on π.fieldOpToCreateAnnihilateType i.
instance : β i, DecidableEq (π.fieldOpToCrAnType i) := fun i =>
match i with
| FieldOp.inAsymp _ => inferInstanceAs (DecidableEq Unit)
| FieldOp.position _ => inferInstanceAs (DecidableEq CreateAnnihilate)
| FieldOp.outAsymp _ => inferInstanceAs (DecidableEq Unit)
The equivalence between π.fieldOpToCreateAnnihilateType i and
π.fieldOpToCreateAnnihilateType j from an equality i = j.
def fieldOpToCreateAnnihilateTypeCongr : {i j : π.FieldOp} β i = j β
π.fieldOpToCrAnType i β π.fieldOpToCrAnType j
| _, _, rfl => Equiv.refl _
For a field specification π, the (sigma) type π.CrAnFieldOp
corresponds to the type of creation and annihilation parts of field operators.
It formally defined to consist of the following elements:
For each incoming asymptotic field operator Ο in π.FieldOp an element
written as β¨Ο, ()β© in π.CrAnFieldOp, corresponding to the creation part of Ο.
Here Ο has no annihilation part. (Here () is the unique element of Unit.)
For each position field operator Ο in π.FieldOp an element of π.CrAnFieldOp
written as β¨Ο, .createβ©, corresponding to the creation part of Ο.
For each position field operator Ο in π.FieldOp an element of π.CrAnFieldOp
written as β¨Ο, .annihilateβ©, corresponding to the annihilation part of Ο.
For each outgoing asymptotic field operator Ο in π.FieldOp an element
written as β¨Ο, ()β© in π.CrAnFieldOp, corresponding to the annihilation part of Ο.
Here Ο has no creation part. (Here () is the unique element of Unit.)
As an example, if f corresponds to a Weyl-fermion field, it would contribute
the following elements to π.CrAnFieldOp
For each spin s, an element corresponding to an incoming asymptotic operator: a(p, s).
For each each Lorentz
index a, an element corresponding to the creation part of a position operator:
β s, β« dΒ³p/(β¦) (xβ (p,s) a(p, s) e ^ (-i p x)).
For each each Lorentz
index a,an element corresponding to annihilation part of a position operator:
β s, β« dΒ³p/(β¦) (yβ(p,s) aβ (p, s) e ^ (-i p x)).
For each spin s, element corresponding to an outgoing asymptotic operator: aβ (p, s).
def CrAnFieldOp : Type := Ξ£ (s : π.FieldOp), π.fieldOpToCrAnType sThe map from creation and annihilation field operator to their underlying states.
def crAnFieldOpToFieldOp : π.CrAnFieldOp β π.FieldOp := Sigma.fst@[simp]
lemma crAnFieldOpToFieldOp_prod (s : π.FieldOp) (t : π.fieldOpToCrAnType s) :
π.crAnFieldOpToFieldOp β¨s, tβ© = s := rfl
For a field specification π, π.crAnFieldOpToCreateAnnihilate is the map from
π.CrAnFieldOp to CreateAnnihilate taking Ο to create if
Ο corresponds to an incoming asymptotic field operator or the creation part of a position based
field operator.
otherwise it takes Ο to annihilate.
def crAnFieldOpToCreateAnnihilate : π.CrAnFieldOp β CreateAnnihilate
| β¨FieldOp.inAsymp _, _β© => CreateAnnihilate.create
| β¨FieldOp.position _, CreateAnnihilate.createβ© => CreateAnnihilate.create
| β¨FieldOp.position _, CreateAnnihilate.annihilateβ© => CreateAnnihilate.annihilate
| β¨FieldOp.outAsymp _, _β© => CreateAnnihilate.annihilate
For a field specification π, and an element Ο in π.CrAnFieldOp, the field
statistic crAnStatistics Ο is defined to be the statistic associated with the field π.Field
(or the π.FieldOp) underlying Ο.
The following notation is used in relation to crAnStatistics:
For Ο an element of π.CrAnFieldOp, π |>β Ο is crAnStatistics Ο.
For Οs a list of π.CrAnFieldOp, π |>β Οs is the product of crAnStatistics Ο over
the list Οs.
def crAnStatistics : π.CrAnFieldOp β FieldStatistic :=
π.fieldOpStatistic β π.crAnFieldOpToFieldOp@[inherit_doc crAnStatistics]
scoped[FieldSpecification] notation π "|>β" Ο =>
(crAnStatistics π) Ο@[inherit_doc crAnStatistics]
scoped[FieldSpecification] notation π "|>β" Ο => FieldStatistic.ofList
(crAnStatistics π) Ο
The CreateAnnihilate value of a CrAnFieldOps, i.e. whether it is a creation or
annihilation operator.
scoped[FieldSpecification] infixl:80 "|>αΆ" =>
crAnFieldOpToCreateAnnihilate