refactor: Simplify proofs

This commit is contained in:
jstoobysmith 2024-10-24 06:10:08 +00:00
parent 33a42c7e06
commit 95857993b5
6 changed files with 366 additions and 496 deletions

View file

@ -184,6 +184,5 @@ lemma basis_contr (c : complexLorentzTensor.C) (i : Fin (complexLorentzTensor.re
| Color.up => Lorentz.contrCoContraction_basis _ _
| Color.down => Lorentz.coContrContraction_basis _ _
end
end Fermion

View file

@ -79,11 +79,32 @@ lemma perm_basisVector {n m : } {c : Fin n → complexLorentzTensor.C}
eqToIso.hom, Functor.mapIso_inv, eqToIso.inv, LinearEquiv.ofLinear_apply]
rw [basis_eq_FDiscrete]
def contrBasisVectorMul {n : } {c : Fin n.succ.succ → complexLorentzTensor.C}
(i : Fin n.succ.succ) (j : Fin n.succ)
(b : Π k, Fin (complexLorentzTensor.repDim (c k))) : :=
(if (b i).val = (b (i.succAbove j)).val then (1 : ) else 0)
lemma contrBasisVectorMul_neg {n : } {c : Fin n.succ.succ → complexLorentzTensor.C}
{i : Fin n.succ.succ} {j : Fin n.succ} {b : Π k, Fin (complexLorentzTensor.repDim (c k))}
(h : ¬ (b i).val = (b (i.succAbove j)).val := by decide) :
contrBasisVectorMul i j b = 0 := by
rw [contrBasisVectorMul]
simp
exact h
lemma contrBasisVectorMul_pos {n : } {c : Fin n.succ.succ → complexLorentzTensor.C}
{i : Fin n.succ.succ} {j : Fin n.succ} {b : Π k, Fin (complexLorentzTensor.repDim (c k))}
(h : (b i).val = (b (i.succAbove j)).val := by decide) :
contrBasisVectorMul i j b = 1 := by
rw [contrBasisVectorMul]
simp
exact h
lemma contr_basisVector {n : } {c : Fin n.succ.succ → complexLorentzTensor.C}
{i : Fin n.succ.succ} {j : Fin n.succ} {h : c (i.succAbove j) = complexLorentzTensor.τ (c i)}
(b : Π k, Fin (complexLorentzTensor.repDim (c k))) :
(contr i j h (tensorNode (basisVector c b))).tensor = (if (b i).val = (b (i.succAbove j)).val
then (1 : ) else 0) • basisVector (c ∘ Fin.succAbove i ∘ Fin.succAbove j)
(contr i j h (tensorNode (basisVector c b))).tensor = (contrBasisVectorMul i j b) •
basisVector (c ∘ Fin.succAbove i ∘ Fin.succAbove j)
(fun k => b (i.succAbove (j.succAbove k))) := by
rw [contr_tensor]
simp only [Nat.succ_eq_add_one, tensorNode_tensor]
@ -102,8 +123,7 @@ lemma contr_basisVector_tree {n : } {c : Fin n.succ.succ → complexLorentzT
{i : Fin n.succ.succ} {j : Fin n.succ} {h : c (i.succAbove j) = complexLorentzTensor.τ (c i)}
(b : Π k, Fin (complexLorentzTensor.repDim (c k))) :
(contr i j h (tensorNode (basisVector c b))).tensor =
(smul ((if (b i).val = (b (i.succAbove j)).val
then (1 : ) else 0)) (tensorNode ( basisVector (c ∘ Fin.succAbove i ∘ Fin.succAbove j)
(smul (contrBasisVectorMul i j b) (tensorNode ( basisVector (c ∘ Fin.succAbove i ∘ Fin.succAbove j)
(fun k => b (i.succAbove (j.succAbove k)))) )).tensor := by
exact contr_basisVector _
@ -113,7 +133,7 @@ lemma contr_basisVector_tree_pos {n : } {c : Fin n.succ.succ → complexLore
(contr i j h (tensorNode (basisVector c b))).tensor =
((tensorNode ( basisVector (c ∘ Fin.succAbove i ∘ Fin.succAbove j)
(fun k => b (i.succAbove (j.succAbove k)))))).tensor := by
rw [contr_basisVector_tree]
rw [contr_basisVector_tree, contrBasisVectorMul]
rw [if_pos hn]
simp [smul_tensor]
@ -122,10 +142,11 @@ lemma contr_basisVector_tree_neg {n : } {c : Fin n.succ.succ → complexLore
(b : Π k, Fin (complexLorentzTensor.repDim (c k))) (hn : ¬ (b i).val = (b (i.succAbove j)).val := by decide) :
(contr i j h (tensorNode (basisVector c b))).tensor =
(tensorNode 0).tensor := by
rw [contr_basisVector_tree]
rw [contr_basisVector_tree, contrBasisVectorMul]
rw [if_neg hn]
simp [smul_tensor]
def prodBasisVecEquiv {n m : } {c : Fin n → complexLorentzTensor.C}
{c1 : Fin m → complexLorentzTensor.C} (i : Fin n ⊕ Fin m) :
Sum.elim (fun i => Fin (complexLorentzTensor.repDim (c i))) (fun i => Fin (complexLorentzTensor.repDim (c1 i)))

File diff suppressed because it is too large Load diff

View file

@ -286,7 +286,6 @@ lemma μ_tmul_tprod_mk {X Y : Type} {cX : X → C} {cY : Y → C}
| Sum.inl i => rfl
| Sum.inr i => rfl
lemma μ_natural_left {X Y : OverColor C} (f : X ⟶ Y) (Z : OverColor C) :
MonoidalCategory.whiskerRight (objMap' F f) (objObj' F Z) ≫ (μ F Y Z).hom =
(μ F X Z).hom ≫ objMap' F (MonoidalCategory.whiskerRight f Z) := by

View file

@ -680,7 +680,7 @@ lemma eval_tensor {n : } {c : Fin n.succ → S.C} (i : Fin n.succ) (e : )
(eval i e t).tensor = (S.evalMap i (Fin.ofNat' e Fin.size_pos')) t.tensor := rfl
lemma smul_tensor {c : Fin n → S.C} (a : S.k) (T : TensorTree S c) :
(smul a T).tensor = a • T.tensor:= rfl
(smul a T).tensor = a • T.tensor:= rfl
/-!
## Equality of tensors and rewrites.