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.Basic public import Physlib.Relativity.Tensors.MetricTensor

Metrics as real Lorentz tensors

@[expose] public section

Definitions.

The metric ηᵢᵢ as a complex Lorentz tensor.

abbrev coMetric (d : ℕ := 3) : ℝT[d, .down, .down] := (realLorentzTensor d).metricTensor .down

The metric ηⁱⁱ as a complex Lorentz tensor.

abbrev contrMetric (d : ℕ := 3) : ℝT[d, .up, .up] := (realLorentzTensor d).metricTensor .up

Notation

The metric ηᵢᵢ as a complex Lorentz tensors.

scoped[realLorentzTensor] notation "η'" => @coMetric

The metric ηⁱⁱ as a complex Lorentz tensors.

scoped[realLorentzTensor] notation "η" => @contrMetric

Equivalent forms of the metrics

lemma coMetric_eq_fromConstPair {d : ℕ} : η' d = fromConstPair (S := realLorentzTensor d) (c1 := .down) (c2 := .down) (Lorentz.preCoMetric d) := d:ℕ⊢ coMetric d = fromConstPair (Lorentz.preCoMetric d) All goals completed! 🐙lemma contrMetric_eq_fromConstPair {d : ℕ} : η d = fromConstPair (S := realLorentzTensor d) (c1 := .up) (c2 := .up) (Lorentz.preContrMetric d) := d:ℕ⊢ contrMetric d = fromConstPair (Lorentz.preContrMetric d) All goals completed! 🐙All goals completed! 🐙All goals completed! 🐙

The tensor coMetric is invariant under the action of LorentzGroup d.

@[simp] lemma actionT_coMetric {d : ℕ} (g : LorentzGroup d) : g • η' d = η' d:= d:ℕg:↑(LorentzGroup d)⊢ g • coMetric d = coMetric d erw [d:ℕg:↑(LorentzGroup d)⊢ metricTensor Color.down = coMetric dAll goals completed! 🐙

The tensor contrMetric is invariant under the action of LorentzGroup d.

@[simp] lemma actionT_contrMetric {d} (g : LorentzGroup d) : g • η d = η d := d:ℕg:↑(LorentzGroup d)⊢ g • contrMetric d = contrMetric d erw [d:ℕg:↑(LorentzGroup d)⊢ metricTensor Color.up = contrMetric dAll goals completed! 🐙
d:ℕb:ComponentIdx ![Color.down, Color.down]⊢ minkowskiMatrix (b 0) (b 0) * ((if b 0 = b 1 then 1 else 0) * if b 0 = b 0 then 1 else 0) = minkowskiMatrix (b 0) (b 1)d:ℕb:ComponentIdx ![Color.down, Color.down]⊢ ∀ b_1 ∈ Finset.univ, b_1 ≠ b 0 → minkowskiMatrix b_1 b_1 * ((if b_1 = b 1 then 1 else 0) * if b_1 = b 0 then 1 else 0) = 0d:ℕb:ComponentIdx ![Color.down, Color.down]⊢ b 0 ∉ Finset.univ → minkowskiMatrix (b 0) (b 0) * ((if b 0 = b 1 then 1 else 0) * if b 0 = b 0 then 1 else 0) = 0 d:ℕb:ComponentIdx ![Color.down, Color.down]⊢ minkowskiMatrix (b 0) (b 0) * ((if b 0 = b 1 then 1 else 0) * if b 0 = b 0 then 1 else 0) = minkowskiMatrix (b 0) (b 1)d:ℕb:ComponentIdx ![Color.down, Color.down]⊢ ∀ b_1 ∈ Finset.univ, b_1 ≠ b 0 → minkowskiMatrix b_1 b_1 * ((if b_1 = b 1 then 1 else 0) * if b_1 = b 0 then 1 else 0) = 0d:ℕb:ComponentIdx ![Color.down, Color.down]⊢ b 0 ∉ Finset.univ → minkowskiMatrix (b 0) (b 0) * ((if b 0 = b 1 then 1 else 0) * if b 0 = b 0 then 1 else 0) = 0 All goals completed! 🐙d:ℕb:ComponentIdx ![Color.up, Color.up]⊢ minkowskiMatrix (b 0) (b 0) * ((if b 0 = b 1 then 1 else 0) * if b 0 = b 0 then 1 else 0) = minkowskiMatrix (b 0) (b 1)d:ℕb:ComponentIdx ![Color.up, Color.up]⊢ ∀ b_1 ∈ Finset.univ, b_1 ≠ b 0 → minkowskiMatrix b_1 b_1 * ((if b_1 = b 1 then 1 else 0) * if b_1 = b 0 then 1 else 0) = 0d:ℕb:ComponentIdx ![Color.up, Color.up]⊢ b 0 ∉ Finset.univ → minkowskiMatrix (b 0) (b 0) * ((if b 0 = b 1 then 1 else 0) * if b 0 = b 0 then 1 else 0) = 0 d:ℕb:ComponentIdx ![Color.up, Color.up]⊢ minkowskiMatrix (b 0) (b 0) * ((if b 0 = b 1 then 1 else 0) * if b 0 = b 0 then 1 else 0) = minkowskiMatrix (b 0) (b 1)d:ℕb:ComponentIdx ![Color.up, Color.up]⊢ ∀ b_1 ∈ Finset.univ, b_1 ≠ b 0 → minkowskiMatrix b_1 b_1 * ((if b_1 = b 1 then 1 else 0) * if b_1 = b 0 then 1 else 0) = 0d:ℕb:ComponentIdx ![Color.up, Color.up]⊢ b 0 ∉ Finset.univ → minkowskiMatrix (b 0) (b 0) * ((if b 0 = b 1 then 1 else 0) * if b 0 = b 0 then 1 else 0) = 0 All goals completed! 🐙