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.ComplexTensor.OfRat

Metrics as complex Lorentz tensors

@[expose] public section

Definitions.

The metric ηᵢᵢ as a complex Lorentz tensor.

The metric ηⁱⁱ as a complex Lorentz tensor.

abbrev contrMetric : ℂT[.up, .up] := complexLorentzTensor.metricTensor Color.up

The metric εᵃᵃ as a complex Lorentz tensor.

abbrev leftMetric : ℂT[.upL, .upL] := complexLorentzTensor.metricTensor Color.upL

The metric ε^{dot a}^{dot a} as a complex Lorentz tensor.

abbrev rightMetric : ℂT[.upR, .upR] := complexLorentzTensor.metricTensor Color.upR

The metric εₐₐ as a complex Lorentz tensor.

abbrev dualLeftMetric : ℂT[.downL, .downL] := complexLorentzTensor.metricTensor Color.downL

The metric ε_{dot a}_{dot a} as a complex Lorentz tensor.

abbrev dualRightMetric : ℂT[.downR, .downR] := complexLorentzTensor.metricTensor Color.downR

Notation

The metric ηᵢᵢ as a complex Lorentz tensors.

scoped[complexLorentzTensor] notation "η'" => coMetric

The metric ηⁱⁱ as a complex Lorentz tensors.

scoped[complexLorentzTensor] notation "η" => contrMetric

The metric εᵃᵃ as a complex Lorentz tensors.

scoped[complexLorentzTensor] notation "εL" => leftMetric

The metric ε^{dot a}^{dot a} as a complex Lorentz tensors.

scoped[complexLorentzTensor] notation "εR" => rightMetric

The metric εₐₐ as a complex Lorentz tensors.

scoped[complexLorentzTensor] notation "εL'" => dualLeftMetric

The metric ε_{dot a}_{dot a} as a complex Lorentz tensors.

scoped[complexLorentzTensor] notation "εR'" => dualRightMetric

Other forms

fromConstPair

