2025-01-28 09:48:38 +00:00
|
|
|
|
/-
|
|
|
|
|
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
|
|
|
|
|
-/
|
2025-02-03 12:12:36 +00:00
|
|
|
|
import HepLean.PerturbationTheory.FieldOpFreeAlgebra.Basic
|
2025-01-28 09:48:38 +00:00
|
|
|
|
import Mathlib.RingTheory.GradedAlgebra.Basic
|
|
|
|
|
/-!
|
|
|
|
|
|
2025-02-03 11:05:43 +00:00
|
|
|
|
# Grading on the FieldOpFreeAlgebra
|
2025-01-28 09:48:38 +00:00
|
|
|
|
|
|
|
|
|
-/
|
|
|
|
|
|
|
|
|
|
namespace FieldSpecification
|
|
|
|
|
variable {𝓕 : FieldSpecification}
|
|
|
|
|
open FieldStatistic
|
|
|
|
|
|
2025-02-03 11:05:43 +00:00
|
|
|
|
namespace FieldOpFreeAlgebra
|
2025-01-28 09:48:38 +00:00
|
|
|
|
|
|
|
|
|
noncomputable section
|
|
|
|
|
|
2025-02-03 11:05:43 +00:00
|
|
|
|
/-- The submodule of `FieldOpFreeAlgebra` spanned by lists of field statistic `f`. -/
|
|
|
|
|
def statisticSubmodule (f : FieldStatistic) : Submodule ℂ 𝓕.FieldOpFreeAlgebra :=
|
2025-02-03 11:21:11 +00:00
|
|
|
|
Submodule.span ℂ {a | ∃ φs, a = ofCrAnListF φs ∧ (𝓕 |>ₛ φs) = f}
|
2025-01-28 09:48:38 +00:00
|
|
|
|
|
2025-02-03 11:28:14 +00:00
|
|
|
|
lemma ofCrAnListF_mem_statisticSubmodule_of (φs : List 𝓕.CrAnFieldOp) (f : FieldStatistic)
|
2025-01-30 05:35:42 +00:00
|
|
|
|
(h : (𝓕 |>ₛ φs) = f) :
|
2025-02-03 11:21:11 +00:00
|
|
|
|
ofCrAnListF φs ∈ statisticSubmodule f := by
|
2025-01-28 11:53:24 +00:00
|
|
|
|
refine Submodule.mem_span.mpr fun _ a => a ⟨φs, ⟨rfl, h⟩⟩
|
|
|
|
|
|
2025-02-03 11:28:14 +00:00
|
|
|
|
lemma ofCrAnListF_bosonic_or_fermionic (φs : List 𝓕.CrAnFieldOp) :
|
2025-02-03 11:42:56 +00:00
|
|
|
|
ofCrAnListF φs ∈ statisticSubmodule bosonic ∨
|
|
|
|
|
ofCrAnListF φs ∈ statisticSubmodule fermionic := by
|
2025-01-28 11:53:24 +00:00
|
|
|
|
by_cases h : (𝓕 |>ₛ φs) = bosonic
|
|
|
|
|
· left
|
2025-02-03 11:21:11 +00:00
|
|
|
|
exact ofCrAnListF_mem_statisticSubmodule_of φs bosonic h
|
2025-01-28 11:53:24 +00:00
|
|
|
|
· right
|
2025-02-03 11:21:11 +00:00
|
|
|
|
exact ofCrAnListF_mem_statisticSubmodule_of φs fermionic (by simpa using h)
|
2025-01-28 11:53:24 +00:00
|
|
|
|
|
2025-02-03 11:28:14 +00:00
|
|
|
|
lemma ofCrAnOpF_bosonic_or_fermionic (φ : 𝓕.CrAnFieldOp) :
|
2025-02-03 11:21:11 +00:00
|
|
|
|
ofCrAnOpF φ ∈ statisticSubmodule bosonic ∨ ofCrAnOpF φ ∈ statisticSubmodule fermionic := by
|
|
|
|
|
rw [← ofCrAnListF_singleton]
|
|
|
|
|
exact ofCrAnListF_bosonic_or_fermionic [φ]
|
2025-01-29 15:08:43 +00:00
|
|
|
|
|
2025-02-03 11:05:43 +00:00
|
|
|
|
/-- The projection of an element of `FieldOpFreeAlgebra` onto it's bosonic part. -/
|
2025-02-05 07:22:14 +00:00
|
|
|
|
def bosonicProjF : 𝓕.FieldOpFreeAlgebra →ₗ[ℂ] statisticSubmodule (𝓕 := 𝓕) bosonic :=
|
2025-02-03 11:21:11 +00:00
|
|
|
|
Basis.constr ofCrAnListFBasis ℂ fun φs =>
|
2025-01-28 09:48:38 +00:00
|
|
|
|
if h : (𝓕 |>ₛ φs) = bosonic then
|
2025-02-03 11:21:11 +00:00
|
|
|
|
⟨ofCrAnListF φs, Submodule.mem_span.mpr fun _ a => a ⟨φs, ⟨rfl, h⟩⟩⟩
|
2025-01-28 09:48:38 +00:00
|
|
|
|
else
|
|
|
|
|
0
|
|
|
|
|
|
2025-02-05 07:22:14 +00:00
|
|
|
|
lemma bosonicProjF_ofCrAnListF (φs : List 𝓕.CrAnFieldOp) :
|
|
|
|
|
bosonicProjF (ofCrAnListF φs) = if h : (𝓕 |>ₛ φs) = bosonic then
|
2025-02-03 11:21:11 +00:00
|
|
|
|
⟨ofCrAnListF φs, Submodule.mem_span.mpr fun _ a => a ⟨φs, ⟨rfl, h⟩⟩⟩ else 0 := by
|
2025-01-28 09:48:38 +00:00
|
|
|
|
conv_lhs =>
|
2025-02-05 07:22:14 +00:00
|
|
|
|
rw [← ofListBasis_eq_ofList, bosonicProjF, Basis.constr_basis]
|
2025-01-28 09:48:38 +00:00
|
|
|
|
|
2025-02-05 07:22:14 +00:00
|
|
|
|
lemma bosonicProjF_of_mem_bosonic (a : 𝓕.FieldOpFreeAlgebra) (h : a ∈ statisticSubmodule bosonic) :
|
|
|
|
|
bosonicProjF a = ⟨a, h⟩ := by
|
2025-02-03 11:05:43 +00:00
|
|
|
|
let p (a : 𝓕.FieldOpFreeAlgebra) (hx : a ∈ statisticSubmodule bosonic) : Prop :=
|
2025-02-05 07:22:14 +00:00
|
|
|
|
bosonicProjF a = ⟨a, hx⟩
|
2025-01-28 09:48:38 +00:00
|
|
|
|
change p a h
|
|
|
|
|
apply Submodule.span_induction
|
|
|
|
|
· intro x hx
|
2025-01-28 09:58:02 +00:00
|
|
|
|
simp only [Set.mem_setOf_eq] at hx
|
2025-01-28 09:48:38 +00:00
|
|
|
|
obtain ⟨φs, rfl, h⟩ := hx
|
2025-02-05 07:22:14 +00:00
|
|
|
|
simp [p, bosonicProjF_ofCrAnListF, h]
|
2025-01-28 09:58:02 +00:00
|
|
|
|
· simp only [map_zero, p]
|
2025-01-28 09:48:38 +00:00
|
|
|
|
rfl
|
|
|
|
|
· intro x y hx hy hpx hpy
|
|
|
|
|
simp_all [p]
|
|
|
|
|
· intro a x hx hy
|
|
|
|
|
simp_all [p]
|
|
|
|
|
|
2025-02-05 07:22:14 +00:00
|
|
|
|
lemma bosonicProjF_of_mem_fermionic (a : 𝓕.FieldOpFreeAlgebra)
|
2025-02-03 11:42:56 +00:00
|
|
|
|
(h : a ∈ statisticSubmodule fermionic) :
|
2025-02-05 07:22:14 +00:00
|
|
|
|
bosonicProjF a = 0 := by
|
2025-02-03 11:05:43 +00:00
|
|
|
|
let p (a : 𝓕.FieldOpFreeAlgebra) (hx : a ∈ statisticSubmodule fermionic) : Prop :=
|
2025-02-05 07:22:14 +00:00
|
|
|
|
bosonicProjF a = 0
|
2025-01-28 09:48:38 +00:00
|
|
|
|
change p a h
|
|
|
|
|
apply Submodule.span_induction
|
|
|
|
|
· intro x hx
|
2025-01-28 09:58:02 +00:00
|
|
|
|
simp only [Set.mem_setOf_eq] at hx
|
2025-01-28 09:48:38 +00:00
|
|
|
|
obtain ⟨φs, rfl, h⟩ := hx
|
2025-02-05 07:22:14 +00:00
|
|
|
|
simp [p, bosonicProjF_ofCrAnListF, h]
|
2025-01-28 09:48:38 +00:00
|
|
|
|
· simp [p]
|
|
|
|
|
· intro x y hx hy hpx hpy
|
|
|
|
|
simp_all [p]
|
|
|
|
|
· intro a x hx hy
|
|
|
|
|
simp_all [p]
|
|
|
|
|
|
|
|
|
|
@[simp]
|
2025-02-05 07:22:14 +00:00
|
|
|
|
lemma bosonicProjF_of_bonosic_part
|
2025-01-28 09:48:38 +00:00
|
|
|
|
(a : DirectSum FieldStatistic (fun i => (statisticSubmodule (𝓕 := 𝓕) i))) :
|
2025-02-05 07:22:14 +00:00
|
|
|
|
bosonicProjF (a bosonic) = a bosonic := by
|
|
|
|
|
apply bosonicProjF_of_mem_bosonic
|
2025-01-28 09:48:38 +00:00
|
|
|
|
|
|
|
|
|
@[simp]
|
2025-02-05 07:22:14 +00:00
|
|
|
|
lemma bosonicProjF_of_fermionic_part
|
2025-01-28 09:48:38 +00:00
|
|
|
|
(a : DirectSum FieldStatistic (fun i => (statisticSubmodule (𝓕 := 𝓕) i))) :
|
2025-02-05 07:22:14 +00:00
|
|
|
|
bosonicProjF (a fermionic).1 = 0 := by
|
|
|
|
|
apply bosonicProjF_of_mem_fermionic
|
2025-01-28 09:48:38 +00:00
|
|
|
|
exact Submodule.coe_mem (a.toFun fermionic)
|
|
|
|
|
|
2025-02-03 11:05:43 +00:00
|
|
|
|
/-- The projection of an element of `FieldOpFreeAlgebra` onto it's fermionic part. -/
|
2025-02-05 07:22:14 +00:00
|
|
|
|
def fermionicProjF : 𝓕.FieldOpFreeAlgebra →ₗ[ℂ] statisticSubmodule (𝓕 := 𝓕) fermionic :=
|
2025-02-03 11:21:11 +00:00
|
|
|
|
Basis.constr ofCrAnListFBasis ℂ fun φs =>
|
2025-01-28 09:48:38 +00:00
|
|
|
|
if h : (𝓕 |>ₛ φs) = fermionic then
|
2025-02-03 11:21:11 +00:00
|
|
|
|
⟨ofCrAnListF φs, Submodule.mem_span.mpr fun _ a => a ⟨φs, ⟨rfl, h⟩⟩⟩
|
2025-01-28 09:48:38 +00:00
|
|
|
|
else
|
|
|
|
|
0
|
|
|
|
|
|
2025-02-05 07:22:14 +00:00
|
|
|
|
lemma fermionicProjF_ofCrAnListF (φs : List 𝓕.CrAnFieldOp) :
|
|
|
|
|
fermionicProjF (ofCrAnListF φs) = if h : (𝓕 |>ₛ φs) = fermionic then
|
2025-02-03 11:21:11 +00:00
|
|
|
|
⟨ofCrAnListF φs, Submodule.mem_span.mpr fun _ a => a ⟨φs, ⟨rfl, h⟩⟩⟩ else 0 := by
|
2025-01-28 09:48:38 +00:00
|
|
|
|
conv_lhs =>
|
2025-02-05 07:22:14 +00:00
|
|
|
|
rw [← ofListBasis_eq_ofList, fermionicProjF, Basis.constr_basis]
|
2025-01-28 09:48:38 +00:00
|
|
|
|
|
2025-02-05 07:22:14 +00:00
|
|
|
|
lemma fermionicProjF_ofCrAnListF_if_bosonic (φs : List 𝓕.CrAnFieldOp) :
|
|
|
|
|
fermionicProjF (ofCrAnListF φs) = if h : (𝓕 |>ₛ φs) = bosonic then
|
2025-02-03 11:21:11 +00:00
|
|
|
|
0 else ⟨ofCrAnListF φs, Submodule.mem_span.mpr fun _ a => a ⟨φs, ⟨rfl,
|
2025-01-29 16:06:28 +00:00
|
|
|
|
by simpa using h⟩⟩⟩ := by
|
2025-02-05 07:22:14 +00:00
|
|
|
|
rw [fermionicProjF_ofCrAnListF]
|
2025-01-28 09:48:38 +00:00
|
|
|
|
by_cases h1 : (𝓕 |>ₛ φs) = fermionic
|
|
|
|
|
· simp [h1]
|
2025-01-28 09:58:02 +00:00
|
|
|
|
· simp only [h1, ↓reduceDIte]
|
2025-01-28 09:48:38 +00:00
|
|
|
|
simp only [neq_fermionic_iff_eq_bosonic] at h1
|
|
|
|
|
simp [h1]
|
|
|
|
|
|
2025-02-05 07:22:14 +00:00
|
|
|
|
lemma fermionicProjF_of_mem_fermionic (a : 𝓕.FieldOpFreeAlgebra)
|
2025-02-03 11:42:56 +00:00
|
|
|
|
(h : a ∈ statisticSubmodule fermionic) :
|
2025-02-05 07:22:14 +00:00
|
|
|
|
fermionicProjF a = ⟨a, h⟩ := by
|
2025-02-03 11:05:43 +00:00
|
|
|
|
let p (a : 𝓕.FieldOpFreeAlgebra) (hx : a ∈ statisticSubmodule fermionic) : Prop :=
|
2025-02-05 07:22:14 +00:00
|
|
|
|
fermionicProjF a = ⟨a, hx⟩
|
2025-01-28 09:48:38 +00:00
|
|
|
|
change p a h
|
|
|
|
|
apply Submodule.span_induction
|
|
|
|
|
· intro x hx
|
2025-01-28 09:58:02 +00:00
|
|
|
|
simp only [Set.mem_setOf_eq] at hx
|
2025-01-28 09:48:38 +00:00
|
|
|
|
obtain ⟨φs, rfl, h⟩ := hx
|
2025-02-05 07:22:14 +00:00
|
|
|
|
simp [p, fermionicProjF_ofCrAnListF, h]
|
2025-01-28 09:58:02 +00:00
|
|
|
|
· simp only [map_zero, p]
|
2025-01-28 09:48:38 +00:00
|
|
|
|
rfl
|
|
|
|
|
· intro x y hx hy hpx hpy
|
|
|
|
|
simp_all [p]
|
|
|
|
|
· intro a x hx hy
|
|
|
|
|
simp_all [p]
|
|
|
|
|
|
2025-02-05 07:22:14 +00:00
|
|
|
|
lemma fermionicProjF_of_mem_bosonic (a : 𝓕.FieldOpFreeAlgebra)
|
|
|
|
|
(h : a ∈ statisticSubmodule bosonic) : fermionicProjF a = 0 := by
|
2025-02-03 11:05:43 +00:00
|
|
|
|
let p (a : 𝓕.FieldOpFreeAlgebra) (hx : a ∈ statisticSubmodule bosonic) : Prop :=
|
2025-02-05 07:22:14 +00:00
|
|
|
|
fermionicProjF a = 0
|
2025-01-28 09:48:38 +00:00
|
|
|
|
change p a h
|
|
|
|
|
apply Submodule.span_induction
|
|
|
|
|
· intro x hx
|
2025-01-28 09:58:02 +00:00
|
|
|
|
simp only [Set.mem_setOf_eq] at hx
|
2025-01-28 09:48:38 +00:00
|
|
|
|
obtain ⟨φs, rfl, h⟩ := hx
|
2025-02-05 07:22:14 +00:00
|
|
|
|
simp [p, fermionicProjF_ofCrAnListF, h]
|
2025-01-28 09:48:38 +00:00
|
|
|
|
· simp [p]
|
|
|
|
|
· intro x y hx hy hpx hpy
|
|
|
|
|
simp_all [p]
|
|
|
|
|
· intro a x hx hy
|
|
|
|
|
simp_all [p]
|
|
|
|
|
|
|
|
|
|
@[simp]
|
2025-02-05 07:22:14 +00:00
|
|
|
|
lemma fermionicProjF_of_bosonic_part
|
2025-01-28 09:48:38 +00:00
|
|
|
|
(a : DirectSum FieldStatistic (fun i => (statisticSubmodule (𝓕 := 𝓕) i))) :
|
2025-02-05 07:22:14 +00:00
|
|
|
|
fermionicProjF (a bosonic).1 = 0 := by
|
|
|
|
|
apply fermionicProjF_of_mem_bosonic
|
2025-01-28 09:48:38 +00:00
|
|
|
|
exact Submodule.coe_mem (a.toFun bosonic)
|
|
|
|
|
|
|
|
|
|
@[simp]
|
2025-02-05 07:22:14 +00:00
|
|
|
|
lemma fermionicProjF_of_fermionic_part
|
2025-01-28 09:48:38 +00:00
|
|
|
|
(a : DirectSum FieldStatistic (fun i => (statisticSubmodule (𝓕 := 𝓕) i))) :
|
2025-02-05 07:22:14 +00:00
|
|
|
|
fermionicProjF (a fermionic) = a fermionic := by
|
|
|
|
|
apply fermionicProjF_of_mem_fermionic
|
2025-01-28 09:48:38 +00:00
|
|
|
|
|
2025-02-05 07:22:14 +00:00
|
|
|
|
lemma bosonicProjF_add_fermionicProjF (a : 𝓕.FieldOpFreeAlgebra) :
|
|
|
|
|
a.bosonicProjF + (a.fermionicProjF).1 = a := by
|
2025-02-03 11:05:43 +00:00
|
|
|
|
let f1 :𝓕.FieldOpFreeAlgebra →ₗ[ℂ] 𝓕.FieldOpFreeAlgebra :=
|
2025-02-05 07:22:14 +00:00
|
|
|
|
(statisticSubmodule bosonic).subtype ∘ₗ bosonicProjF
|
2025-02-03 11:05:43 +00:00
|
|
|
|
let f2 :𝓕.FieldOpFreeAlgebra →ₗ[ℂ] 𝓕.FieldOpFreeAlgebra :=
|
2025-02-05 07:22:14 +00:00
|
|
|
|
(statisticSubmodule fermionic).subtype ∘ₗ fermionicProjF
|
2025-01-28 09:48:38 +00:00
|
|
|
|
change (f1 + f2) a = LinearMap.id (R := ℂ) a
|
2025-02-03 11:21:11 +00:00
|
|
|
|
refine LinearMap.congr_fun (ofCrAnListFBasis.ext fun φs ↦ ?_) a
|
2025-01-28 09:58:02 +00:00
|
|
|
|
simp only [ofListBasis_eq_ofList, LinearMap.add_apply, LinearMap.coe_comp, Submodule.coe_subtype,
|
|
|
|
|
Function.comp_apply, LinearMap.id_coe, id_eq, f1, f2]
|
2025-02-05 07:22:14 +00:00
|
|
|
|
rw [bosonicProjF_ofCrAnListF, fermionicProjF_ofCrAnListF_if_bosonic]
|
2025-01-28 09:48:38 +00:00
|
|
|
|
by_cases h : (𝓕 |>ₛ φs) = bosonic
|
|
|
|
|
· simp [h]
|
|
|
|
|
· simp [h]
|
|
|
|
|
|
|
|
|
|
lemma coeAddMonoidHom_apply_eq_bosonic_plus_fermionic
|
|
|
|
|
(a : DirectSum FieldStatistic (fun i => (statisticSubmodule (𝓕 := 𝓕) i))) :
|
|
|
|
|
DirectSum.coeAddMonoidHom statisticSubmodule a = a.1 bosonic + a.1 fermionic := by
|
|
|
|
|
let C : DirectSum FieldStatistic (fun i => (statisticSubmodule (𝓕 := 𝓕) i)) → Prop :=
|
|
|
|
|
fun a => DirectSum.coeAddMonoidHom statisticSubmodule a = a.1 bosonic + a.1 fermionic
|
|
|
|
|
change C a
|
|
|
|
|
apply DirectSum.induction_on
|
|
|
|
|
· simp [C]
|
|
|
|
|
· intro i x
|
2025-01-28 09:58:02 +00:00
|
|
|
|
simp only [DFinsupp.toFun_eq_coe, DirectSum.coeAddMonoidHom_of, C]
|
2025-01-28 09:48:38 +00:00
|
|
|
|
rw [DirectSum.of_apply, DirectSum.of_apply]
|
|
|
|
|
match i with
|
|
|
|
|
| bosonic => simp
|
|
|
|
|
| fermionic => simp
|
|
|
|
|
· intro x y hx hy
|
2025-01-28 09:58:02 +00:00
|
|
|
|
simp_all only [C, DFinsupp.toFun_eq_coe, map_add, DirectSum.add_apply, Submodule.coe_add]
|
2025-01-28 09:48:38 +00:00
|
|
|
|
abel
|
|
|
|
|
|
|
|
|
|
lemma directSum_eq_bosonic_plus_fermionic
|
|
|
|
|
(a : DirectSum FieldStatistic (fun i => (statisticSubmodule (𝓕 := 𝓕) i))) :
|
|
|
|
|
a = (DirectSum.of (fun i => ↥(statisticSubmodule i)) bosonic) (a bosonic) +
|
|
|
|
|
(DirectSum.of (fun i => ↥(statisticSubmodule i)) fermionic) (a fermionic) := by
|
|
|
|
|
let C : DirectSum FieldStatistic (fun i => (statisticSubmodule (𝓕 := 𝓕) i)) → Prop :=
|
|
|
|
|
fun a => a = (DirectSum.of (fun i => ↥(statisticSubmodule i)) bosonic) (a bosonic) +
|
|
|
|
|
(DirectSum.of (fun i => ↥(statisticSubmodule i)) fermionic) (a fermionic)
|
|
|
|
|
change C a
|
|
|
|
|
apply DirectSum.induction_on
|
|
|
|
|
· simp [C]
|
|
|
|
|
· intro i x
|
2025-01-28 09:58:02 +00:00
|
|
|
|
simp only [C]
|
2025-01-28 09:48:38 +00:00
|
|
|
|
match i with
|
|
|
|
|
| bosonic =>
|
|
|
|
|
simp only [DirectSum.of_eq_same, self_eq_add_right]
|
|
|
|
|
rw [DirectSum.of_eq_of_ne]
|
2025-01-28 09:58:02 +00:00
|
|
|
|
simp only [map_zero]
|
2025-01-28 09:48:38 +00:00
|
|
|
|
simp
|
|
|
|
|
| fermionic =>
|
|
|
|
|
simp only [DirectSum.of_eq_same, add_zero]
|
|
|
|
|
rw [DirectSum.of_eq_of_ne]
|
2025-01-28 09:58:02 +00:00
|
|
|
|
simp only [map_zero, zero_add]
|
2025-01-28 09:48:38 +00:00
|
|
|
|
simp
|
|
|
|
|
· intro x y hx hy
|
2025-01-28 09:58:02 +00:00
|
|
|
|
simp only [DirectSum.add_apply, map_add, C] at hx hy ⊢
|
2025-01-28 09:48:38 +00:00
|
|
|
|
conv_lhs => rw [hx, hy]
|
|
|
|
|
abel
|
|
|
|
|
|
2025-02-06 13:06:51 +00:00
|
|
|
|
/-- For a field specification `𝓕`, the algebra `𝓕.FieldOpFreeAlgebra` is graded by `FieldStatistic`.
|
2025-02-10 10:21:57 +00:00
|
|
|
|
Those `ofCrAnListF φs` for which `φs` has an overall `bosonic` statistic
|
|
|
|
|
(i.e. `𝓕 |>ₛ φs = bosonic`) span `bosonic`
|
|
|
|
|
submodule, whilst those `ofCrAnListF φs` for which `φs` has an overall `fermionic` statistic
|
|
|
|
|
(i.e. `𝓕 |>ₛ φs = fermionic`) span
|
2025-02-06 13:06:51 +00:00
|
|
|
|
the `fermionic` submodule. -/
|
2025-02-03 11:42:56 +00:00
|
|
|
|
instance fieldOpFreeAlgebraGrade :
|
|
|
|
|
GradedAlgebra (A := 𝓕.FieldOpFreeAlgebra) statisticSubmodule where
|
2025-01-28 09:48:38 +00:00
|
|
|
|
one_mem := by
|
2025-01-28 09:58:02 +00:00
|
|
|
|
simp only [statisticSubmodule]
|
2025-01-28 09:48:38 +00:00
|
|
|
|
refine Submodule.mem_span.mpr fun p a => a ?_
|
2025-01-28 09:58:02 +00:00
|
|
|
|
simp only [Set.mem_setOf_eq]
|
2025-01-28 09:48:38 +00:00
|
|
|
|
use []
|
2025-02-03 11:21:11 +00:00
|
|
|
|
simp only [ofCrAnListF_nil, ofList_empty, true_and]
|
2025-01-28 09:48:38 +00:00
|
|
|
|
rfl
|
|
|
|
|
mul_mem f1 f2 a1 a2 h1 h2 := by
|
2025-02-03 11:05:43 +00:00
|
|
|
|
let p (a2 : 𝓕.FieldOpFreeAlgebra) (hx : a2 ∈ statisticSubmodule f2) : Prop :=
|
2025-01-29 16:06:28 +00:00
|
|
|
|
a1 * a2 ∈ statisticSubmodule (f1 + f2)
|
2025-01-28 09:48:38 +00:00
|
|
|
|
change p a2 h2
|
|
|
|
|
apply Submodule.span_induction (p := p)
|
|
|
|
|
· intro x hx
|
2025-01-28 09:58:02 +00:00
|
|
|
|
simp only [Set.mem_setOf_eq] at hx
|
2025-01-28 09:48:38 +00:00
|
|
|
|
obtain ⟨φs, rfl, h⟩ := hx
|
2025-01-28 09:58:02 +00:00
|
|
|
|
simp only [p]
|
2025-02-03 11:05:43 +00:00
|
|
|
|
let p (a1 : 𝓕.FieldOpFreeAlgebra) (hx : a1 ∈ statisticSubmodule f1) : Prop :=
|
2025-02-03 11:21:11 +00:00
|
|
|
|
a1 * ofCrAnListF φs ∈ statisticSubmodule (f1 + f2)
|
2025-01-28 09:48:38 +00:00
|
|
|
|
change p a1 h1
|
|
|
|
|
apply Submodule.span_induction (p := p)
|
|
|
|
|
· intro y hy
|
|
|
|
|
obtain ⟨φs', rfl, h'⟩ := hy
|
2025-01-28 09:58:02 +00:00
|
|
|
|
simp only [p]
|
2025-02-03 11:21:11 +00:00
|
|
|
|
rw [← ofCrAnListF_append]
|
2025-01-28 09:48:38 +00:00
|
|
|
|
refine Submodule.mem_span.mpr fun p a => a ?_
|
2025-01-28 09:58:02 +00:00
|
|
|
|
simp only [Set.mem_setOf_eq]
|
2025-01-28 09:48:38 +00:00
|
|
|
|
use φs' ++ φs
|
2025-01-28 09:58:02 +00:00
|
|
|
|
simp only [ofList_append, h', h, true_and]
|
2025-01-28 09:48:38 +00:00
|
|
|
|
cases f1 <;> cases f2 <;> rfl
|
|
|
|
|
· simp [p]
|
|
|
|
|
· intro x y hx hy hx1 hx2
|
2025-01-28 09:58:02 +00:00
|
|
|
|
simp only [add_mul, p]
|
2025-01-28 09:48:38 +00:00
|
|
|
|
exact Submodule.add_mem _ hx1 hx2
|
|
|
|
|
· intro c a hx h1
|
2025-01-28 09:58:02 +00:00
|
|
|
|
simp only [Algebra.smul_mul_assoc, p]
|
2025-01-28 09:48:38 +00:00
|
|
|
|
exact Submodule.smul_mem _ _ h1
|
|
|
|
|
· exact h1
|
|
|
|
|
· simp [p]
|
|
|
|
|
· intro x y hx hy hx1 hx2
|
2025-01-28 09:58:02 +00:00
|
|
|
|
simp only [mul_add, p]
|
2025-01-28 09:48:38 +00:00
|
|
|
|
exact Submodule.add_mem _ hx1 hx2
|
|
|
|
|
· intro c a hx h1
|
2025-01-28 09:58:02 +00:00
|
|
|
|
simp only [Algebra.mul_smul_comm, p]
|
2025-01-28 09:48:38 +00:00
|
|
|
|
exact Submodule.smul_mem _ _ h1
|
|
|
|
|
· exact h2
|
2025-02-05 07:22:14 +00:00
|
|
|
|
decompose' a := DirectSum.of (fun i => (statisticSubmodule (𝓕 := 𝓕) i)) bosonic (bosonicProjF a)
|
|
|
|
|
+ DirectSum.of (fun i => (statisticSubmodule (𝓕 := 𝓕) i)) fermionic (fermionicProjF a)
|
2025-01-28 09:48:38 +00:00
|
|
|
|
left_inv a := by
|
2025-02-05 07:22:14 +00:00
|
|
|
|
trans a.bosonicProjF + fermionicProjF a
|
2025-01-28 09:48:38 +00:00
|
|
|
|
· simp
|
2025-02-05 07:22:14 +00:00
|
|
|
|
· exact bosonicProjF_add_fermionicProjF a
|
2025-01-28 09:48:38 +00:00
|
|
|
|
right_inv a := by
|
|
|
|
|
rw [coeAddMonoidHom_apply_eq_bosonic_plus_fermionic]
|
2025-02-05 07:22:14 +00:00
|
|
|
|
simp only [DFinsupp.toFun_eq_coe, map_add, bosonicProjF_of_bonosic_part,
|
|
|
|
|
bosonicProjF_of_fermionic_part, add_zero, fermionicProjF_of_bosonic_part,
|
|
|
|
|
fermionicProjF_of_fermionic_part, zero_add]
|
2025-01-28 09:48:38 +00:00
|
|
|
|
conv_rhs => rw [directSum_eq_bosonic_plus_fermionic a]
|
|
|
|
|
|
2025-02-03 11:05:43 +00:00
|
|
|
|
lemma eq_zero_of_bosonic_and_fermionic {a : 𝓕.FieldOpFreeAlgebra}
|
2025-01-28 11:53:24 +00:00
|
|
|
|
(hb : a ∈ statisticSubmodule bosonic) (hf : a ∈ statisticSubmodule fermionic) : a = 0 := by
|
2025-02-05 07:22:14 +00:00
|
|
|
|
have ha := bosonicProjF_of_mem_bosonic a hb
|
|
|
|
|
have hb := fermionicProjF_of_mem_fermionic a hf
|
|
|
|
|
have hc := (bosonicProjF_add_fermionicProjF a)
|
2025-01-28 11:53:24 +00:00
|
|
|
|
rw [ha, hb] at hc
|
|
|
|
|
simpa using hc
|
|
|
|
|
|
2025-02-05 07:22:14 +00:00
|
|
|
|
lemma bosonicProjF_mul (a b : 𝓕.FieldOpFreeAlgebra) :
|
|
|
|
|
(a * b).bosonicProjF.1 = a.bosonicProjF.1 * b.bosonicProjF.1
|
|
|
|
|
+ a.fermionicProjF.1 * b.fermionicProjF.1 := by
|
2025-01-29 15:08:43 +00:00
|
|
|
|
conv_lhs =>
|
2025-02-05 07:22:14 +00:00
|
|
|
|
rw [← bosonicProjF_add_fermionicProjF a]
|
|
|
|
|
rw [← bosonicProjF_add_fermionicProjF b]
|
2025-01-29 16:41:10 +00:00
|
|
|
|
simp only [mul_add, add_mul, map_add, Submodule.coe_add]
|
2025-02-05 07:22:14 +00:00
|
|
|
|
rw [bosonicProjF_of_mem_bosonic]
|
2025-01-29 15:08:43 +00:00
|
|
|
|
conv_lhs =>
|
|
|
|
|
left
|
|
|
|
|
right
|
2025-02-05 07:22:14 +00:00
|
|
|
|
rw [bosonicProjF_of_mem_fermionic _
|
2025-01-29 15:08:43 +00:00
|
|
|
|
(by
|
|
|
|
|
have h1 : fermionic = fermionic + bosonic := by simp
|
|
|
|
|
conv_lhs => rw [h1]
|
2025-02-03 11:05:43 +00:00
|
|
|
|
apply fieldOpFreeAlgebraGrade.mul_mem
|
2025-01-29 16:41:10 +00:00
|
|
|
|
simp only [SetLike.coe_mem]
|
2025-01-29 15:08:43 +00:00
|
|
|
|
simp)]
|
|
|
|
|
conv_lhs =>
|
|
|
|
|
right
|
|
|
|
|
left
|
2025-02-05 07:22:14 +00:00
|
|
|
|
rw [bosonicProjF_of_mem_fermionic _
|
2025-01-29 15:08:43 +00:00
|
|
|
|
(by
|
|
|
|
|
have h1 : fermionic = bosonic + fermionic := by simp
|
|
|
|
|
conv_lhs => rw [h1]
|
2025-02-03 11:05:43 +00:00
|
|
|
|
apply fieldOpFreeAlgebraGrade.mul_mem
|
2025-01-29 16:41:10 +00:00
|
|
|
|
simp only [SetLike.coe_mem]
|
2025-01-29 15:08:43 +00:00
|
|
|
|
simp)]
|
|
|
|
|
conv_lhs =>
|
|
|
|
|
right
|
|
|
|
|
right
|
2025-02-05 07:22:14 +00:00
|
|
|
|
rw [bosonicProjF_of_mem_bosonic _
|
2025-01-29 15:08:43 +00:00
|
|
|
|
(by
|
2025-01-29 16:41:10 +00:00
|
|
|
|
have h1 : bosonic = fermionic + fermionic := by
|
|
|
|
|
simp only [add_eq_mul, instCommGroup, mul_self]
|
|
|
|
|
rfl
|
2025-01-29 15:08:43 +00:00
|
|
|
|
conv_lhs => rw [h1]
|
2025-02-03 11:05:43 +00:00
|
|
|
|
apply fieldOpFreeAlgebraGrade.mul_mem
|
2025-01-29 16:41:10 +00:00
|
|
|
|
simp only [SetLike.coe_mem]
|
2025-01-29 15:08:43 +00:00
|
|
|
|
simp)]
|
2025-01-29 16:41:10 +00:00
|
|
|
|
simp only [ZeroMemClass.coe_zero, add_zero, zero_add]
|
|
|
|
|
· have h1 : bosonic = bosonic + bosonic := by
|
|
|
|
|
simp only [add_eq_mul, instCommGroup, mul_self]
|
|
|
|
|
rfl
|
2025-01-29 15:08:43 +00:00
|
|
|
|
conv_lhs => rw [h1]
|
2025-02-03 11:05:43 +00:00
|
|
|
|
apply fieldOpFreeAlgebraGrade.mul_mem
|
2025-01-29 16:41:10 +00:00
|
|
|
|
simp only [SetLike.coe_mem]
|
2025-01-29 15:08:43 +00:00
|
|
|
|
simp
|
|
|
|
|
|
2025-02-05 07:22:14 +00:00
|
|
|
|
lemma fermionicProjF_mul (a b : 𝓕.FieldOpFreeAlgebra) :
|
|
|
|
|
(a * b).fermionicProjF.1 = a.bosonicProjF.1 * b.fermionicProjF.1
|
|
|
|
|
+ a.fermionicProjF.1 * b.bosonicProjF.1 := by
|
2025-01-29 15:08:43 +00:00
|
|
|
|
conv_lhs =>
|
2025-02-05 07:22:14 +00:00
|
|
|
|
rw [← bosonicProjF_add_fermionicProjF a]
|
|
|
|
|
rw [← bosonicProjF_add_fermionicProjF b]
|
2025-01-29 16:41:10 +00:00
|
|
|
|
simp only [mul_add, add_mul, map_add, Submodule.coe_add]
|
2025-01-29 15:08:43 +00:00
|
|
|
|
conv_lhs =>
|
|
|
|
|
left
|
|
|
|
|
left
|
2025-02-05 07:22:14 +00:00
|
|
|
|
rw [fermionicProjF_of_mem_bosonic _
|
2025-01-29 15:08:43 +00:00
|
|
|
|
(by
|
2025-01-29 16:41:10 +00:00
|
|
|
|
have h1 : bosonic = bosonic + bosonic := by
|
|
|
|
|
simp only [add_eq_mul, instCommGroup, mul_self]
|
|
|
|
|
rfl
|
2025-01-29 15:08:43 +00:00
|
|
|
|
conv_lhs => rw [h1]
|
2025-02-03 11:05:43 +00:00
|
|
|
|
apply fieldOpFreeAlgebraGrade.mul_mem
|
2025-01-29 16:41:10 +00:00
|
|
|
|
simp only [SetLike.coe_mem]
|
2025-01-29 15:08:43 +00:00
|
|
|
|
simp)]
|
|
|
|
|
conv_lhs =>
|
|
|
|
|
left
|
|
|
|
|
right
|
2025-02-05 07:22:14 +00:00
|
|
|
|
rw [fermionicProjF_of_mem_fermionic _
|
2025-01-29 15:08:43 +00:00
|
|
|
|
(by
|
|
|
|
|
have h1 : fermionic = fermionic + bosonic := by simp
|
|
|
|
|
conv_lhs => rw [h1]
|
2025-02-03 11:05:43 +00:00
|
|
|
|
apply fieldOpFreeAlgebraGrade.mul_mem
|
2025-01-29 16:41:10 +00:00
|
|
|
|
simp only [SetLike.coe_mem]
|
2025-01-29 15:08:43 +00:00
|
|
|
|
simp)]
|
|
|
|
|
conv_lhs =>
|
|
|
|
|
right
|
|
|
|
|
left
|
2025-02-05 07:22:14 +00:00
|
|
|
|
rw [fermionicProjF_of_mem_fermionic _
|
2025-01-29 15:08:43 +00:00
|
|
|
|
(by
|
|
|
|
|
have h1 : fermionic = bosonic + fermionic := by simp
|
|
|
|
|
conv_lhs => rw [h1]
|
2025-02-03 11:05:43 +00:00
|
|
|
|
apply fieldOpFreeAlgebraGrade.mul_mem
|
2025-01-29 16:41:10 +00:00
|
|
|
|
simp only [SetLike.coe_mem]
|
2025-01-29 15:08:43 +00:00
|
|
|
|
simp)]
|
|
|
|
|
conv_lhs =>
|
|
|
|
|
right
|
|
|
|
|
right
|
2025-02-05 07:22:14 +00:00
|
|
|
|
rw [fermionicProjF_of_mem_bosonic _
|
2025-01-29 15:08:43 +00:00
|
|
|
|
(by
|
2025-01-29 16:41:10 +00:00
|
|
|
|
have h1 : bosonic = fermionic + fermionic := by
|
|
|
|
|
simp only [add_eq_mul, instCommGroup, mul_self]
|
|
|
|
|
rfl
|
2025-01-29 15:08:43 +00:00
|
|
|
|
conv_lhs => rw [h1]
|
2025-02-03 11:05:43 +00:00
|
|
|
|
apply fieldOpFreeAlgebraGrade.mul_mem
|
2025-01-29 16:41:10 +00:00
|
|
|
|
simp only [SetLike.coe_mem]
|
2025-01-29 15:08:43 +00:00
|
|
|
|
simp)]
|
2025-01-29 16:41:10 +00:00
|
|
|
|
simp only [ZeroMemClass.coe_zero, zero_add, add_zero]
|
2025-01-29 15:08:43 +00:00
|
|
|
|
abel
|
2025-01-28 11:53:24 +00:00
|
|
|
|
|
2025-01-28 09:48:38 +00:00
|
|
|
|
end
|
|
|
|
|
|
2025-02-03 11:05:43 +00:00
|
|
|
|
end FieldOpFreeAlgebra
|
2025-01-28 09:48:38 +00:00
|
|
|
|
|
|
|
|
|
end FieldSpecification
|