/- 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 -/ import HepLean.PerturbationTheory.Algebras.CrAnAlgebra.SuperCommute /-! # The operator algebras -/ namespace FieldSpecification variable (𝓕 : FieldSpecification) open CrAnAlgebra /-- The structure of an algebra with properties necessary for that algebra to be isomorphic to the actual operator algebra of a field theory. These properties are sufficent to prove certain theorems about the Operator algebra in particular Wick's theorem. -/ structure ProtoOperatorAlgebra where /-- The algebra representing the operator algebra. -/ A : Type /-- The instance of the type `A` as a semi-ring. -/ [A_semiRing : Semiring A] /-- The instance of the type `A` as an algebra. -/ [A_algebra : Algebra β„‚ A] /-- An algebra map from the creation and annihilation free algebra to the algebra A. -/ crAnF : 𝓕.CrAnAlgebra →ₐ[β„‚] A superCommute_crAn_center : βˆ€ (Ο† ψ : 𝓕.CrAnStates), crAnF (superCommute (ofCrAnState Ο†) (ofCrAnState ψ)) ∈ Subalgebra.center β„‚ A superCommute_create_create : βˆ€ (Ο†c Ο†c' : 𝓕.CrAnStates) (_ : 𝓕 |>ᢜ Ο†c = CreateAnnihilate.create) (_ : 𝓕 |>ᢜ Ο†c' = CreateAnnihilate.create), crAnF (superCommute (ofCrAnState Ο†c) (ofCrAnState Ο†c')) = 0 superCommute_annihilate_annihilate : βˆ€ (Ο†a Ο†a' : 𝓕.CrAnStates) (_ : 𝓕 |>ᢜ Ο†a = CreateAnnihilate.annihilate) (_ : 𝓕 |>ᢜ Ο†a' = CreateAnnihilate.annihilate), crAnF (superCommute (ofCrAnState Ο†a) (ofCrAnState Ο†a')) = 0 superCommute_different_statistics : βˆ€ (Ο† Ο†' : 𝓕.CrAnStates) (_ : Β¬ (𝓕 |>β‚› Ο†) = (𝓕 |>β‚› Ο†')), crAnF (superCommute (ofCrAnState Ο†) (ofCrAnState Ο†')) = 0 namespace ProtoOperatorAlgebra open FieldStatistic variable {𝓕 : FieldSpecification} (π“ž : 𝓕.ProtoOperatorAlgebra) /-- The algebra `π“ž.A` carries the instance of a semi-ring induced via `A_seimRing`. -/ instance : Semiring π“ž.A := π“ž.A_semiRing /-- The algebra `π“ž.A` carries the instance of aan algebra over `β„‚` induced via `A_algebra`. -/ instance : Algebra β„‚ π“ž.A := π“ž.A_algebra lemma crAnF_superCommute_ofCrAnState_ofState_mem_center (Ο† : 𝓕.CrAnStates) (ψ : 𝓕.States) : π“ž.crAnF (superCommute (ofCrAnState Ο†) (ofState ψ)) ∈ Subalgebra.center β„‚ π“ž.A := by rw [ofState, map_sum, map_sum] refine Subalgebra.sum_mem (Subalgebra.center β„‚ π“ž.A) ?h intro x _ exact π“ž.superCommute_crAn_center Ο† ⟨ψ, x⟩ lemma crAnF_superCommute_anPart_ofState_mem_center (Ο† ψ : 𝓕.States) : π“ž.crAnF ⟨anPart (StateAlgebra.ofState Ο†), ofState ΟˆβŸ©β‚›ca ∈ Subalgebra.center β„‚ π“ž.A := by match Ο† with | States.negAsymp _ => simp only [anPart_negAsymp, map_zero, LinearMap.zero_apply] exact Subalgebra.zero_mem (Subalgebra.center β„‚ π“ž.A) | States.position Ο† => simp only [anPart_position] exact π“ž.crAnF_superCommute_ofCrAnState_ofState_mem_center _ _ | States.posAsymp _ => simp only [anPart_posAsymp] exact π“ž.crAnF_superCommute_ofCrAnState_ofState_mem_center _ _ lemma crAnF_superCommute_ofCrAnState_ofState_diff_grade_zero (Ο† : 𝓕.CrAnStates) (ψ : 𝓕.States) (h : (𝓕 |>β‚› Ο†) β‰  (𝓕 |>β‚› ψ)) : π“ž.crAnF (superCommute (ofCrAnState Ο†) (ofState ψ)) = 0 := by rw [ofState, map_sum, map_sum] rw [Finset.sum_eq_zero] intro x hx apply π“ž.superCommute_different_statistics simpa [crAnStatistics] using h lemma crAnF_superCommute_anPart_ofState_diff_grade_zero (Ο† ψ : 𝓕.States) (h : (𝓕 |>β‚› Ο†) β‰  (𝓕 |>β‚› ψ)) : π“ž.crAnF (superCommute (anPart (StateAlgebra.ofState Ο†)) (ofState ψ)) = 0 := by match Ο† with | States.negAsymp _ => simp | States.position Ο† => simp only [anPart_position] apply π“ž.crAnF_superCommute_ofCrAnState_ofState_diff_grade_zero _ _ _ simpa [crAnStatistics] using h | States.posAsymp _ => simp only [anPart_posAsymp] apply π“ž.crAnF_superCommute_ofCrAnState_ofState_diff_grade_zero _ _ simpa [crAnStatistics] using h lemma crAnF_superCommute_ofState_ofState_mem_center (Ο† ψ : 𝓕.States) : π“ž.crAnF (superCommute (ofState Ο†) (ofState ψ)) ∈ Subalgebra.center β„‚ π“ž.A := by rw [ofState, map_sum] simp only [LinearMap.coeFn_sum, Finset.sum_apply, map_sum] refine Subalgebra.sum_mem (Subalgebra.center β„‚ π“ž.A) ?h intro x _ exact crAnF_superCommute_ofCrAnState_ofState_mem_center π“ž βŸ¨Ο†, x⟩ ψ lemma crAnF_superCommute_anPart_anPart (Ο† ψ : 𝓕.States) : π“ž.crAnF ⟨anPart (StateAlgebra.ofState Ο†), anPart (StateAlgebra.ofState ψ)βŸ©β‚›ca = 0 := by match Ο†, ψ with | _, States.negAsymp _ => simp | States.negAsymp _, _ => simp | States.position Ο†, States.position ψ => simp only [anPart_position] rw [π“ž.superCommute_annihilate_annihilate] rfl rfl | States.position Ο†, States.posAsymp _ => simp only [anPart_position, anPart_posAsymp] rw [π“ž.superCommute_annihilate_annihilate] rfl rfl | States.posAsymp _, States.posAsymp _ => simp only [anPart_posAsymp] rw [π“ž.superCommute_annihilate_annihilate] rfl rfl | States.posAsymp _, States.position _ => simp only [anPart_posAsymp, anPart_position] rw [π“ž.superCommute_annihilate_annihilate] rfl rfl lemma crAnF_superCommute_crPart_crPart (Ο† ψ : 𝓕.States) : π“ž.crAnF ⟨crPart (StateAlgebra.ofState Ο†), crPart (StateAlgebra.ofState ψ)βŸ©β‚›ca = 0 := by match Ο†, ψ with | _, States.posAsymp _ => simp | States.posAsymp _, _ => simp | States.position Ο†, States.position ψ => simp only [crPart_position] rw [π“ž.superCommute_create_create] rfl rfl | States.position Ο†, States.negAsymp _ => simp only [crPart_position, crPart_negAsymp] rw [π“ž.superCommute_create_create] rfl rfl | States.negAsymp _, States.negAsymp _ => simp only [crPart_negAsymp] rw [π“ž.superCommute_create_create] rfl rfl | States.negAsymp _, States.position _ => simp only [crPart_negAsymp, crPart_position] rw [π“ž.superCommute_create_create] rfl rfl lemma crAnF_superCommute_ofCrAnState_ofCrAnList_eq_sum (Ο† : 𝓕.CrAnStates) (Ο†s : List 𝓕.CrAnStates) : π“ž.crAnF ⟨ofCrAnState Ο†, ofCrAnList Ο†sβŸ©β‚›ca = π“ž.crAnF (βˆ‘ (n : Fin Ο†s.length), 𝓒(𝓕 |>β‚› Ο†, 𝓕 |>β‚› (List.take n Ο†s)) β€’ ⟨ofCrAnState Ο†, ofCrAnState (Ο†s.get n)βŸ©β‚›ca * ofCrAnList (Ο†s.eraseIdx n)) := by conv_lhs => rw [← ofCrAnList_singleton, superCommute_ofCrAnList_ofCrAnList_eq_sum] rw [map_sum, map_sum] congr funext x repeat rw [map_mul] rw [map_smul, map_smul, ofCrAnList_singleton] have h := Subalgebra.mem_center_iff.mp (π“ž.superCommute_crAn_center Ο† (Ο†s.get x)) rw [h, mul_smul_comm, smul_mul_assoc, smul_mul_assoc, mul_assoc] congr 1 Β· simp Β· congr rw [← map_mul, ← ofCrAnList_append, ← List.eraseIdx_eq_take_drop_succ] lemma crAnF_superCommute_ofCrAnState_ofStateList_eq_sum (Ο† : 𝓕.CrAnStates) (Ο†s : List 𝓕.States) : π“ž.crAnF ⟨ofCrAnState Ο†, ofStateList Ο†sβŸ©β‚›ca = π“ž.crAnF (βˆ‘ (n : Fin Ο†s.length), 𝓒(𝓕 |>β‚› Ο†, 𝓕 |>β‚› (List.take n Ο†s)) β€’ ⟨ofCrAnState Ο†, ofState (Ο†s.get n)βŸ©β‚›ca * ofStateList (Ο†s.eraseIdx n)) := by conv_lhs => rw [← ofCrAnList_singleton, superCommute_ofCrAnList_ofStateList_eq_sum] rw [map_sum, map_sum] congr funext x repeat rw [map_mul] rw [map_smul, map_smul, ofCrAnList_singleton] have h := Subalgebra.mem_center_iff.mp (crAnF_superCommute_ofCrAnState_ofState_mem_center π“ž Ο† (Ο†s.get x)) rw [h, mul_smul_comm, smul_mul_assoc, smul_mul_assoc, mul_assoc] congr 1 Β· simp Β· congr rw [← map_mul, ← ofStateList_append, ← List.eraseIdx_eq_take_drop_succ] end ProtoOperatorAlgebra end FieldSpecification