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.CrAnFieldOp

Filters of lists of CrAnFieldOp

@[expose] public section

Given a list of creation and annihilation states, the filtered list only containing the creation states. As a schematic example, for the list:

    [φ1c, φ1a, φ2c, φ2a] this will return [φ1c, φ2c].

def createFilter (φs : List 𝓕.CrAnFieldOp) : List 𝓕.CrAnFieldOp := List.filter (fun φ => 𝓕 |>ᶜ φ = CreateAnnihilate.create) φs
𝓕:FieldSpecificationφ:𝓕.CrAnFieldOp:𝓕|>ᶜφ = CreateAnnihilate.createφs:List 𝓕.CrAnFieldOpdecide (𝓕|>ᶜφ = CreateAnnihilate.create) = true All goals completed! 🐙𝓕:FieldSpecificationφ:𝓕.CrAnFieldOp:𝓕|>ᶜφ = CreateAnnihilate.annihilateφs:List 𝓕.CrAnFieldOp¬decide (𝓕|>ᶜφ = CreateAnnihilate.create) = true All goals completed! 🐙𝓕:FieldSpecificationφs:List 𝓕.CrAnFieldOpφs':List 𝓕.CrAnFieldOpList.filter (fun φ => decide (𝓕|>ᶜφ = CreateAnnihilate.create)) φs ++ List.filter (fun φ => decide (𝓕|>ᶜφ = CreateAnnihilate.create)) φs' = createFilter φs ++ createFilter φs' All goals completed! 🐙lemma createFilter_singleton_create (φ : 𝓕.CrAnFieldOp) ( : 𝓕 |>ᶜ φ = CreateAnnihilate.create) : createFilter [φ] = [φ] := 𝓕:FieldSpecificationφ:𝓕.CrAnFieldOp:𝓕|>ᶜφ = CreateAnnihilate.createcreateFilter [φ] = [φ] All goals completed! 🐙lemma createFilter_singleton_annihilate (φ : 𝓕.CrAnFieldOp) ( : 𝓕 |>ᶜ φ = CreateAnnihilate.annihilate) : createFilter [φ] = [] := 𝓕:FieldSpecificationφ:𝓕.CrAnFieldOp:𝓕|>ᶜφ = CreateAnnihilate.annihilatecreateFilter [φ] = [] All goals completed! 🐙

Given a list of creation and annihilation states, the filtered list only containing the annihilation states. As a schematic example, for the list:

    [φ1c, φ1a, φ2c, φ2a] this will return [φ1a, φ2a].

def annihilateFilter (φs : List 𝓕.CrAnFieldOp) : List 𝓕.CrAnFieldOp := List.filter (fun φ => 𝓕 |>ᶜ φ = CreateAnnihilate.annihilate) φs
𝓕:FieldSpecificationφ:𝓕.CrAnFieldOp:𝓕|>ᶜφ = CreateAnnihilate.createφs:List 𝓕.CrAnFieldOp¬decide (𝓕|>ᶜφ = CreateAnnihilate.annihilate) = true All goals completed! 🐙𝓕:FieldSpecificationφ:𝓕.CrAnFieldOp:𝓕|>ᶜφ = CreateAnnihilate.annihilateφs:List 𝓕.CrAnFieldOpdecide (𝓕|>ᶜφ = CreateAnnihilate.annihilate) = true All goals completed! 🐙𝓕:FieldSpecificationφs:List 𝓕.CrAnFieldOpφs':List 𝓕.CrAnFieldOpList.filter (fun φ => decide (𝓕|>ᶜφ = CreateAnnihilate.annihilate)) φs ++ List.filter (fun φ => decide (𝓕|>ᶜφ = CreateAnnihilate.annihilate)) φs' = annihilateFilter φs ++ annihilateFilter φs' All goals completed! 🐙lemma annihilateFilter_singleton_create (φ : 𝓕.CrAnFieldOp) ( : 𝓕 |>ᶜ φ = CreateAnnihilate.create) : annihilateFilter [φ] = [] := 𝓕:FieldSpecificationφ:𝓕.CrAnFieldOp:𝓕|>ᶜφ = CreateAnnihilate.createannihilateFilter [φ] = [] All goals completed! 🐙lemma annihilateFilter_singleton_annihilate (φ : 𝓕.CrAnFieldOp) ( : 𝓕 |>ᶜ φ = CreateAnnihilate.annihilate) : annihilateFilter [φ] = [φ] := 𝓕:FieldSpecificationφ:𝓕.CrAnFieldOp:𝓕|>ᶜφ = CreateAnnihilate.annihilateannihilateFilter [φ] = [φ] All goals completed! 🐙