feat: Some lemmas about Bispinors

This commit is contained in:
jstoobysmith 2024-10-25 15:02:40 +00:00
parent f2eaa2ee43
commit 7ea91f459c
2 changed files with 30 additions and 11 deletions

View file

@ -29,10 +29,31 @@ open Lorentz
def contrBispinorUp (p : complexContr) := def contrBispinorUp (p : complexContr) :=
{p | μ ⊗ pauliCo | μ α β}ᵀ.tensor {p | μ ⊗ pauliCo | μ α β}ᵀ.tensor
lemma tensorNode_contrBispinorUp (p : complexContr) :
(tensorNode (contrBispinorUp p)).tensor = {p | μ ⊗ pauliCo | μ α β}ᵀ.tensor := by
rw [contrBispinorUp, tensorNode_tensor]
/-- A bispinor `pₐₐ` created from a lorentz vector `p^μ`. -/ /-- A bispinor `pₐₐ` created from a lorentz vector `p^μ`. -/
def contrBispinorDown (p : complexContr) := def contrBispinorDown (p : complexContr) :=
{Fermion.altRightMetric | β β' ⊗ Fermion.altLeftMetric | α α' ⊗ {Fermion.altLeftMetric | α α' ⊗ Fermion.altRightMetric | β β' ⊗
(contrBispinorUp p) | α β}ᵀ.tensor (contrBispinorUp p) | α β}ᵀ.tensor
/-- Expands the tensor node of `contrBispinorDown` into a tensor tree based on
`contrBispinorUp`. -/
lemma tensorNode_contrBispinorDown (p : complexContr) :
{contrBispinorDown p | α β}ᵀ.tensor = {Fermion.altLeftMetric | α α' ⊗
Fermion.altRightMetric | β β' ⊗ (contrBispinorUp p) | α β}ᵀ.tensor := by
rw [contrBispinorDown, tensorNode_tensor]
/-- Expansion of a `contrBispinorDown` into the original contravariant tensor nested
between pauli matrices and metrics. -/
lemma contrBispinorDown_full_nested (p : complexContr) :
{contrBispinorDown p | α β}ᵀ.tensor = {Fermion.altLeftMetric | α α' ⊗
Fermion.altRightMetric | β β' ⊗ (p | μ ⊗ pauliCo | μ α β)}ᵀ.tensor := by
conv =>
lhs
rw [tensorNode_contrBispinorDown]
rw [contr_tensor_eq <| contr_tensor_eq <| prod_tensor_eq_snd <| tensorNode_contrBispinorUp p]
end complexLorentzTensor end complexLorentzTensor
end end

View file

@ -25,6 +25,13 @@ noncomputable section
namespace Fermion namespace Fermion
open complexLorentzTensor open complexLorentzTensor
def pauliCo := {Lorentz.coMetric | μ ν ⊗ PauliMatrix.asConsTensor | ν α β}ᵀ.tensor
lemma tensorNode_pauliCo : (tensorNode pauliCo).tensor =
{Lorentz.coMetric | μ ν ⊗ PauliMatrix.asConsTensor | ν α β}ᵀ.tensor := by
rw [pauliCo]
rfl
/-- The map to color one gets when lowering the indices of pauli matrices. -/ /-- The map to color one gets when lowering the indices of pauli matrices. -/
def pauliCoMap := ((Sum.elim ![Color.down, Color.down] ![Color.up, Color.upL, Color.upR] ∘ def pauliCoMap := ((Sum.elim ![Color.down, Color.down] ![Color.up, Color.upL, Color.upR] ∘
⇑finSumFinEquiv.symm) ∘ Fin.succAbove 1 ∘ Fin.succAbove 1) ⇑finSumFinEquiv.symm) ∘ Fin.succAbove 1 ∘ Fin.succAbove 1)
@ -211,15 +218,6 @@ lemma pauliMatrix_contr_down_3 :
funext k funext k
fin_cases k <;> rfl fin_cases k <;> rfl
def pauliCo := {Lorentz.coMetric | μ ν ⊗ PauliMatrix.asConsTensor | ν α β}ᵀ.tensor
lemma tensoreNode_pauliCo : (tensorNode pauliCo).tensor =
{Lorentz.coMetric | μ ν ⊗ PauliMatrix.asConsTensor | ν α β}ᵀ.tensor := by
rw [pauliCo]
rfl
set_option profiler true
set_option profiler.threshold 10
lemma pauliCo_basis_expand : pauliCo lemma pauliCo_basis_expand : pauliCo
= basisVector pauliCoMap (fun | 0 => 0 | 1 => 0 | 2 => 0) = basisVector pauliCoMap (fun | 0 => 0 | 1 => 0 | 2 => 0)
+ basisVector pauliCoMap (fun | 0 => 0 | 1 => 1 | 2 => 1) + basisVector pauliCoMap (fun | 0 => 0 | 1 => 1 | 2 => 1)
@ -309,7 +307,7 @@ lemma pauliCo_prod_basis_expand {n : } {c : Fin n → complexLorentzTensor.C}
((tensorNode ((tensorNode
(basisVector pauliCoMap fun | 0 => 3 | 1 => 1 | 2 => 1)).prod (basisVector pauliCoMap fun | 0 => 3 | 1 => 1 | 2 => 1)).prod
t)))))))).tensor := by t)))))))).tensor := by
rw [prod_tensor_eq_fst <| tensoreNode_pauliCo] rw [prod_tensor_eq_fst <| tensorNode_pauliCo]
rw [prod_tensor_eq_fst <| pauliCo_basis_expand_tree] rw [prod_tensor_eq_fst <| pauliCo_basis_expand_tree]
/- Moving the prod through additions. -/ /- Moving the prod through additions. -/
rw [add_prod _ _ _] rw [add_prod _ _ _]