refactor: LInt

This commit is contained in:
jstoobysmith 2024-11-09 18:12:05 +00:00
parent e963be5ef8
commit d058f41689
11 changed files with 38 additions and 50 deletions

View file

@ -138,7 +138,7 @@ lemma inclCongrRealLorentz_ρ (M : SL(2, )) (v : ContrMod 3) :
change _ = ContrMod.toFin1d ((SL2C.toLorentzGroup M) *ᵥ v) change _ = ContrMod.toFin1d ((SL2C.toLorentzGroup M) *ᵥ v)
simp only [SL2C.toLorentzGroup_apply_coe, ContrMod.mulVec_toFin1d] simp only [SL2C.toLorentzGroup_apply_coe, ContrMod.mulVec_toFin1d]
/-! TODO: Rename.-/ /-! TODO: Rename. -/
lemma SL2CRep_ρ_basis (M : SL(2, )) (i : Fin 1 ⊕ Fin 3) : lemma SL2CRep_ρ_basis (M : SL(2, )) (i : Fin 1 ⊕ Fin 3) :
(complexContr.ρ M) (complexContrBasis i) = (complexContr.ρ M) (complexContrBasis i) =
∑ j, (SL2C.toLorentzGroup M).1 j i • ∑ j, (SL2C.toLorentzGroup M).1 j i •
@ -150,6 +150,6 @@ lemma SL2CRep_ρ_basis (M : SL(2, )) (i : Fin 1 ⊕ Fin 3) :
simp only [LinearMap.map_smulₛₗ, ofRealHom_eq_coe, coe_smul] simp only [LinearMap.map_smulₛₗ, ofRealHom_eq_coe, coe_smul]
rw [complexContrBasis_of_real] rw [complexContrBasis_of_real]
/-! TODO: Include relation to real Lorentz vectors.-/ /-! TODO: Include relation to real Lorentz vectors. -/
end Lorentz end Lorentz
end end

View file

