Imports
/- Copyright (c) 2026 Joseph Tooby-Smith. All rights reserved. Released under Apache 2.0 license as described in the file LICENSE. Authors: Joseph Tooby-Smith -/ module public import Mathlib.RepresentationTheory.Basic public import Physlib.Relativity.LorentzGroup.Basic public import Physlib.Relativity.Tensors.RealTensor.Vector.Basic

Representation of the Lorentz group on Lorentz vectors

In this module we define the representation of the Lorentz group on Lorentz vectors. This does not define the MulAction on Lorentz.Vector, which is induced by its tensor structure.

@[expose] public sectionattribute [-simp] Fintype.sum_sum_type

The representation of the Lorentz group on Lorentz vectors.

def rep {d : } : Representation (LorentzGroup d) (Vector d) where toFun Λ := Matrix.toLinAlgEquiv basis Λ map_one' := EmbeddingLike.map_eq_one_iff.mpr rfl map_mul' x y := d:x:(LorentzGroup d)y:(LorentzGroup d)(toLinAlgEquiv basis) (x * y) = (toLinAlgEquiv basis) x * (toLinAlgEquiv basis) y All goals completed! 🐙

Properties of the representation.

lemma rep_apply_eq_mulVec (d : ) (Λ : LorentzGroup d) (v : Vector d) : rep Λ v = Λ *ᵥ v := d:Λ:(LorentzGroup d)v:Vector d(rep Λ) v = Λ *ᵥ v All goals completed! 🐙lemma rep_apply_eq_sum (d : ) (Λ : LorentzGroup d) (v : Vector d) (k : Fin 1 Fin d) : rep Λ v k = j, Λ.1 k j v j := rfllemma rep_apply_basis {d} (μ : Fin 1 Fin d) (Λ : LorentzGroup d) : rep Λ (basis μ) = j, Λ.1 j μ basis j := d:μ:Fin 1 Fin dΛ:(LorentzGroup d)(rep Λ) (basis μ) = j, Λ j μ basis j d:μ:Fin 1 Fin dΛ:(LorentzGroup d)k:Fin 1 Fin d(rep Λ) (basis μ) k = (∑ j, Λ j μ basis j) k All goals completed! 🐙lemma rep_toMatrix (d : ) (Λ : LorentzGroup d) : LinearMap.toMatrix basis basis (rep Λ) = Λ.1 := (LinearEquiv.eq_symm_apply (LinearMap.toMatrix basis basis)).mp rfllemma rep_injective (d : ) (Λ : LorentzGroup d) : Function.Injective (rep Λ) := fun _ _ h => Matrix.mulVec_injective_of_isUnit (isUnit_of_invertible Λ.1) hlemma rep_surjective (d : ) (Λ : LorentzGroup d) : Function.Surjective (rep Λ) := fun v => Λ⁻¹ *ᵥ v, d:Λ:(LorentzGroup d)v:Vector d(rep Λ) ((↑Λ)⁻¹ *ᵥ v) = v All goals completed! 🐙lemma rep_bijective (d : ) (Λ : LorentzGroup d) : Function.Bijective (rep Λ) := rep_injective d Λ, rep_surjective d Λ@[fun_prop] lemma rep_contDiff (d : ) {n} (Λ : LorentzGroup d) : ContDiff n (rep Λ) := d:n:WithTop ℕ∞Λ:(LorentzGroup d)ContDiff n (rep Λ) d:n:WithTop ℕ∞Λ:(LorentzGroup d)μ:Fin 1 Fin dContDiff n fun x => (rep Λ) x μ d:n:WithTop ℕ∞Λ:(LorentzGroup d)μ:Fin 1 Fin dContDiff n fun x => x_1, Λ μ x_1 * x x_1 All goals completed! 🐙lemma rep_left_injective (d : ) : Function.Injective (rep (d := d)) := fun _ _ h => LorentzGroup.eq_of_mulVec_eq (LinearMap.congr_fun h)