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
|
2024-10-25 13:50:19 +00:00
|
|
|
|
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]
|
|
|
|
|
|
2024-10-29 10:45:43 +00:00
|
|
|
|
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' | β β' ⊗
|
2024-10-29 10:45:43 +00:00
|
|
|
|
(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
|
|
|
|
|
|
2024-10-29 10:45:43 +00:00
|
|
|
|
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
|
2024-10-29 10:45:43 +00:00
|
|
|
|
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]
|
2024-10-29 10:45:43 +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:45:43 +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:45:43 +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 [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
|
|
|
|
|
2024-10-25 13:50:19 +00:00
|
|
|
|
end complexLorentzTensor
|
2024-10-25 05:30:04 +00:00
|
|
|
|
end
|