Imports
/- Copyright (c) 2024 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 Physlib.Relativity.Tensors.RealTensor.Units.Pre

Metric for real Lorentz vectors

@[expose] public section

The metric ηᵃᵃ as an element of (ContrMod d ⊗[ℝ] ContrMod d).

def preContrMetricVal (d : ℕ := 3) : ContrMod d ⊗[ℝ] ContrMod d := contrContrToMatrixRe.symm ((@minkowskiMatrix d))
d:ℕ⊢ ∑ i, ∑ j, minkowskiMatrix i j • (contrBasis d) i ⊗ₜ[ℝ] (contrBasis d) j = ∑ i, minkowskiMatrix i i • (contrBasis d) i ⊗ₜ[ℝ] (contrBasis d) i All goals completed! 🐙

Expansion of preContrMetricVal into basis.

d:ℕ⊢ ∑ i, minkowskiMatrix i i • (contrBasis d) i ⊗ₜ[ℝ] (contrBasis d) i = (contrBasis d) (Sum.inl 0) ⊗ₜ[ℝ] (contrBasis d) (Sum.inl 0) - ∑ i, (contrBasis d) (Sum.inr i) ⊗ₜ[ℝ] (contrBasis d) (Sum.inr i) All goals completed! 🐙

The metric ηᵃᵃ as a morphism 𝟙_ (Rep ℝ (LorentzGroup d)) ⟶ ContrMod.rep ⊗ ContrMod.rep, making its invariance under the action of LorentzGroup d.

set_option backward.isDefEq.respectTransparency false indef preContrMetric (d : ℕ := 3) : (Representation.trivial ℝ (LorentzGroup d) ℝ).IntertwiningMap ((ContrMod.rep).tprod (ContrMod.rep)) where toFun := fun a => a • (preContrMetricVal d) map_add' := fun x y => add_smul x y _ map_smul' := fun m x => mul_smul m x _ isIntertwining' M := d:ℕM:↑(LorentzGroup d)⊢ { toFun := fun a => a • preContrMetricVal d, map_add' := ⋯, map_smul' := ⋯ } ∘ₗ (Representation.trivial ℝ ↑(LorentzGroup d) ℝ) M = (ContrMod.rep.tprod ContrMod.rep) M ∘ₗ { toFun := fun a => a • preContrMetricVal d, map_add' := ⋯, map_smul' := ⋯ } d:ℕM:↑(LorentzGroup d)x:ℝ⊢ ({ toFun := fun a => a • preContrMetricVal d, map_add' := ⋯, map_smul' := ⋯ } ∘ₗ (Representation.trivial ℝ ↑(LorentzGroup d) ℝ) M) x = ((ContrMod.rep.tprod ContrMod.rep) M ∘ₗ { toFun := fun a => a • preContrMetricVal d, map_add' := ⋯, map_smul' := ⋯ }) x d:ℕM:↑(LorentzGroup d)x:ℝ⊢ { toFun := fun a => a • preContrMetricVal d, map_add' := ⋯, map_smul' := ⋯ } (((Representation.trivial ℝ ↑(LorentzGroup d) ℝ) M) x) = ((ContrMod.rep.tprod ContrMod.rep) M) ({ toFun := fun a => a • preContrMetricVal d, map_add' := ⋯, map_smul' := ⋯ } x) d:ℕM:↑(LorentzGroup d)x:ℝ⊢ x • preContrMetricVal d = (TensorProduct.map (ContrMod.rep M) (ContrMod.rep M)) (x • preContrMetricVal d) d:ℕM:↑(LorentzGroup d)x:ℝ⊢ x • preContrMetricVal d = x • (TensorProduct.map (ContrMod.rep M) (ContrMod.rep M)) (preContrMetricVal d) d:ℕM:↑(LorentzGroup d)x:ℝ⊢ preContrMetricVal d = (TensorProduct.map (ContrMod.rep M) (ContrMod.rep M)) (preContrMetricVal d) d:ℕM:↑(LorentzGroup d)x:ℝ⊢ contrContrToMatrixRe.symm minkowskiMatrix = (TensorProduct.map (ContrMod.rep M) (ContrMod.rep M)) (contrContrToMatrixRe.symm minkowskiMatrix) conv_rhs => d:ℕM:↑(LorentzGroup d)x:ℝ| contrContrToMatrixRe.symm (↑M * minkowskiMatrix * (↑M)ᵀ) d:ℕM:↑(LorentzGroup d)x:ℝ⊢ minkowskiMatrix = ↑M * minkowskiMatrix * (↑M)ᵀ All goals completed! 🐙
lemma preContrMetric_apply_one {d : ℕ} : (preContrMetric d) (1 : ℝ) = preContrMetricVal d := one_smul ℝ _

The metric ηᵢᵢ as an element of (CoMod d ⊗[ℝ] CoMod d).

def preCoMetricVal (d : ℕ := 3) : CoMod d ⊗[ℝ] CoMod d := coCoToMatrixRe.symm ((@minkowskiMatrix d))
d:ℕ⊢ ∑ i, ∑ j, minkowskiMatrix i j • (coBasis d) i ⊗ₜ[ℝ] (coBasis d) j = ∑ i, minkowskiMatrix i i • (coBasis d) i ⊗ₜ[ℝ] (coBasis d) i All goals completed! 🐙

Expansion of preContrMetricVal into basis.

d:ℕ⊢ ∑ i, minkowskiMatrix i i • (coBasis d) i ⊗ₜ[ℝ] (coBasis d) i = (coBasis d) (Sum.inl 0) ⊗ₜ[ℝ] (coBasis d) (Sum.inl 0) - ∑ i, (coBasis d) (Sum.inr i) ⊗ₜ[ℝ] (coBasis d) (Sum.inr i) All goals completed! 🐙

The metric ηᵢᵢ as a morphism 𝟙_ (Rep ℂ (LorentzGroup d))) ⟶ CoMod.rep ⊗ CoMod.rep, making its invariance under the action of LorentzGroup d.

set_option backward.isDefEq.respectTransparency false inAll goals completed! 🐙
lemma preCoMetric_apply_one {d : ℕ} : (preCoMetric d) (1 : ℝ) = preCoMetricVal d := one_smul ℝ _

Contraction of metrics