feat: add contract of Pauli matrices

This commit is contained in:
jstoobysmith 2024-10-23 19:43:58 +00:00
parent 685c1b293c
commit 33a42c7e06
2 changed files with 33 additions and 5 deletions

View file

@ -327,6 +327,14 @@ lemma pauliMatrix_contr_down_1 : (contr 0 1 rfl
funext k
fin_cases k <;> rfl
lemma pauliMatrix_contr_down_1_tree : (contr 0 1 rfl
(((tensorNode (basisVector ![Color.down, Color.down] fun x => 1)).prod
(constThreeNodeE complexLorentzTensor Color.up Color.upL Color.upR
PauliMatrix.asConsTensor)))).tensor
= (TensorTree.add (tensorNode (basisVector pauliMatrixLowerMap (fun | 0 => 1 | 1 => 0 | 2 => 1)))
(tensorNode (basisVector pauliMatrixLowerMap (fun | 0 => 1 | 1 => 1 | 2 => 0)))).tensor := by
exact pauliMatrix_contr_down_1
lemma pauliMatrix_contr_down_2 : (contr 0 1 rfl
(((tensorNode (basisVector ![Color.down, Color.down] fun x => 2)).prod
(constThreeNodeE complexLorentzTensor Color.up Color.upL Color.upR
@ -865,7 +873,6 @@ lemma pauliMatrix_contr_lower_3_1_1 : (contr 0 2 rfl
/-
lemma pauliMatrix_lower :
{Lorentz.coMetric | μ ν ⊗ PauliMatrix.asConsTensor | μ α β}ᵀ.tensor
= basisVector pauliMatrixLowerMap (fun | 0 => 0 | 1 => 0 | 2 => 0)
@ -877,9 +884,26 @@ lemma pauliMatrix_lower :
+ basisVector pauliMatrixLowerMap (fun | 0 => 3 | 1 => 0 | 2 => 0)
- basisVector pauliMatrixLowerMap (fun | 0 => 3 | 1 => 1 | 2 => 1) := by
rw [contr_tensor_eq <| prod_tensor_eq_fst <| coMetric_basis_expand_tree]
rw [contr_tensor_eq <| prod_tensor_eq_snd <| pauliMatrix_basis_expand_tree]
sorry -/
/- Moving the prod through additions. -/
rw [contr_tensor_eq <| add_prod _ _ _]
rw [contr_tensor_eq <| add_tensor_eq_snd <| add_prod _ _ _]
rw [contr_tensor_eq <| add_tensor_eq_snd <| add_tensor_eq_snd <| add_prod _ _ _]
/- Moving the prod through smuls. -/
rw [contr_tensor_eq <| add_tensor_eq_snd <| add_tensor_eq_fst <| smul_prod _ _ _]
rw [contr_tensor_eq <| add_tensor_eq_snd <| add_tensor_eq_snd <| add_tensor_eq_fst
<| smul_prod _ _ _]
rw [contr_tensor_eq <| add_tensor_eq_snd <| add_tensor_eq_snd <| add_tensor_eq_snd
<| smul_prod _ _ _]
/- Moving contraction through addition. -/
rw [contr_add]
rw [add_tensor_eq_snd <| contr_add _ _]
rw [add_tensor_eq_snd <| add_tensor_eq_snd <| contr_add _ _]
/- Moving contraction through smul. -/
rw [add_tensor_eq_snd <| add_tensor_eq_fst <| contr_smul _ _]
rw [add_tensor_eq_snd <| add_tensor_eq_snd <| add_tensor_eq_fst <| contr_smul _ _]
rw [add_tensor_eq_snd <| add_tensor_eq_snd <| add_tensor_eq_snd <| contr_smul _ _]
/- Replacing the contractions. -/
sorry
lemma pauliMatrix_contract_pauliMatrix :
@ -888,7 +912,7 @@ lemma pauliMatrix_contract_pauliMatrix :
- basisVector pauliMatrixContrPauliMatrixMap (fun | 0 => 0 | 1 => 1 | 2 => 1 | 3 => 0)
- basisVector pauliMatrixContrPauliMatrixMap (fun | 0 => 1 | 1 => 0 | 2 => 0 | 3 => 1)
+ basisVector pauliMatrixContrPauliMatrixMap (fun | 0 => 1 | 1 => 0 | 2 => 1 | 3 => 0) := by
sorry
end Fermion
end

View file

@ -744,6 +744,10 @@ lemma smul_tensor_eq {T1 T2 : TensorTree S c} {a : S.k} (h : T1.tensor = T2.tens
simp only [smul_tensor]
rw [h]
lemma eq_tensorNode_of_eq_tensor {T1 : TensorTree S c} {t : S.F.obj (OverColor.mk c)}
(h : T1.tensor = t) : T1.tensor = (tensorNode t).tensor := by
simpa using h
/-- A structure containing a pair of indices (i, j) to be contracted in a tensor.
This is used in some proofs of node identities for tensor trees. -/
structure ContrPair {n : } (c : Fin n.succ.succ → S.C) where