feat: Expansion of metrics in terms of basis
This commit is contained in:
parent
b70e9bd005
commit
ca55da6a34
3 changed files with 154 additions and 6 deletions
|
@ -70,6 +70,15 @@ lemma metricRaw_comm_star (M : SL(2,ℂ)) : metricRaw * M.1.map star = ((M.1)⁻
|
|||
def leftMetricVal : (leftHanded ⊗ leftHanded).V :=
|
||||
leftLeftToMatrix.symm (- metricRaw)
|
||||
|
||||
/-- Expansion of `leftMetricVal` into the left basis. -/
|
||||
lemma leftMetricVal_expand_tmul : leftMetricVal =
|
||||
- leftBasis 0 ⊗ₜ[ℂ] leftBasis 1 + leftBasis 1 ⊗ₜ[ℂ] leftBasis 0 := by
|
||||
simp only [Action.instMonoidalCategory_tensorObj_V, leftMetricVal, Fin.isValue]
|
||||
erw [leftLeftToMatrix_symm_expand_tmul]
|
||||
simp only [metricRaw, neg_apply, of_apply, cons_val', empty_val', cons_val_fin_one, neg_smul,
|
||||
Finset.sum_neg_distrib, Fin.sum_univ_two, Fin.isValue, cons_val_zero, cons_val_one, head_cons,
|
||||
neg_add_rev, one_smul, zero_smul, neg_zero, add_zero, head_fin_const, neg_neg, zero_add]
|
||||
|
||||
/-- The metric `εₐₐ` as a morphism `𝟙_ (Rep ℂ SL(2,ℂ)) ⟶ leftHanded ⊗ leftHanded`,
|
||||
making manifest its invariance under the action of `SL(2,ℂ)`. -/
|
||||
def leftMetric : 𝟙_ (Rep ℂ SL(2,ℂ)) ⟶ leftHanded ⊗ leftHanded where
|
||||
|
@ -99,10 +108,25 @@ def leftMetric : 𝟙_ (Rep ℂ SL(2,ℂ)) ⟶ leftHanded ⊗ leftHanded where
|
|||
simp only [SpecialLinearGroup.det_coe, isUnit_iff_ne_zero, ne_eq, one_ne_zero,
|
||||
not_false_eq_true, mul_nonsing_inv, transpose_one, mul_one]
|
||||
|
||||
lemma leftMetric_apply_one : leftMetric.hom (1 : ℂ) = leftMetricVal := by
|
||||
change leftMetric.hom.toFun (1 : ℂ) = leftMetricVal
|
||||
simp only [Action.instMonoidalCategory_tensorObj_V, Action.instMonoidalCategory_tensorUnit_V,
|
||||
leftMetric, AddHom.toFun_eq_coe, AddHom.coe_mk, one_smul]
|
||||
|
||||
/-- The metric `εᵃᵃ` as an element of `(altLeftHanded ⊗ altLeftHanded).V`. -/
|
||||
def altLeftMetricVal : (altLeftHanded ⊗ altLeftHanded).V :=
|
||||
altLeftaltLeftToMatrix.symm metricRaw
|
||||
|
||||
/-- Expansion of `altLeftMetricVal` into the left basis. -/
|
||||
lemma altLeftMetricVal_expand_tmul : altLeftMetricVal =
|
||||
altLeftBasis 0 ⊗ₜ[ℂ] altLeftBasis 1 - altLeftBasis 1 ⊗ₜ[ℂ] altLeftBasis 0 := by
|
||||
simp only [Action.instMonoidalCategory_tensorObj_V, altLeftMetricVal, Fin.isValue]
|
||||
erw [altLeftaltLeftToMatrix_symm_expand_tmul]
|
||||
simp only [metricRaw, neg_apply, of_apply, cons_val', empty_val', cons_val_fin_one, neg_smul,
|
||||
Finset.sum_neg_distrib, Fin.sum_univ_two, Fin.isValue, cons_val_zero, cons_val_one, head_cons,
|
||||
neg_add_rev, one_smul, zero_smul, neg_zero, add_zero, head_fin_const, neg_neg, zero_add]
|
||||
rfl
|
||||
|
||||
/-- The metric `εᵃᵃ` as a morphism `𝟙_ (Rep ℂ SL(2,ℂ)) ⟶ altLeftHanded ⊗ altLeftHanded`,
|
||||
making manifest its invariance under the action of `SL(2,ℂ)`. -/
|
||||
def altLeftMetric : 𝟙_ (Rep ℂ SL(2,ℂ)) ⟶ altLeftHanded ⊗ altLeftHanded where
|
||||
|
@ -132,10 +156,24 @@ def altLeftMetric : 𝟙_ (Rep ℂ SL(2,ℂ)) ⟶ altLeftHanded ⊗ altLeftHande
|
|||
simp only [SpecialLinearGroup.det_coe, isUnit_iff_ne_zero, ne_eq, one_ne_zero,
|
||||
not_false_eq_true, mul_nonsing_inv, mul_one]
|
||||
|
||||
lemma altLeftMetric_apply_one : altLeftMetric.hom (1 : ℂ) = altLeftMetricVal := by
|
||||
change altLeftMetric.hom.toFun (1 : ℂ) = altLeftMetricVal
|
||||
simp only [Action.instMonoidalCategory_tensorObj_V, Action.instMonoidalCategory_tensorUnit_V,
|
||||
altLeftMetric, AddHom.toFun_eq_coe, AddHom.coe_mk, one_smul]
|
||||
|
||||
/-- The metric `ε_{dot a}_{dot a}` as an element of `(rightHanded ⊗ rightHanded).V`. -/
|
||||
def rightMetricVal : (rightHanded ⊗ rightHanded).V :=
|
||||
rightRightToMatrix.symm (- metricRaw)
|
||||
|
||||
/-- Expansion of `rightMetricVal` into the left basis. -/
|
||||
lemma rightMetricVal_expand_tmul : rightMetricVal =
|
||||
- rightBasis 0 ⊗ₜ[ℂ] rightBasis 1 + rightBasis 1 ⊗ₜ[ℂ] rightBasis 0 := by
|
||||
simp only [Action.instMonoidalCategory_tensorObj_V, rightMetricVal, Fin.isValue]
|
||||
erw [rightRightToMatrix_symm_expand_tmul]
|
||||
simp only [metricRaw, neg_apply, of_apply, cons_val', empty_val', cons_val_fin_one, neg_smul,
|
||||
Finset.sum_neg_distrib, Fin.sum_univ_two, Fin.isValue, cons_val_zero, cons_val_one, head_cons,
|
||||
neg_add_rev, one_smul, zero_smul, neg_zero, add_zero, head_fin_const, neg_neg, zero_add]
|
||||
|
||||
/-- The metric `ε_{dot a}_{dot a}` as a morphism `𝟙_ (Rep ℂ SL(2,ℂ)) ⟶ rightHanded ⊗ rightHanded`,
|
||||
making manifest its invariance under the action of `SL(2,ℂ)`. -/
|
||||
def rightMetric : 𝟙_ (Rep ℂ SL(2,ℂ)) ⟶ rightHanded ⊗ rightHanded where
|
||||
|
@ -173,10 +211,25 @@ def rightMetric : 𝟙_ (Rep ℂ SL(2,ℂ)) ⟶ rightHanded ⊗ rightHanded wher
|
|||
· rw [← rightRightToMatrix_ρ_symm metricRaw M]
|
||||
rfl
|
||||
|
||||
lemma rightMetric_apply_one : rightMetric.hom (1 : ℂ) = rightMetricVal := by
|
||||
change rightMetric.hom.toFun (1 : ℂ) = rightMetricVal
|
||||
simp only [Action.instMonoidalCategory_tensorObj_V, Action.instMonoidalCategory_tensorUnit_V,
|
||||
rightMetric, AddHom.toFun_eq_coe, AddHom.coe_mk, one_smul]
|
||||
|
||||
/-- The metric `ε^{dot a}^{dot a}` as an element of `(altRightHanded ⊗ altRightHanded).V`. -/
|
||||
def altRightMetricVal : (altRightHanded ⊗ altRightHanded).V :=
|
||||
altRightAltRightToMatrix.symm (metricRaw)
|
||||
|
||||
/-- Expansion of `rightMetricVal` into the left basis. -/
|
||||
lemma altRightMetricVal_expand_tmul : altRightMetricVal =
|
||||
altRightBasis 0 ⊗ₜ[ℂ] altRightBasis 1 - altRightBasis 1 ⊗ₜ[ℂ] altRightBasis 0 := by
|
||||
simp only [Action.instMonoidalCategory_tensorObj_V, altRightMetricVal, Fin.isValue]
|
||||
erw [altRightAltRightToMatrix_symm_expand_tmul]
|
||||
simp only [metricRaw, neg_apply, of_apply, cons_val', empty_val', cons_val_fin_one, neg_smul,
|
||||
Finset.sum_neg_distrib, Fin.sum_univ_two, Fin.isValue, cons_val_zero, cons_val_one, head_cons,
|
||||
neg_add_rev, one_smul, zero_smul, neg_zero, add_zero, head_fin_const, neg_neg, zero_add]
|
||||
rfl
|
||||
|
||||
/-- The metric `ε^{dot a}^{dot a}` as a morphism
|
||||
`𝟙_ (Rep ℂ SL(2,ℂ)) ⟶ altRightHanded ⊗ altRightHanded`,
|
||||
making manifest its invariance under the action of `SL(2,ℂ)`. -/
|
||||
|
@ -217,5 +270,9 @@ def altRightMetric : 𝟙_ (Rep ℂ SL(2,ℂ)) ⟶ altRightHanded ⊗ altRightHa
|
|||
· rw [← altRightAltRightToMatrix_ρ_symm metricRaw M]
|
||||
rfl
|
||||
|
||||
lemma altRightMetric_apply_one : altRightMetric.hom (1 : ℂ) = altRightMetricVal := by
|
||||
change altRightMetric.hom.toFun (1 : ℂ) = altRightMetricVal
|
||||
simp only [Action.instMonoidalCategory_tensorObj_V, Action.instMonoidalCategory_tensorUnit_V,
|
||||
altRightMetric, AddHom.toFun_eq_coe, AddHom.coe_mk, one_smul]
|
||||
end
|
||||
end Fermion
|
||||
|
|
|
@ -114,15 +114,15 @@ lemma prod_basisVector {n m : ℕ} {c : Fin n → complexLorentzTensor.C}
|
|||
basisVector (Sum.elim c c1 ∘ finSumFinEquiv.symm) (fun i =>
|
||||
prodBasisVecEquiv (finSumFinEquiv.symm i)
|
||||
((HepLean.PiTensorProduct.elimPureTensor b b1) (finSumFinEquiv.symm i))) := by
|
||||
rw [prod_tensor]
|
||||
simp
|
||||
rw [basisVector, basisVector]
|
||||
simp [TensorSpecies.F_def]
|
||||
rw [prod_tensor, basisVector, basisVector]
|
||||
simp only [TensorSpecies.F_def, Functor.id_obj, OverColor.mk_hom,
|
||||
Action.instMonoidalCategory_tensorObj_V, Equivalence.symm_inverse,
|
||||
Action.functorCategoryEquivalence_functor, Action.FunctorCategoryEquivalence.functor_obj_obj,
|
||||
tensorNode_tensor]
|
||||
have h1 := OverColor.lift.μ_tmul_tprod_mk complexLorentzTensor.FDiscrete
|
||||
(fun i => (complexLorentzTensor.basis (c i)) (b i))
|
||||
(fun i => (complexLorentzTensor.basis (c1 i)) (b1 i))
|
||||
erw [h1]
|
||||
erw [OverColor.lift.map_tprod]
|
||||
erw [h1, OverColor.lift.map_tprod]
|
||||
apply congrArg
|
||||
funext i
|
||||
obtain ⟨k, hk⟩ := finSumFinEquiv.surjective i
|
||||
|
@ -135,6 +135,21 @@ lemma prod_basisVector {n m : ℕ} {c : Fin n → complexLorentzTensor.C}
|
|||
| Sum.inl k => rfl
|
||||
| Sum.inr k => rfl
|
||||
|
||||
lemma eval_basisVector {n : ℕ} {c : Fin n.succ → complexLorentzTensor.C}
|
||||
{i : Fin n.succ} (j : Fin (complexLorentzTensor.repDim (c i)))
|
||||
(b : Π k, Fin (complexLorentzTensor.repDim (c k))) :
|
||||
(eval i j (tensorNode (basisVector c b))).tensor = (if j = b i then (1 : ℂ) else 0) •
|
||||
basisVector (c ∘ Fin.succAbove i) (fun k => b (i.succAbove k)) := by
|
||||
rw [eval_tensor, basisVector, basisVector]
|
||||
simp only [Nat.succ_eq_add_one, Functor.id_obj, OverColor.mk_hom, tensorNode_tensor,
|
||||
Function.comp_apply, one_smul, zero_smul]
|
||||
erw [TensorSpecies.evalMap_tprod]
|
||||
congr 1
|
||||
have h1 : Fin.ofNat' ↑j (@Fin.size_pos' (complexLorentzTensor.repDim (c i)) _) = j := by
|
||||
simpa [Fin.ext_iff] using Nat.mod_eq_of_lt j.prop
|
||||
rw [Basis.repr_self, Finsupp.single_apply, h1]
|
||||
exact ite_congr (Eq.propIntro (fun a => id (Eq.symm a)) fun a => id (Eq.symm a))
|
||||
(congrFun rfl) (congrFun rfl)
|
||||
|
||||
/-!
|
||||
|
||||
|
@ -193,6 +208,72 @@ lemma contrMatrix_basis_expand : {Lorentz.contrMetric | μ ν}ᵀ.tensor =
|
|||
simp only [Fin.isValue, Lorentz.complexContrBasisFin4, Basis.coe_reindex, Function.comp_apply]
|
||||
rfl
|
||||
|
||||
lemma leftMetric_expand : {Fermion.leftMetric | α β}ᵀ.tensor =
|
||||
- basisVector ![Color.upL, Color.upL] (fun | 0 => 0 | 1 => 1)
|
||||
+ basisVector ![Color.upL, Color.upL] (fun | 0 => 1 | 1 => 0) := by
|
||||
simp only [Nat.succ_eq_add_one, Nat.reduceAdd, constTwoNode_tensor,
|
||||
Action.instMonoidalCategory_tensorObj_V, Action.instMonoidalCategory_tensorUnit_V, Fin.isValue]
|
||||
erw [Fermion.leftMetric_apply_one, Fermion.leftMetricVal_expand_tmul]
|
||||
simp only [Fin.isValue, map_add, map_neg]
|
||||
congr 1
|
||||
congr 1
|
||||
all_goals
|
||||
erw [pairIsoSep_tmul, basisVector]
|
||||
apply congrArg
|
||||
funext i
|
||||
fin_cases i
|
||||
· rfl
|
||||
· rfl
|
||||
|
||||
lemma altLeftMetric_expand : {Fermion.altLeftMetric | α β}ᵀ.tensor =
|
||||
basisVector ![Color.downL, Color.downL] (fun | 0 => 0 | 1 => 1)
|
||||
- basisVector ![Color.downL, Color.downL] (fun | 0 => 1 | 1 => 0) := by
|
||||
simp only [Nat.succ_eq_add_one, Nat.reduceAdd, constTwoNode_tensor,
|
||||
Action.instMonoidalCategory_tensorObj_V, Action.instMonoidalCategory_tensorUnit_V, Fin.isValue]
|
||||
erw [Fermion.altLeftMetric_apply_one, Fermion.altLeftMetricVal_expand_tmul]
|
||||
simp only [Fin.isValue, map_sub]
|
||||
congr 1
|
||||
all_goals
|
||||
erw [pairIsoSep_tmul, basisVector]
|
||||
apply congrArg
|
||||
funext i
|
||||
fin_cases i
|
||||
· rfl
|
||||
· rfl
|
||||
|
||||
lemma rightMetric_expand : {Fermion.rightMetric | α β}ᵀ.tensor =
|
||||
- basisVector ![Color.upR, Color.upR] (fun | 0 => 0 | 1 => 1)
|
||||
+ basisVector ![Color.upR, Color.upR] (fun | 0 => 1 | 1 => 0) := by
|
||||
simp only [Nat.succ_eq_add_one, Nat.reduceAdd, constTwoNode_tensor,
|
||||
Action.instMonoidalCategory_tensorObj_V, Action.instMonoidalCategory_tensorUnit_V, Fin.isValue]
|
||||
erw [Fermion.rightMetric_apply_one, Fermion.rightMetricVal_expand_tmul]
|
||||
simp only [Fin.isValue, map_add, map_neg]
|
||||
congr 1
|
||||
congr 1
|
||||
all_goals
|
||||
erw [pairIsoSep_tmul, basisVector]
|
||||
apply congrArg
|
||||
funext i
|
||||
fin_cases i
|
||||
· rfl
|
||||
· rfl
|
||||
|
||||
lemma altRightMetric_expand : {Fermion.altRightMetric | α β}ᵀ.tensor =
|
||||
basisVector ![Color.downR, Color.downR] (fun | 0 => 0 | 1 => 1)
|
||||
- basisVector ![Color.downR, Color.downR] (fun | 0 => 1 | 1 => 0) := by
|
||||
simp only [Nat.succ_eq_add_one, Nat.reduceAdd, constTwoNode_tensor,
|
||||
Action.instMonoidalCategory_tensorObj_V, Action.instMonoidalCategory_tensorUnit_V, Fin.isValue]
|
||||
erw [Fermion.altRightMetric_apply_one, Fermion.altRightMetricVal_expand_tmul]
|
||||
simp only [Fin.isValue, map_sub]
|
||||
congr 1
|
||||
all_goals
|
||||
erw [pairIsoSep_tmul, basisVector]
|
||||
apply congrArg
|
||||
funext i
|
||||
fin_cases i
|
||||
· rfl
|
||||
· rfl
|
||||
|
||||
/-- The expansion of the Pauli matrices `σ^μ^a^{dot a}` in terms of basis vectors. -/
|
||||
lemma pauliMatrix_basis_expand : {PauliMatrix.asConsTensor | μ α β}ᵀ.tensor =
|
||||
basisVector ![Color.up, Color.upL, Color.upR] (fun | 0 => 0 | 1 => 0 | 2 => 0)
|
||||
|
|
|
@ -218,6 +218,16 @@ def specialTypes : List (String × (Term → Term)) := [
|
|||
mkIdent ``Fermion.complexLorentzTensor,
|
||||
mkIdent ``Fermion.Color.upL,
|
||||
mkIdent ``Fermion.Color.upL, T]),
|
||||
("𝟙_ (Rep ℂ SL(2, ℂ)) ⟶ Fermion.altLeftHanded ⊗ Fermion.altLeftHanded", fun T =>
|
||||
Syntax.mkApp (mkIdent ``TensorTree.constTwoNodeE) #[
|
||||
mkIdent ``Fermion.complexLorentzTensor,
|
||||
mkIdent ``Fermion.Color.downL,
|
||||
mkIdent ``Fermion.Color.downL, T]),
|
||||
("𝟙_ (Rep ℂ SL(2, ℂ)) ⟶ Fermion.altRightHanded ⊗ Fermion.altRightHanded", fun T =>
|
||||
Syntax.mkApp (mkIdent ``TensorTree.constTwoNodeE) #[
|
||||
mkIdent ``Fermion.complexLorentzTensor,
|
||||
mkIdent ``Fermion.Color.downR,
|
||||
mkIdent ``Fermion.Color.downR, T]),
|
||||
("𝟙_ (Rep ℂ SL(2, ℂ)) ⟶ Fermion.rightHanded ⊗ Fermion.rightHanded", fun T =>
|
||||
Syntax.mkApp (mkIdent ``TensorTree.constTwoNodeE) #[
|
||||
mkIdent ``Fermion.complexLorentzTensor,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue