PhysLean/HepLean/Tensors/ComplexLorentz/Bispinors/Basic.lean

187 lines
6.8 KiB
Text
Raw Normal View History

2024-10-25 05:30:04 +00:00
/-
Copyright (c) 2024 Joseph Tooby-Smith. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Joseph Tooby-Smith
-/
2024-10-28 15:29:58 +00:00
import HepLean.Tensors.ComplexLorentz.PauliMatrices.Basic
2024-10-28 14:05:38 +00:00
import HepLean.Tensors.Tree.NodeIdentities.ProdContr
2024-10-28 15:29:58 +00:00
import HepLean.Tensors.Tree.NodeIdentities.PermContr
import HepLean.Tensors.Tree.NodeIdentities.PermProd
import HepLean.Tensors.Tree.NodeIdentities.ContrSwap
import HepLean.Tensors.Tree.NodeIdentities.ContrContr
import HepLean.Tensors.Tree.NodeIdentities.ProdComm
2024-10-28 14:05:38 +00:00
import HepLean.Tensors.Tree.NodeIdentities.Congr
import HepLean.Tensors.Tree.NodeIdentities.ProdAssoc
2024-10-25 05:30:04 +00:00
/-!
## Bispinors
-/
open IndexNotation
open CategoryTheory
open MonoidalCategory
open Matrix
open MatrixGroups
open Complex
open TensorProduct
open IndexNotation
open CategoryTheory
open TensorTree
open OverColor.Discrete
open Fermion
noncomputable section
namespace complexLorentzTensor
open Lorentz
2024-10-25 05:30:04 +00:00
2024-10-28 15:29:58 +00:00
/-!
2024-10-25 05:30:04 +00:00
2024-10-28 15:29:58 +00:00
## Definitions
2024-10-25 15:02:40 +00:00
2024-10-28 15:29:58 +00:00
-/
/-- A bispinor `pᵃᵃ` created from a lorentz vector `p^μ`. -/
def contrBispinorUp (p : complexContr) :=
{pauliCo | μ α β ⊗ p | μ}ᵀ.tensor
2024-10-28 14:05:38 +00:00
2024-10-25 15:12:39 +00:00
/-- A bispinor `pₐₐ` created from a lorentz vector `p^μ`. -/
2024-10-25 13:52:06 +00:00
def contrBispinorDown (p : complexContr) :=
2024-10-31 14:42:10 +00:00
{εL' | α α' ⊗ εR' | β β' ⊗ contrBispinorUp p | α β}ᵀ.tensor
2024-10-25 05:30:04 +00:00
2024-10-28 15:29:58 +00:00
/-- A bispinor `pᵃᵃ` created from a lorentz vector `p_μ`. -/
2024-10-31 14:42:10 +00:00
def coBispinorUp (p : complexCo) := {pauliContr | μ α β ⊗ p | μ}ᵀ.tensor
2024-10-28 15:29:58 +00:00
/-- A bispinor `pₐₐ` created from a lorentz vector `p_μ`. -/
def coBispinorDown (p : complexCo) :=
2024-10-31 14:42:10 +00:00
{εL' | α α' ⊗ εR' | β β' ⊗ coBispinorUp p | α β}ᵀ.tensor
2024-10-28 15:29:58 +00:00
/-!
## Tensor nodes
-/
/-- The definitional tensor node relation for `contrBispinorUp`. -/
lemma tensorNode_contrBispinorUp (p : complexContr) :
{contrBispinorUp p | α β}ᵀ.tensor = {pauliCo | μ α β ⊗ p | μ}ᵀ.tensor := by
rw [contrBispinorUp, tensorNode_tensor]
/-- The definitional tensor node relation for `contrBispinorDown`. -/
2024-10-25 15:02:40 +00:00
lemma tensorNode_contrBispinorDown (p : complexContr) :
2024-10-28 15:29:58 +00:00
{contrBispinorDown p | α β}ᵀ.tensor =
2024-10-31 14:42:10 +00:00
{εL' | α α' ⊗ εR' | β β' ⊗ contrBispinorUp p | α β}ᵀ.tensor := by
2024-10-25 15:02:40 +00:00
rw [contrBispinorDown, tensorNode_tensor]
2024-10-28 15:29:58 +00:00
/-- The definitional tensor node relation for `coBispinorUp`. -/
2024-10-29 11:23:08 +00:00
lemma tensorNode_coBispinorUp (p : complexCo) :
2024-10-28 15:29:58 +00:00
{coBispinorUp p | α β}ᵀ.tensor = {pauliContr | μ α β ⊗ p | μ}ᵀ.tensor := by
rw [coBispinorUp, tensorNode_tensor]
/-- The definitional tensor node relation for `coBispinorDown`. -/
lemma tensorNode_coBispinorDown (p : complexCo) :
{coBispinorDown p | α β}ᵀ.tensor =
2024-10-31 14:42:10 +00:00
{εL' | α α' ⊗ εR' | β β' ⊗ coBispinorUp p | α β}ᵀ.tensor := by
2024-10-28 15:29:58 +00:00
rw [coBispinorDown, tensorNode_tensor]
2024-10-25 15:02:40 +00:00
2024-10-29 10:37:18 +00:00
/-!
## Basic equalities.
-/
lemma contrBispinorDown_expand (p : complexContr) :
2024-10-29 11:23:08 +00:00
{contrBispinorDown p | α β}ᵀ.tensor =
2024-10-31 14:42:10 +00:00
{εL' | α α' ⊗ εR' | β β' ⊗
2024-10-29 10:37:18 +00:00
(pauliCo | μ α β ⊗ p | μ)}ᵀ.tensor := by
rw [tensorNode_contrBispinorDown p]
rw [contr_tensor_eq <| contr_tensor_eq <| prod_tensor_eq_snd <| tensorNode_contrBispinorUp p]
lemma coBispinorDown_expand (p : complexCo) :
2024-10-29 11:23:08 +00:00
{coBispinorDown p | α β}ᵀ.tensor =
2024-10-31 14:42:10 +00:00
{εL' | α α' ⊗ εR' | β β' ⊗
(pauliContr | μ α β ⊗ p | μ)}ᵀ.tensor := by
rw [tensorNode_coBispinorDown p]
rw [contr_tensor_eq <| contr_tensor_eq <| prod_tensor_eq_snd <| tensorNode_coBispinorUp p]
2024-10-29 10:37:18 +00:00
set_option maxRecDepth 5000 in
lemma contrBispinorDown_eq_pauliCoDown_contr (p : complexContr) :
2024-10-29 11:23:08 +00:00
{contrBispinorDown p | α β = pauliCoDown | μ α β ⊗ p | μ}ᵀ := by
2024-10-29 10:37:18 +00:00
conv =>
rhs
2024-10-29 11:23:08 +00:00
rw [perm_tensor_eq <| contr_tensor_eq <| prod_tensor_eq_fst <|
pauliCoDown_eq_metric_mul_pauliCo]
2024-10-29 10:37:18 +00:00
rw [perm_tensor_eq <| contr_tensor_eq <| prod_perm_left _ _ _ _]
rw [perm_tensor_eq <| perm_contr_congr 2 2]
rw [perm_perm]
rw [perm_tensor_eq <| contr_tensor_eq <| contr_prod _ _ _]
rw [perm_tensor_eq <| perm_contr_congr 2 2]
rw [perm_perm]
apply (perm_tensor_eq <| contr_tensor_eq <| contr_tensor_eq <| perm_eq_id _ rfl _).trans
2024-10-29 11:23:08 +00:00
rw [perm_tensor_eq <| contr_tensor_eq <| contr_tensor_eq <| contr_prod _ _ _]
2024-10-29 10:37:18 +00:00
rw [perm_tensor_eq <| contr_tensor_eq <| perm_contr_congr 1 3]
rw [perm_tensor_eq <| perm_contr_congr 2 2]
rw [perm_perm]
2024-10-29 11:23:08 +00:00
erw [perm_tensor_eq <| contr_tensor_eq <| contr_tensor_eq <| contr_tensor_eq <|
perm_eq_id _ rfl _]
rw [perm_tensor_eq <| contr_tensor_eq <| contr_tensor_eq <| contr_tensor_eq <|
prod_assoc' _ _ _ _ _ _]
2024-10-29 10:37:18 +00:00
rw [perm_tensor_eq <| contr_tensor_eq <| contr_tensor_eq <| perm_contr_congr 0 4]
rw [perm_tensor_eq <| contr_tensor_eq <| perm_contr_congr 1 3]
rw [perm_tensor_eq <| perm_contr_congr 2 2]
rw [perm_perm]
conv =>
lhs
rw [contrBispinorDown_expand p]
rw [contr_tensor_eq <| contr_tensor_eq <| prod_contr _ _ _]
rw [contr_tensor_eq <| perm_contr_congr 0 3]
rw [perm_contr_congr 1 2]
apply (perm_tensor_eq <| contr_tensor_eq <| contr_contr _ _ _).trans
rw [perm_tensor_eq <| perm_contr _ _]
rw [perm_perm]
rw [perm_tensor_eq <| contr_contr _ _ _]
rw [perm_perm]
apply perm_congr _ rfl
decide
set_option maxRecDepth 5000 in
lemma coBispinorDown_eq_pauliContrDown_contr (p : complexCo) :
2024-10-29 11:32:04 +00:00
{coBispinorDown p | α β = pauliContrDown | μ α β ⊗ p | μ}ᵀ := by
conv =>
rhs
2024-10-29 11:23:08 +00:00
rw [perm_tensor_eq <| contr_tensor_eq <| prod_tensor_eq_fst <|
pauliContrDown_eq_metric_mul_pauliContr]
rw [perm_tensor_eq <| contr_tensor_eq <| prod_perm_left _ _ _ _]
rw [perm_tensor_eq <| perm_contr_congr 2 2]
rw [perm_perm]
rw [perm_tensor_eq <| contr_tensor_eq <| contr_prod _ _ _]
rw [perm_tensor_eq <| perm_contr_congr 2 2]
rw [perm_perm]
apply (perm_tensor_eq <| contr_tensor_eq <| contr_tensor_eq <| perm_eq_id _ rfl _).trans
2024-10-29 11:23:08 +00:00
rw [perm_tensor_eq <| contr_tensor_eq <| contr_tensor_eq <| contr_prod _ _ _]
rw [perm_tensor_eq <| contr_tensor_eq <| perm_contr_congr 1 3]
rw [perm_tensor_eq <| perm_contr_congr 2 2]
rw [perm_perm]
2024-10-29 11:23:08 +00:00
erw [perm_tensor_eq <| contr_tensor_eq <| contr_tensor_eq <| contr_tensor_eq <|
perm_eq_id _ rfl _]
rw [perm_tensor_eq <| contr_tensor_eq <| contr_tensor_eq <| contr_tensor_eq <|
prod_assoc' _ _ _ _ _ _]
rw [perm_tensor_eq <| contr_tensor_eq <| contr_tensor_eq <| perm_contr_congr 0 4]
rw [perm_tensor_eq <| contr_tensor_eq <| perm_contr_congr 1 3]
rw [perm_tensor_eq <| perm_contr_congr 2 2]
rw [perm_perm]
conv =>
lhs
rw [coBispinorDown_expand p]
rw [contr_tensor_eq <| contr_tensor_eq <| prod_contr _ _ _]
rw [contr_tensor_eq <| perm_contr_congr 0 3]
rw [perm_contr_congr 1 2]
apply (perm_tensor_eq <| contr_tensor_eq <| contr_contr _ _ _).trans
rw [perm_tensor_eq <| perm_contr _ _]
rw [perm_perm]
rw [perm_tensor_eq <| contr_contr _ _ _]
rw [perm_perm]
apply perm_congr _ rfl
decide
2024-10-29 10:37:18 +00:00
end complexLorentzTensor
2024-10-25 05:30:04 +00:00
end