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