feat: Basis properties of covariant Lorentz vec

This commit is contained in:
jstoobysmith 2024-11-08 08:11:21 +00:00
parent 87aae0f879
commit 4192af777e
2 changed files with 36 additions and 6 deletions

View file

@ -67,7 +67,6 @@ lemma val_add (ψ ψ' : ContrMod d) : (ψ + ψ').val = ψ.val + ψ'.val := rfl
lemma val_smul (r : ) (ψ : ContrMod d) : (r • ψ).val = r • ψ.val := rfl
/-- The linear equivalence between `ContrModule` and `(Fin 1 ⊕ Fin d → )`. -/
@[simps!]
def toFin1dEquiv : ContrMod d ≃ₗ[] (Fin 1 ⊕ Fin d → ) :=
Equiv.linearEquiv toFin1dFun
@ -117,7 +116,6 @@ instance : AddCommGroup (CoMod d) := Equiv.addCommGroup toFin1dFun
instance : Module (CoMod d) := Equiv.module toFin1dFun
/-- The linear equivalence between `CoModule` and `(Fin 1 ⊕ Fin d → )`. -/
@[simps!]
def toFin1dEquiv : CoMod d ≃ₗ[] (Fin 1 ⊕ Fin d → ) :=
Equiv.linearEquiv toFin1dFun
@ -129,6 +127,34 @@ abbrev toFin1d (ψ : CoMod d) := toFin1dEquiv ψ
@[simps!]
def stdBasis : Basis (Fin 1 ⊕ Fin d) (CoMod d) := Basis.ofEquivFun toFin1dEquiv
@[simp]
lemma stdBasis_toFin1dEquiv_apply_self (μ : Fin 1 ⊕ Fin d) :
toFin1dEquiv (stdBasis μ) μ = 1 := by
simp only [stdBasis, Basis.ofEquivFun, Basis.coe_ofRepr, LinearEquiv.trans_symm,
LinearEquiv.symm_symm, LinearEquiv.trans_apply, Finsupp.linearEquivFunOnFinite_single]
rw [@LinearEquiv.apply_symm_apply]
exact Pi.single_eq_same μ 1
lemma stdBasis_toFin1dEquiv_apply_ne {μ ν : Fin 1 ⊕ Fin d} (h : μ ≠ ν) :
toFin1dEquiv (stdBasis μ) ν = 0 := by
simp only [stdBasis, Basis.ofEquivFun, Basis.coe_ofRepr, LinearEquiv.trans_symm,
LinearEquiv.symm_symm, LinearEquiv.trans_apply, Finsupp.linearEquivFunOnFinite_single]
rw [@LinearEquiv.apply_symm_apply]
exact Pi.single_eq_of_ne' h 1
/-- Decomposition of a covariant Lorentz vector into the standard basis. -/
lemma stdBasis_decomp (v : CoMod d) : v = ∑ i, v.toFin1d i • stdBasis i := by
apply toFin1dEquiv.injective
simp only [map_sum, _root_.map_smul]
funext μ
rw [Fintype.sum_apply μ fun c => toFin1dEquiv v c • toFin1dEquiv (stdBasis c)]
change _ = ∑ x : Fin 1 ⊕ Fin d, toFin1dEquiv v x • (toFin1dEquiv (stdBasis x) μ)
rw [Finset.sum_eq_single_of_mem μ (Finset.mem_univ μ)]
· simp only [stdBasis_toFin1dEquiv_apply_self, smul_eq_mul, mul_one]
· intro b _ hbμ
rw [stdBasis_toFin1dEquiv_apply_ne hbμ]
simp only [smul_eq_mul, mul_zero]
/-- The representation of the Lorentz group acting on `CoModule d`. -/
def rep : Representation (LorentzGroup d) (CoMod d) where
toFun g := Matrix.toLinAlgEquiv stdBasis (LorentzGroup.transpose g⁻¹)

View file

@ -18,16 +18,20 @@ namespace PauliMatrix
open Complex
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]`. -/
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.
That is, the matrix `!![0, 1; 1, 0]`. -/
def σ1 : Matrix (Fin 2) (Fin 2) := !![0, 1; 1, 0]
/-- The second Pauli-matrix as a `2 x 2` complex matrix. -/
/-- The second Pauli-matrix as a `2 x 2` complex matrix.
That is, the matrix `!![0, -I; I, 0]`. -/
def σ2 : Matrix (Fin 2) (Fin 2) := !![0, -I; I, 0]
/-- The third Pauli-matrix as a `2 x 2` complex matrix. -/
/-- The third Pauli-matrix as a `2 x 2` complex matrix.
That is, the matrix `!![1, 0; 0, -1]`. -/
def σ3 : Matrix (Fin 2) (Fin 2) := !![1, 0; 0, -1]
@[simp]