@ -85,7 +85,6 @@ lemma dual_mem (h : Λ ∈ LorentzGroup d) : dual Λ ∈ LorentzGroup d := by
rw [mem_iff_dual_mul_self, dual_dual] rw [mem_iff_dual_mul_self, dual_dual]
exact mem_iff_self_mul_dual.mp h exact mem_iff_self_mul_dual.mp h
end LorentzGroup end LorentzGroup
/-! /-!
@ -187,7 +186,7 @@ lemma comm_minkowskiMatrix : Λ.1 * minkowskiMatrix = minkowskiMatrix * (transpo
rw [h1] rw [h1]
simp simp
lemma minkowskiMatrix_comm : minkowskiMatrix * Λ.1 = (transpose Λ⁻¹).1 * minkowskiMatrix := by lemma minkowskiMatrix_comm : minkowskiMatrix * Λ.1 = (transpose Λ⁻¹).1 * minkowskiMatrix := by
conv_rhs => rw [← @transpose_mul_minkowskiMatrix_mul_self d Λ] conv_rhs => rw [← @transpose_mul_minkowskiMatrix_mul_self d Λ]
rw [← transpose_inv, coe_inv, transpose_val] rw [← transpose_inv, coe_inv, transpose_val]
rw [← mul_assoc, ← mul_assoc] rw [← mul_assoc, ← mul_assoc]

View file

@ -39,7 +39,7 @@ def genBoostAux₁ (u v : FuturePointing d) : ContrMod d →ₗ[] ContrMod d
map_add' x y := by map_add' x y := by
simp [map_add, LinearMap.add_apply, tmul_add, add_tmul, mul_add, add_smul] simp [map_add, LinearMap.add_apply, tmul_add, add_tmul, mul_add, add_smul]
map_smul' c x := by map_smul' c x := by
simp only [ Action.instMonoidalCategory_tensorObj_V, simp only [Action.instMonoidalCategory_tensorObj_V,
Action.instMonoidalCategory_tensorUnit_V, CategoryTheory.Equivalence.symm_inverse, Action.instMonoidalCategory_tensorUnit_V, CategoryTheory.Equivalence.symm_inverse,
Action.functorCategoryEquivalence_functor, Action.FunctorCategoryEquivalence.functor_obj_obj, Action.functorCategoryEquivalence_functor, Action.FunctorCategoryEquivalence.functor_obj_obj,
smul_tmul, tmul_smul, map_smul, smul_eq_mul, RingHom.id_apply] smul_tmul, tmul_smul, map_smul, smul_eq_mul, RingHom.id_apply]
@ -74,7 +74,7 @@ lemma genBoostAux₂_self (u : FuturePointing d) : genBoostAux₂ u u = - genBoo
congr 1 congr 1
rw [u.1.2] rw [u.1.2]
conv => lhs; lhs; rhs; rhs; change 1 conv => lhs; lhs; rhs; rhs; change 1
rw [show 1 + (1 : ) = (2 : ) by ring] rw [show 1 + (1 : ) = (2 : ) by ring]
simp only [isUnit_iff_ne_zero, ne_eq, OfNat.ofNat_ne_zero, not_false_eq_true, simp only [isUnit_iff_ne_zero, ne_eq, OfNat.ofNat_ne_zero, not_false_eq_true,
IsUnit.div_mul_cancel] IsUnit.div_mul_cancel]
rw [← (two_smul u.val.val)] rw [← (two_smul u.val.val)]
@ -137,15 +137,15 @@ lemma toMatrix_mulVec (u v : FuturePointing d) (x : Contr d) :
open minkowskiMatrix in open minkowskiMatrix in
@[simp] @[simp]
lemma toMatrix_apply (u v : FuturePointing d) (μ ν : Fin 1 ⊕ Fin d) : lemma toMatrix_apply (u v : FuturePointing d) (μ ν : Fin 1 ⊕ Fin d) :
(toMatrix u v) μ ν = η μ μ * (toField d ⟪ContrMod.stdBasis μ, ContrMod.stdBasis ν⟫ₘ + 2 * (toMatrix u v) μ ν = η μ μ * (⟪ContrMod.stdBasis μ, ContrMod.stdBasis ν⟫ₘ + 2 *
toField d ⟪ContrMod.stdBasis ν, u.val.val⟫ₘ * toField d ⟪ContrMod.stdBasis μ, v.val.val⟫ₘ ⟪ContrMod.stdBasis ν, u.val.val⟫ₘ * ⟪ContrMod.stdBasis μ, v.val.val⟫ₘ
- toField d ⟪ContrMod.stdBasis μ, u.val.val + v.val.val⟫ₘ * - ⟪ContrMod.stdBasis μ, u.val.val + v.val.val⟫ₘ *
toField d ⟪ContrMod.stdBasis ν, u.val.val + v.val.val⟫ₘ / ⟪ContrMod.stdBasis ν, u.val.val + v.val.val⟫ₘ /
(1 + toField d ⟪u.val.val, v.val.val⟫ₘ)) := by (1 + ⟪u.val.val, v.val.val⟫ₘ)) := by
rw [contrContrContractField.matrix_apply_stdBasis (Λ := toMatrix u v) μ ν, toMatrix_mulVec] rw [contrContrContractField.matrix_apply_stdBasis (Λ := toMatrix u v) μ ν, toMatrix_mulVec]
simp only [genBoost, genBoostAux₁, genBoostAux₂, map_add, smul_add, neg_smul, LinearMap.add_apply, simp only [genBoost, genBoostAux₁, genBoostAux₂, smul_add, neg_smul, LinearMap.add_apply,
LinearMap.id_apply, LinearMap.coe_mk, AddHom.coe_mk, contrContrContractField.basis_left, map_smul, smul_eq_mul, map_neg, LinearMap.id_apply, LinearMap.coe_mk, AddHom.coe_mk, contrContrContractField.basis_left,
mul_eq_mul_left_iff, toField_apply] map_add, map_smul, map_neg, toField_apply, mul_eq_mul_left_iff]
ring_nf ring_nf
simp only [Pi.add_apply, Action.instMonoidalCategory_tensorObj_V, simp only [Pi.add_apply, Action.instMonoidalCategory_tensorObj_V,
Action.instMonoidalCategory_tensorUnit_V, CategoryTheory.Equivalence.symm_inverse, Action.instMonoidalCategory_tensorUnit_V, CategoryTheory.Equivalence.symm_inverse,
@ -186,9 +186,9 @@ lemma toMatrix_in_lorentzGroup (u v : FuturePointing d) : (toMatrix u v) ∈ Lor
rw [LorentzGroup.mem_iff_invariant] rw [LorentzGroup.mem_iff_invariant]
intro x y intro x y
rw [toMatrix_mulVec, toMatrix_mulVec] rw [toMatrix_mulVec, toMatrix_mulVec]
have h1 : (((1 + ⟪u.1.1, v.1.1⟫ₘ)) * (1 + ⟪u.1.1, v.1.1⟫ₘ)) • have h1 : (((1 + ⟪u.1.1, v.1.1⟫ₘ)) * (1 + ⟪u.1.1, v.1.1⟫ₘ)) •
(contrContrContractField ((genBoost u v) y ⊗ₜ[] (genBoost u v) x)) (contrContrContractField ((genBoost u v) y ⊗ₜ[] (genBoost u v) x))
= (((1 + ⟪u.1.1, v.1.1⟫ₘ)) * (1 + ⟪u.1.1, v.1.1⟫ₘ)) • ⟪y, x⟫ₘ := by = (((1 + ⟪u.1.1, v.1.1⟫ₘ)) * (1 + ⟪u.1.1, v.1.1⟫ₘ)) • ⟪y, x⟫ₘ := by
conv_lhs => conv_lhs =>
erw [← map_smul] erw [← map_smul]
rw [← smul_smul] rw [← smul_smul]
@ -200,7 +200,7 @@ lemma toMatrix_in_lorentzGroup (u v : FuturePointing d) : (toMatrix u v) ∈ Lor
contrContrContractField.symm u.1.1 x] contrContrContractField.symm u.1.1 x]
simp only [smul_eq_mul] simp only [smul_eq_mul]
ring ring
have hn (a : ) {b c : } (h : a ≠ 0) (hab : a * b = a * c ) : b = c := by have hn (a : ) {b c : } (h : a ≠ 0) (hab : a * b = a * c) : b = c := by
simp_all only [smul_eq_mul, ne_eq, mul_eq_mul_left_iff, or_false] simp_all only [smul_eq_mul, ne_eq, mul_eq_mul_left_iff, or_false]
refine hn _ ?_ h1 refine hn _ ?_ h1
simpa using (FuturePointing.one_add_metric_non_zero u v) simpa using (FuturePointing.one_add_metric_non_zero u v)

View file

@ -86,7 +86,7 @@ lemma orthchroMapReal_on_IsOrthochronous {Λ : LorentzGroup d} (h : IsOrthochron
lemma orthchroMapReal_on_not_IsOrthochronous {Λ : LorentzGroup d} (h : ¬ IsOrthochronous Λ) : lemma orthchroMapReal_on_not_IsOrthochronous {Λ : LorentzGroup d} (h : ¬ IsOrthochronous Λ) :
orthchroMapReal Λ = - 1 := by orthchroMapReal Λ = - 1 := by
rw [not_orthochronous_iff_le_neg_one] at h rw [not_orthochronous_iff_le_neg_one] at h
change stepFunction (_)= - 1 change stepFunction _ = - 1
rw [stepFunction, if_pos] rw [stepFunction, if_pos]
exact h exact h

View file

@ -10,7 +10,6 @@ import Mathlib.Algebra.Lie.Classical
# The Minkowski matrix # The Minkowski matrix
-/ -/
open Matrix open Matrix
@ -98,7 +97,6 @@ lemma mulVec_inr_i (v : (Fin 1 ⊕ Fin d) → ) (i : Fin d) :
simp only [mulVec, minkowskiMatrix, LieAlgebra.Orthogonal.indefiniteDiagonal, mulVec_diagonal] simp only [mulVec, minkowskiMatrix, LieAlgebra.Orthogonal.indefiniteDiagonal, mulVec_diagonal]
simp only [diagonal_dotProduct, Sum.elim_inr, neg_mul, one_mul] simp only [diagonal_dotProduct, Sum.elim_inr, neg_mul, one_mul]
variable (Λ Λ' : Matrix (Fin 1 ⊕ Fin d) (Fin 1 ⊕ Fin d) ) variable (Λ Λ' : Matrix (Fin 1 ⊕ Fin d) (Fin 1 ⊕ Fin d) )
/-- The dual of a matrix with respect to the Minkowski metric. -/ /-- The dual of a matrix with respect to the Minkowski metric. -/

View file

@ -19,7 +19,7 @@ open Complex
open Matrix open Matrix
/-- The zeroth Pauli-matrix as a `2 x 2` complex matrix. /-- The zeroth Pauli-matrix as a `2 x 2` complex matrix.
That is the matrix `!![1, 0; 0, 1]`. -/ That is the matrix `!![1, 0; 0, 1]`. -/
def σ0 : Matrix (Fin 2) (Fin 2) := !![1, 0; 0, 1] def σ0 : Matrix (Fin 2) (Fin 2) := !![1, 0; 0, 1]
/-- The first Pauli-matrix as a `2 x 2` complex matrix. /-- The first Pauli-matrix as a `2 x 2` complex matrix.

View file

@ -49,7 +49,7 @@ lemma continuous_contr {T : Type} [TopologicalSpace T] (f : T → Contr d)
exact continuous_induced_rng.mpr h exact continuous_induced_rng.mpr h
lemma contr_continuous {T : Type} [TopologicalSpace T] (f : Contr d → T) lemma contr_continuous {T : Type} [TopologicalSpace T] (f : Contr d → T)
(h : Continuous (f ∘ (@ContrMod.toFin1dEquiv d).symm)): Continuous f := by (h : Continuous (f ∘ (@ContrMod.toFin1dEquiv d).symm)) : Continuous f := by
let x := Equiv.toHomeomorphOfIsInducing (@ContrMod.toFin1dEquiv d).toEquiv let x := Equiv.toHomeomorphOfIsInducing (@ContrMod.toFin1dEquiv d).toEquiv
toFin1dEquiv_isInducing toFin1dEquiv_isInducing
rw [← Homeomorph.comp_continuous_iff' x.symm] rw [← Homeomorph.comp_continuous_iff' x.symm]

View file

@ -78,7 +78,7 @@ def coModContrModBi (d : ) : CoMod d →ₗ[] ContrMod d →ₗ[] w
def contrCoContract : Contr d ⊗ Co d ⟶ 𝟙_ (Rep (LorentzGroup d)) where def contrCoContract : Contr d ⊗ Co d ⟶ 𝟙_ (Rep (LorentzGroup d)) where
hom := TensorProduct.lift (contrModCoModBi d) hom := TensorProduct.lift (contrModCoModBi d)
comm M := TensorProduct.ext' fun ψ φ => by comm M := TensorProduct.ext' fun ψ φ => by
change (M.1 *ᵥ ψ.toFin1d) ⬝ᵥ ((LorentzGroup.transpose M⁻¹).1 *ᵥ φ.toFin1d) = _ change (M.1 *ᵥ ψ.toFin1d) ⬝ᵥ ((LorentzGroup.transpose M⁻¹).1 *ᵥ φ.toFin1d) = _
rw [dotProduct_mulVec, LorentzGroup.transpose_val, rw [dotProduct_mulVec, LorentzGroup.transpose_val,
vecMul_transpose, mulVec_mulVec, LorentzGroup.coe_inv, inv_mul_of_invertible M.1] vecMul_transpose, mulVec_mulVec, LorentzGroup.coe_inv, inv_mul_of_invertible M.1]
simp only [one_mulVec, CategoryTheory.Equivalence.symm_inverse, simp only [one_mulVec, CategoryTheory.Equivalence.symm_inverse,
@ -101,7 +101,7 @@ lemma contrCoContract_hom_tmul (ψ : Contr d) (φ : Co d) : ⟪ψ, φ⟫ₘ = ψ
def coContrContract : Co d ⊗ Contr d ⟶ 𝟙_ (Rep (LorentzGroup d)) where def coContrContract : Co d ⊗ Contr d ⟶ 𝟙_ (Rep (LorentzGroup d)) where
hom := TensorProduct.lift (coModContrModBi d) hom := TensorProduct.lift (coModContrModBi d)
comm M := TensorProduct.ext' fun ψ φ => by comm M := TensorProduct.ext' fun ψ φ => by
change ((LorentzGroup.transpose M⁻¹).1 *ᵥ ψ.toFin1d) ⬝ᵥ (M.1 *ᵥ φ.toFin1d) = _ change ((LorentzGroup.transpose M⁻¹).1 *ᵥ ψ.toFin1d) ⬝ᵥ (M.1 *ᵥ φ.toFin1d) = _
rw [dotProduct_mulVec, LorentzGroup.transpose_val, mulVec_transpose, vecMul_vecMul, rw [dotProduct_mulVec, LorentzGroup.transpose_val, mulVec_transpose, vecMul_vecMul,
LorentzGroup.coe_inv, inv_mul_of_invertible M.1] LorentzGroup.coe_inv, inv_mul_of_invertible M.1]
simp only [vecMul_one, CategoryTheory.Equivalence.symm_inverse, simp only [vecMul_one, CategoryTheory.Equivalence.symm_inverse,
@ -143,7 +143,7 @@ def contrContrContract : Contr d ⊗ Contr d ⟶ 𝟙_ (Rep (LorentzGroup d)
/-- The linear map from Contr d ⊗ Contr d to induced by the homomorphism /-- The linear map from Contr d ⊗ Contr d to induced by the homomorphism
`Contr.toCo` and the contraction `contrCoContract`. -/ `Contr.toCo` and the contraction `contrCoContract`. -/
def contrContrContractField : (Contr d).V ⊗[] (Contr d).V →ₗ[] := def contrContrContractField : (Contr d).V ⊗[] (Contr d).V →ₗ[] :=
contrContrContract.hom contrContrContract.hom
/-- Notation for `contrContrContractField` acting on a tmul. -/ /-- Notation for `contrContrContractField` acting on a tmul. -/
@ -200,7 +200,7 @@ lemma action_tmul (g : LorentzGroup d) : ⟪(Contr d).ρ g x, (Contr d).ρ g y
rfl rfl
lemma as_sum : ⟪x, y⟫ₘ = x.val (Sum.inl 0) * y.val (Sum.inl 0) - lemma as_sum : ⟪x, y⟫ₘ = x.val (Sum.inl 0) * y.val (Sum.inl 0) -
∑ i, x.val (Sum.inr i) * y.val (Sum.inr i) := by ∑ i, x.val (Sum.inr i) * y.val (Sum.inr i) := by
rw [contrContrContract_hom_tmul] rw [contrContrContract_hom_tmul]
simp only [dotProduct, minkowskiMatrix, LieAlgebra.Orthogonal.indefiniteDiagonal, mulVec_diagonal, simp only [dotProduct, minkowskiMatrix, LieAlgebra.Orthogonal.indefiniteDiagonal, mulVec_diagonal,
Fintype.sum_sum_type, Finset.univ_unique, Fin.default_eq_zero, Fin.isValue, Sum.elim_inl, Fintype.sum_sum_type, Finset.univ_unique, Fin.default_eq_zero, Fin.isValue, Sum.elim_inl,
@ -244,7 +244,7 @@ lemma dual_mulVec_right : ⟪x, dual Λ *ᵥ y⟫ₘ = ⟪Λ *ᵥ x, y⟫ₘ :=
lemma dual_mulVec_left : ⟪dual Λ *ᵥ x, y⟫ₘ = ⟪x, Λ *ᵥ y⟫ₘ := by lemma dual_mulVec_left : ⟪dual Λ *ᵥ x, y⟫ₘ = ⟪x, Λ *ᵥ y⟫ₘ := by
rw [symm, dual_mulVec_right, symm] rw [symm, dual_mulVec_right, symm]
lemma right_parity : ⟪x, (Contr d).ρ LorentzGroup.parity y⟫ₘ = ∑ i, x.val i * y.val i := by lemma right_parity : ⟪x, (Contr d).ρ LorentzGroup.parity y⟫ₘ = ∑ i, x.val i * y.val i := by
rw [as_sum] rw [as_sum]
simp only [Action.instMonoidalCategory_tensorUnit_V, Fin.isValue, Fintype.sum_sum_type, simp only [Action.instMonoidalCategory_tensorUnit_V, Fin.isValue, Fintype.sum_sum_type,
Finset.univ_unique, Fin.default_eq_zero, Finset.sum_singleton] Finset.univ_unique, Fin.default_eq_zero, Finset.sum_singleton]
@ -258,7 +258,7 @@ lemma right_parity : ⟪x, (Contr d).ρ LorentzGroup.parity y⟫ₘ = ∑ i, x.
exact mul_eq_mul_left_iff.mp rfl exact mul_eq_mul_left_iff.mp rfl
· congr · congr
funext i funext i
change - (x.val (Sum.inr i) * ((η *ᵥ y.toFin1d) (Sum.inr i))) = _ change - (x.val (Sum.inr i) * ((η *ᵥ y.toFin1d) (Sum.inr i))) = _
simp only [mulVec_inr_i, mul_neg, neg_neg, mul_eq_mul_left_iff] simp only [mulVec_inr_i, mul_neg, neg_neg, mul_eq_mul_left_iff]
exact mul_eq_mul_left_iff.mp rfl exact mul_eq_mul_left_iff.mp rfl
@ -338,7 +338,7 @@ lemma _root_.LorentzGroup.mem_iff_norm : Λ ∈ LorentzGroup d ↔
rw [ContrMod.mulVec_sub, tmul_sub, sub_tmul, sub_tmul, tmul_sub, sub_tmul, sub_tmul] at hn rw [ContrMod.mulVec_sub, tmul_sub, sub_tmul, sub_tmul, tmul_sub, sub_tmul, sub_tmul] at hn
simp only [map_add, LinearMap.add_apply, map_sub, LinearMap.sub_apply] at hp hn simp only [map_add, LinearMap.add_apply, map_sub, LinearMap.sub_apply] at hp hn
rw [symm (Λ *ᵥ y) (Λ *ᵥ x), symm y x] at hp hn rw [symm (Λ *ᵥ y) (Λ *ᵥ x), symm y x] at hp hn
let e : 𝟙_ (Rep ↑(LorentzGroup d)) ≃ₗ[] := let e : 𝟙_ (Rep ↑(LorentzGroup d)) ≃ₗ[] :=
LinearEquiv.refl (CoeSort.coe (𝟙_ (Rep ↑(LorentzGroup d)))) LinearEquiv.refl (CoeSort.coe (𝟙_ (Rep ↑(LorentzGroup d))))
apply e.injective apply e.injective
have hp' := e.injective.eq_iff.mpr hp have hp' := e.injective.eq_iff.mpr hp
@ -346,7 +346,7 @@ lemma _root_.LorentzGroup.mem_iff_norm : Λ ∈ LorentzGroup d ↔
simp only [Action.instMonoidalCategory_tensorUnit_V, Action.instMonoidalCategory_tensorObj_V, simp only [Action.instMonoidalCategory_tensorUnit_V, Action.instMonoidalCategory_tensorObj_V,
Equivalence.symm_inverse, Action.functorCategoryEquivalence_functor, Equivalence.symm_inverse, Action.functorCategoryEquivalence_functor,
Action.FunctorCategoryEquivalence.functor_obj_obj, map_add, map_sub] at hp' hn' Action.FunctorCategoryEquivalence.functor_obj_obj, map_add, map_sub] at hp' hn'
linear_combination (norm := ring_nf) (1 / 4) * hp' + (-1/ 4) * hn' linear_combination (norm := ring_nf) (1 / 4) * hp' + (-1/ 4) * hn'
rw [symm (Λ *ᵥ y) (Λ *ᵥ x), symm y x] rw [symm (Λ *ᵥ y) (Λ *ᵥ x), symm y x]
simp only [Action.instMonoidalCategory_tensorUnit_V, Action.instMonoidalCategory_tensorObj_V, simp only [Action.instMonoidalCategory_tensorUnit_V, Action.instMonoidalCategory_tensorObj_V,
Equivalence.symm_inverse, Action.functorCategoryEquivalence_functor, Equivalence.symm_inverse, Action.functorCategoryEquivalence_functor,
@ -373,19 +373,17 @@ lemma le_inl_sq (v : Contr d) : ⟪v, v⟫ₘ ≤ v.val (Sum.inl 0) ^ 2 := by
refine Fintype.sum_nonneg ?hf refine Fintype.sum_nonneg ?hf
exact fun i => pow_two_nonneg (v.val (Sum.inr i)) exact fun i => pow_two_nonneg (v.val (Sum.inr i))
lemma ge_abs_inner_product (v w : Contr d) : v.val (Sum.inl 0) * w.val (Sum.inl 0) -
lemma ge_abs_inner_product (v w : Contr d) : v.val (Sum.inl 0) * w.val (Sum.inl 0) -
‖⟪v.toSpace, w.toSpace⟫_‖ ≤ ⟪v, w⟫ₘ := by ‖⟪v.toSpace, w.toSpace⟫_‖ ≤ ⟪v, w⟫ₘ := by
rw [as_sum_toSpace, sub_le_sub_iff_left] rw [as_sum_toSpace, sub_le_sub_iff_left]
exact Real.le_norm_self ⟪v.toSpace, w.toSpace⟫_ exact Real.le_norm_self ⟪v.toSpace, w.toSpace⟫_
lemma ge_sub_norm (v w : Contr d) : v.val (Sum.inl 0) * w.val (Sum.inl 0) - lemma ge_sub_norm (v w : Contr d) : v.val (Sum.inl 0) * w.val (Sum.inl 0) -
‖v.toSpace‖ * ‖w.toSpace‖ ≤ ⟪v, w⟫ₘ := by ‖v.toSpace‖ * ‖w.toSpace‖ ≤ ⟪v, w⟫ₘ := by
apply le_trans _ (ge_abs_inner_product v w) apply le_trans _ (ge_abs_inner_product v w)
rw [sub_le_sub_iff_left] rw [sub_le_sub_iff_left]
exact norm_inner_le_norm v.toSpace w.toSpace exact norm_inner_le_norm v.toSpace w.toSpace
/-! /-!
# The Minkowski metric and the standard basis # The Minkowski metric and the standard basis
@ -413,7 +411,6 @@ lemma on_basis_mulVec (μ ν : Fin 1 ⊕ Fin d) :
rw [basis_left, ContrMod.mulVec_toFin1d] rw [basis_left, ContrMod.mulVec_toFin1d]
simp [basis_left, mulVec, dotProduct, ContrMod.stdBasis_apply, ContrMod.toFin1d_eq_val] simp [basis_left, mulVec, dotProduct, ContrMod.stdBasis_apply, ContrMod.toFin1d_eq_val]
lemma on_basis (μ ν : Fin 1 ⊕ Fin d) : ⟪ContrMod.stdBasis μ, ContrMod.stdBasis ν⟫ₘ = η μ ν := by lemma on_basis (μ ν : Fin 1 ⊕ Fin d) : ⟪ContrMod.stdBasis μ, ContrMod.stdBasis ν⟫ₘ = η μ ν := by
trans ⟪ContrMod.stdBasis μ, 1 *ᵥ ContrMod.stdBasis ν⟫ₘ trans ⟪ContrMod.stdBasis μ, 1 *ᵥ ContrMod.stdBasis ν⟫ₘ
· rw [ContrMod.one_mulVec] · rw [ContrMod.one_mulVec]
@ -424,10 +421,9 @@ lemma on_basis (μ ν : Fin 1 ⊕ Fin d) : ⟪ContrMod.stdBasis μ, ContrMod.std
· simp only [Action.instMonoidalCategory_tensorUnit_V, ne_eq, h, not_false_eq_true, one_apply_ne, · simp only [Action.instMonoidalCategory_tensorUnit_V, ne_eq, h, not_false_eq_true, one_apply_ne,
mul_zero, off_diag_zero] mul_zero, off_diag_zero]
lemma matrix_apply_stdBasis (ν μ : Fin 1 ⊕ Fin d) : lemma matrix_apply_stdBasis (ν μ : Fin 1 ⊕ Fin d) :
Λ ν μ = η ν ν * ⟪ ContrMod.stdBasis ν, Λ *ᵥ ContrMod.stdBasis μ⟫ₘ := by Λ ν μ = η ν ν * ⟪ ContrMod.stdBasis ν, Λ *ᵥ ContrMod.stdBasis μ⟫ₘ := by
rw [on_basis_mulVec, ← mul_assoc] rw [on_basis_mulVec, ← mul_assoc]
simp [η_apply_mul_η_apply_diag ν] simp [η_apply_mul_η_apply_diag ν]
/-! /-!
@ -437,7 +433,7 @@ lemma matrix_apply_stdBasis (ν μ : Fin 1 ⊕ Fin d) :
-/ -/
lemma same_eq_det_toSelfAdjoint (x : ContrMod 3) : lemma same_eq_det_toSelfAdjoint (x : ContrMod 3) :
⟪x, x⟫ₘ = det (ContrMod.toSelfAdjoint x).1 := by ⟪x, x⟫ₘ = det (ContrMod.toSelfAdjoint x).1 := by
rw [ContrMod.toSelfAdjoint_apply_coe] rw [ContrMod.toSelfAdjoint_apply_coe]
simp only [Fin.isValue, as_sum_toSpace, simp only [Fin.isValue, as_sum_toSpace,
PiLp.inner_apply, Function.comp_apply, RCLike.inner_apply, conj_trivial, Fin.sum_univ_three, PiLp.inner_apply, Function.comp_apply, RCLike.inner_apply, conj_trivial, Fin.sum_univ_three,

View file

@ -86,7 +86,6 @@ lemma toFin1d_eq_val (ψ : ContrMod d) : ψ.toFin1d = ψ.val := by rfl
@[simps!] @[simps!]
def stdBasis : Basis (Fin 1 ⊕ Fin d) (ContrMod d) := Basis.ofEquivFun toFin1dEquiv def stdBasis : Basis (Fin 1 ⊕ Fin d) (ContrMod d) := Basis.ofEquivFun toFin1dEquiv
@[simp] @[simp]
lemma stdBasis_toFin1dEquiv_apply_same (μ : Fin 1 ⊕ Fin d) : lemma stdBasis_toFin1dEquiv_apply_same (μ : Fin 1 ⊕ Fin d) :
toFin1dEquiv (stdBasis μ) μ = 1 := by toFin1dEquiv (stdBasis μ) μ = 1 := by
@ -121,7 +120,7 @@ lemma stdBasis_apply (μ ν : Fin 1 ⊕ Fin d) : (stdBasis μ).val ν = if μ =
/-- Decomposition of a contrvariant Lorentz vector into the standard basis. -/ /-- Decomposition of a contrvariant Lorentz vector into the standard basis. -/
lemma stdBasis_decomp (v : ContrMod d) : v = ∑ i, v.toFin1d i • stdBasis i := by lemma stdBasis_decomp (v : ContrMod d) : v = ∑ i, v.toFin1d i • stdBasis i := by
apply toFin1dEquiv.injective apply toFin1dEquiv.injective
simp only [map_sum, _root_.map_smul] simp only [map_sum, _root_.map_smul]
funext μ funext μ
rw [Fintype.sum_apply μ fun c => toFin1dEquiv v c • toFin1dEquiv (stdBasis c)] rw [Fintype.sum_apply μ fun c => toFin1dEquiv v c • toFin1dEquiv (stdBasis c)]
change _ = ∑ x : Fin 1 ⊕ Fin d, toFin1dEquiv v x • (toFin1dEquiv (stdBasis x) μ) change _ = ∑ x : Fin 1 ⊕ Fin d, toFin1dEquiv v x • (toFin1dEquiv (stdBasis x) μ)
@ -189,7 +188,6 @@ def toSpace (v : ContrMod d) : EuclideanSpace (Fin d) := v.val ∘ Sum.inr
-/ -/
/-- The representation of the Lorentz group acting on `ContrModule d`. -/ /-- The representation of the Lorentz group acting on `ContrModule d`. -/
def rep : Representation (LorentzGroup d) (ContrMod d) where def rep : Representation (LorentzGroup d) (ContrMod d) where
toFun g := Matrix.toLinAlgEquiv stdBasis g toFun g := Matrix.toLinAlgEquiv stdBasis g
@ -237,7 +235,6 @@ lemma toSelfAdjoint_apply_coe (x : ContrMod 3) : (toSelfAdjoint x).1 =
rw [toSelfAdjoint_apply] rw [toSelfAdjoint_apply]
rfl rfl
lemma toSelfAdjoint_stdBasis (i : Fin 1 ⊕ Fin 3) : lemma toSelfAdjoint_stdBasis (i : Fin 1 ⊕ Fin 3) :
toSelfAdjoint (stdBasis i) = PauliMatrix.σSAL i := by toSelfAdjoint (stdBasis i) = PauliMatrix.σSAL i := by
rw [toSelfAdjoint_apply] rw [toSelfAdjoint_apply]
@ -352,11 +349,10 @@ lemma stdBasis_apply (μ ν : Fin 1 ⊕ Fin d) : (stdBasis μ).val ν = if μ =
refine ite_congr ?h₁ (congrFun rfl) (congrFun rfl) refine ite_congr ?h₁ (congrFun rfl) (congrFun rfl)
exact Eq.propIntro (fun a => id (Eq.symm a)) fun a => id (Eq.symm a) exact Eq.propIntro (fun a => id (Eq.symm a)) fun a => id (Eq.symm a)
/-- Decomposition of a covariant Lorentz vector into the standard basis. -/ /-- Decomposition of a covariant Lorentz vector into the standard basis. -/
lemma stdBasis_decomp (v : CoMod d) : v = ∑ i, v.toFin1d i • stdBasis i := by lemma stdBasis_decomp (v : CoMod d) : v = ∑ i, v.toFin1d i • stdBasis i := by
apply toFin1dEquiv.injective apply toFin1dEquiv.injective
simp only [map_sum, _root_.map_smul] simp only [map_sum, _root_.map_smul]
funext μ funext μ
rw [Fintype.sum_apply μ fun c => toFin1dEquiv v c • toFin1dEquiv (stdBasis c)] rw [Fintype.sum_apply μ fun c => toFin1dEquiv v c • toFin1dEquiv (stdBasis c)]
change _ = ∑ x : Fin 1 ⊕ Fin d, toFin1dEquiv v x • (toFin1dEquiv (stdBasis x) μ) change _ = ∑ x : Fin 1 ⊕ Fin d, toFin1dEquiv v x • (toFin1dEquiv (stdBasis x) μ)

View file

@ -103,8 +103,8 @@ lemma toMatrix_apply_contrMod (M : SL(2, )) (v : ContrMod 3) :
rw [LinearEquiv.apply_symm_apply] rw [LinearEquiv.apply_symm_apply]
simp only [ContrMod.toSelfAdjoint, LinearEquiv.trans_symm, LinearEquiv.symm_symm, simp only [ContrMod.toSelfAdjoint, LinearEquiv.trans_symm, LinearEquiv.symm_symm,
LinearEquiv.trans_apply] LinearEquiv.trans_apply]
change ContrMod.toFin1dEquiv.symm (( change ContrMod.toFin1dEquiv.symm
((LinearMap.toMatrix PauliMatrix.σSAL PauliMatrix.σSAL) (toLinearMapSelfAdjointMatrix M))) ((((LinearMap.toMatrix PauliMatrix.σSAL PauliMatrix.σSAL) (toLinearMapSelfAdjointMatrix M)))
*ᵥ (((Finsupp.linearEquivFunOnFinite (Fin 1 ⊕ Fin 3)) (PauliMatrix.σSAL.repr a)))) = _ *ᵥ (((Finsupp.linearEquivFunOnFinite (Fin 1 ⊕ Fin 3)) (PauliMatrix.σSAL.repr a)))) = _
apply congrArg apply congrArg
erw [LinearMap.toMatrix_mulVec_repr] erw [LinearMap.toMatrix_mulVec_repr]
@ -131,7 +131,6 @@ def toLorentzGroup : SL(2, ) →* LorentzGroup 3 where
ext1 ext1
simp only [_root_.map_mul, lorentzGroupIsGroup_mul_coe] simp only [_root_.map_mul, lorentzGroupIsGroup_mul_coe]
lemma toLorentzGroup_eq_σSAL (M : SL(2, )) : lemma toLorentzGroup_eq_σSAL (M : SL(2, )) :
toLorentzGroup M = LinearMap.toMatrix toLorentzGroup M = LinearMap.toMatrix
PauliMatrix.σSAL PauliMatrix.σSAL (toLinearMapSelfAdjointMatrix M) := by PauliMatrix.σSAL PauliMatrix.σSAL (toLinearMapSelfAdjointMatrix M) := by

View file

@ -722,7 +722,7 @@ lemma altLeftAltRightToMatrix_ρ_symm_selfAdjoint (v : Matrix (Fin 2) (Fin 2)
(SL2C.toLinearMapSelfAdjointMatrix (M.transpose⁻¹) ⟨v, hv⟩) := by (SL2C.toLinearMapSelfAdjointMatrix (M.transpose⁻¹) ⟨v, hv⟩) := by
rw [altLeftAltRightToMatrix_ρ_symm] rw [altLeftAltRightToMatrix_ρ_symm]
apply congrArg apply congrArg
simp only [ MonoidHom.coe_mk, OneHom.coe_mk, simp only [MonoidHom.coe_mk, OneHom.coe_mk,
SL2C.toLinearMapSelfAdjointMatrix_apply_coe, SpecialLinearGroup.coe_inv, SL2C.toLinearMapSelfAdjointMatrix_apply_coe, SpecialLinearGroup.coe_inv,
SpecialLinearGroup.coe_transpose] SpecialLinearGroup.coe_transpose]
congr congr