η' = fromConstPair { toFun := fun a => have a' := a; a' Lorentz.coMetricVal, map_add' := , map_smul' := , isIntertwining' := } All goals completed! 🐙η = fromConstPair { toFun := fun a => have a' := a; a' Lorentz.contrMetricVal, map_add' := , map_smul' := , isIntertwining' := } All goals completed! 🐙lemma leftMetric_eq_fromConstPair : εL = fromConstPair Fermion.leftMetric := rfllemma rightMetric_eq_fromConstPair : εR = fromConstPair Fermion.rightMetric := rfllemma dualLeftMetric_eq_fromConstPair : εL' = fromConstPair Fermion.dualLeftMetric := rfllemma dualRightMetric_eq_fromConstPair : εR' = fromConstPair Fermion.dualRightMetric := rfl

fromPairT

fromPairT (Lorentz.coMetric 1) = fromPairT Lorentz.coMetricVal Lorentz.coMetric 1 = Lorentz.coMetricVal All goals completed! 🐙fromPairT (Lorentz.contrMetric 1) = fromPairT Lorentz.contrMetricVal Lorentz.contrMetric 1 = Lorentz.contrMetricVal All goals completed! 🐙fromPairT (Fermion.leftMetric 1) = fromPairT leftMetricVal Fermion.leftMetric 1 = leftMetricVal All goals completed! 🐙fromPairT (Fermion.rightMetric 1) = fromPairT rightMetricVal Fermion.rightMetric 1 = rightMetricVal All goals completed! 🐙fromPairT (Fermion.dualLeftMetric 1) = fromPairT dualLeftMetricVal Fermion.dualLeftMetric 1 = dualLeftMetricVal All goals completed! 🐙fromPairT (Fermion.dualRightMetric 1) = fromPairT dualRightMetricVal Fermion.dualRightMetric 1 = dualRightMetricVal All goals completed! 🐙

complexCoBasis etc.

basis

ofRat

ofRat ((((fun b' => if (fun x => match x with | 0 => 0 | 1 => 0) = b' then { fst := 1, snd := 0 } else { fst := 0, snd := 0 }) - fun b' => if (fun x => match x with | 0 => 1 | 1 => 1) = b' then { fst := 1, snd := 0 } else { fst := 0, snd := 0 }) - fun b' => if (fun x => match x with | 0 => 2 | 1 => 2) = b' then { fst := 1, snd := 0 } else { fst := 0, snd := 0 }) - fun b' => if (fun x => match x with | 0 => 3 | 1 => 3) = b' then { fst := 1, snd := 0 } else { fst := 0, snd := 0 }) = ofRat fun f => if f 0 = Fin.cast 0 f 1 = Fin.cast 0 then 1 else if f 0 = f 1 then -1 else 0 ((((fun b' => if (fun x => match x with | 0 => 0 | 1 => 0) = b' then { fst := 1, snd := 0 } else { fst := 0, snd := 0 }) - fun b' => if (fun x => match x with | 0 => 1 | 1 => 1) = b' then { fst := 1, snd := 0 } else { fst := 0, snd := 0 }) - fun b' => if (fun x => match x with | 0 => 2 | 1 => 2) = b' then { fst := 1, snd := 0 } else { fst := 0, snd := 0 }) - fun b' => if (fun x => match x with | 0 => 3 | 1 => 3) = b' then { fst := 1, snd := 0 } else { fst := 0, snd := 0 }) = fun f => if f 0 = Fin.cast 0 f 1 = Fin.cast 0 then 1 else if f 0 = f 1 then -1 else 0 with_unfolding_all All goals completed! 🐙ofRat ((((fun b' => if (fun x => match x with | 0 => 0 | 1 => 0) = b' then { fst := 1, snd := 0 } else { fst := 0, snd := 0 }) - fun b' => if (fun x => match x with | 0 => 1 | 1 => 1) = b' then { fst := 1, snd := 0 } else { fst := 0, snd := 0 }) - fun b' => if (fun x => match x with | 0 => 2 | 1 => 2) = b' then { fst := 1, snd := 0 } else { fst := 0, snd := 0 }) - fun b' => if (fun x => match x with | 0 => 3 | 1 => 3) = b' then { fst := 1, snd := 0 } else { fst := 0, snd := 0 }) = ofRat fun f => if f 0 = Fin.cast 0 f 1 = Fin.cast 0 then 1 else if f 0 = f 1 then -1 else 0 ((((fun b' => if (fun x => match x with | 0 => 0 | 1 => 0) = b' then { fst := 1, snd := 0 } else { fst := 0, snd := 0 }) - fun b' => if (fun x => match x with | 0 => 1 | 1 => 1) = b' then { fst := 1, snd := 0 } else { fst := 0, snd := 0 }) - fun b' => if (fun x => match x with | 0 => 2 | 1 => 2) = b' then { fst := 1, snd := 0 } else { fst := 0, snd := 0 }) - fun b' => if (fun x => match x with | 0 => 3 | 1 => 3) = b' then { fst := 1, snd := 0 } else { fst := 0, snd := 0 }) = fun f => if f 0 = Fin.cast 0 f 1 = Fin.cast 0 then 1 else if f 0 = f 1 then -1 else 0 with_unfolding_all All goals completed! 🐙ofRat ((-fun b' => if (fun x => match x with | 0 => 0 | 1 => 1) = b' then { fst := 1, snd := 0 } else { fst := 0, snd := 0 }) + fun b' => if (fun x => match x with | 0 => 1 | 1 => 0) = b' then { fst := 1, snd := 0 } else { fst := 0, snd := 0 }) = ofRat fun f => if f 0 = Fin.cast 0 f 1 = Fin.cast 1 then -1 else if f 1 = Fin.cast 0 f 0 = Fin.cast 1 then 1 else 0 ((-fun b' => if (fun x => match x with | 0 => 0 | 1 => 1) = b' then { fst := 1, snd := 0 } else { fst := 0, snd := 0 }) + fun b' => if (fun x => match x with | 0 => 1 | 1 => 0) = b' then { fst := 1, snd := 0 } else { fst := 0, snd := 0 }) = fun f => if f 0 = Fin.cast 0 f 1 = Fin.cast 1 then -1 else if f 1 = Fin.cast 0 f 0 = Fin.cast 1 then 1 else 0 with_unfolding_all All goals completed! 🐙ofRat ((fun b' => if (fun x => match x with | 0 => 0 | 1 => 1) = b' then { fst := 1, snd := 0 } else { fst := 0, snd := 0 }) - fun b' => if (fun x => match x with | 0 => 1 | 1 => 0) = b' then { fst := 1, snd := 0 } else { fst := 0, snd := 0 }) = ofRat fun f => if f 0 = Fin.cast 0 f 1 = Fin.cast 1 then 1 else if f 1 = Fin.cast 0 f 0 = Fin.cast 1 then -1 else 0 ((fun b' => if (fun x => match x with | 0 => 0 | 1 => 1) = b' then { fst := 1, snd := 0 } else { fst := 0, snd := 0 }) - fun b' => if (fun x => match x with | 0 => 1 | 1 => 0) = b' then { fst := 1, snd := 0 } else { fst := 0, snd := 0 }) = fun f => if f 0 = Fin.cast 0 f 1 = Fin.cast 1 then 1 else if f 1 = Fin.cast 0 f 0 = Fin.cast 1 then -1 else 0 with_unfolding_all All goals completed! 🐙ofRat ((-fun b' => if (fun x => match x with | 0 => 0 | 1 => 1) = b' then { fst := 1, snd := 0 } else { fst := 0, snd := 0 }) + fun b' => if (fun x => match x with | 0 => 1 | 1 => 0) = b' then { fst := 1, snd := 0 } else { fst := 0, snd := 0 }) = ofRat fun f => if f 0 = Fin.cast 0 f 1 = Fin.cast 1 then -1 else if f 1 = Fin.cast 0 f 0 = Fin.cast 1 then 1 else 0 ((-fun b' => if (fun x => match x with | 0 => 0 | 1 => 1) = b' then { fst := 1, snd := 0 } else { fst := 0, snd := 0 }) + fun b' => if (fun x => match x with | 0 => 1 | 1 => 0) = b' then { fst := 1, snd := 0 } else { fst := 0, snd := 0 }) = fun f => if f 0 = Fin.cast 0 f 1 = Fin.cast 1 then -1 else if f 1 = Fin.cast 0 f 0 = Fin.cast 1 then 1 else 0 with_unfolding_all All goals completed! 🐙ofRat ((fun b' => if (fun x => match x with | 0 => 0 | 1 => 1) = b' then { fst := 1, snd := 0 } else { fst := 0, snd := 0 }) - fun b' => if (fun x => match x with | 0 => 1 | 1 => 0) = b' then { fst := 1, snd := 0 } else { fst := 0, snd := 0 }) = ofRat fun f => if f 0 = Fin.cast 0 f 1 = Fin.cast 1 then 1 else if f 1 = Fin.cast 0 f 0 = Fin.cast 1 then -1 else 0 ((fun b' => if (fun x => match x with | 0 => 0 | 1 => 1) = b' then { fst := 1, snd := 0 } else { fst := 0, snd := 0 }) - fun b' => if (fun x => match x with | 0 => 1 | 1 => 0) = b' then { fst := 1, snd := 0 } else { fst := 0, snd := 0 }) = fun f => if f 0 = Fin.cast 0 f 1 = Fin.cast 1 then 1 else if f 1 = Fin.cast 0 f 0 = Fin.cast 1 then -1 else 0 with_unfolding_all All goals completed! 🐙

Group actions

The tensor coMetric is invariant under the action of SL(2,ℂ).

set_option backward.isDefEq.respectTransparency false inAll goals completed! 🐙

The tensor contrMetric is invariant under the action of SL(2,ℂ).

set_option backward.isDefEq.respectTransparency false inAll goals completed! 🐙

The tensor leftMetric is invariant under the action of SL(2,ℂ).

set_option backward.isDefEq.respectTransparency false inAll goals completed! 🐙

The tensor rightMetric is invariant under the action of SL(2,ℂ).

set_option backward.isDefEq.respectTransparency false inAll goals completed! 🐙

The tensor dualLeftMetric is invariant under the action of SL(2,ℂ).

set_option backward.isDefEq.respectTransparency false inAll goals completed! 🐙

The tensor dualRightMetric is invariant under the action of SL(2,ℂ).

set_option backward.isDefEq.respectTransparency false inAll goals completed! 🐙