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

Unit tensors for complex Lorentz tensors

@[expose] public section

Definitions.

The unit δᵢⁱ as a complex Lorentz tensor.

abbrev coContrUnit : ℂT[.down, .up] := complexLorentzTensor.unitTensor Color.up

The unit δⁱᵢ as a complex Lorentz tensor.

abbrev contrCoUnit : ℂT[.up, .down] := complexLorentzTensor.unitTensor Color.down

The unit δₐᵃ as a complex Lorentz tensor.

abbrev dualLeftLeftUnit : ℂT[.downL, .upL] := complexLorentzTensor.unitTensor Color.upL

The unit δᵃₐ as a complex Lorentz tensor.

abbrev leftDualLeftUnit : ℂT[.upL, .downL] := complexLorentzTensor.unitTensor Color.downL

The unit δ_{dot a}^{dot a} as a complex Lorentz tensor.

abbrev dualRightRightUnit : ℂT[.downR, .upR] := complexLorentzTensor.unitTensor Color.upR

The unit δ^{dot a}_{dot a} as a complex Lorentz tensor.

abbrev rightDualRightUnit : ℂT[.upR, .downR] := complexLorentzTensor.unitTensor Color.downR

Notation

The unit δᵢⁱ as a complex Lorentz tensor.

scoped[complexLorentzTensor] notation "δ'" => coContrUnit

The unit δⁱᵢ as a complex Lorentz tensor.

scoped[complexLorentzTensor] notation "δ" => contrCoUnit

The unit δₐᵃ as a complex Lorentz tensor.

scoped[complexLorentzTensor] notation "δL'" => dualLeftLeftUnit

The unit δᵃₐ as a complex Lorentz tensor.

scoped[complexLorentzTensor] notation "δL" => leftDualLeftUnit

The unit δ_{dot a}^{dot a} as a complex Lorentz tensor.

scoped[complexLorentzTensor] notation "δR'" => dualRightRightUnit

The unit δ^{dot a}_{dot a} as a complex Lorentz tensor.

scoped[complexLorentzTensor] notation "δR" => rightDualRightUnit

Other forms

fromConstPair

δ' = fromConstPair { toFun := fun a => have a' := a; a' Lorentz.coContrUnitVal, map_add' := , map_smul' := , isIntertwining' := } All goals completed! 🐙δ = fromConstPair { toFun := fun a => have a' := a; a' Lorentz.contrCoUnitVal, map_add' := , map_smul' := , isIntertwining' := } All goals completed! 🐙δL' = fromConstPair { toFun := fun a => have a' := a; a' dualLeftLeftUnitVal, map_add' := , map_smul' := , isIntertwining' := } All goals completed! 🐙δL = fromConstPair { toFun := fun a => have a' := a; a' leftDualLeftUnitVal, map_add' := , map_smul' := , isIntertwining' := } All goals completed! 🐙δR' = fromConstPair { toFun := fun a => have a' := a; a' dualRightRightUnitVal, map_add' := , map_smul' := , isIntertwining' := } All goals completed! 🐙δR = fromConstPair { toFun := fun a => have a' := a; a' rightDualRightUnitVal, map_add' := , map_smul' := , isIntertwining' := } All goals completed! 🐙

fromPairT

fromPairT (Lorentz.coContrUnit 1) = fromPairT Lorentz.coContrUnitVal Lorentz.coContrUnit 1 = Lorentz.coContrUnitVal All goals completed! 🐙fromPairT (Lorentz.contrCoUnit 1) = fromPairT Lorentz.contrCoUnitVal Lorentz.contrCoUnit 1 = Lorentz.contrCoUnitVal All goals completed! 🐙fromPairT (Fermion.dualLeftLeftUnit 1) = fromPairT dualLeftLeftUnitVal Fermion.dualLeftLeftUnit 1 = dualLeftLeftUnitVal All goals completed! 🐙fromPairT (Fermion.leftDualLeftUnit 1) = fromPairT leftDualLeftUnitVal Fermion.leftDualLeftUnit 1 = leftDualLeftUnitVal All goals completed! 🐙fromPairT (Fermion.dualRightRightUnit 1) = fromPairT dualRightRightUnitVal Fermion.dualRightRightUnit 1 = dualRightRightUnitVal All goals completed! 🐙fromPairT (Fermion.rightDualRightUnit 1) = fromPairT rightDualRightUnitVal Fermion.rightDualRightUnit 1 = rightDualRightUnitVal All goals completed! 🐙

complexCoBasis etc.

basis

i, fromPairT (Lorentz.complexCoBasisFin4 i ⊗ₜ[] Lorentz.complexContrBasisFin4 i) = i, (Tensor.basis ![Color.down, Color.up]) fun x => match x with | 0 => i | 1 => i conv_lhs => x:Fin 4| fromPairT (Lorentz.complexCoBasisFin4 x ⊗ₜ[] Lorentz.complexContrBasisFin4 x) x:Fin 4| fromPairT ((basis Color.down) x ⊗ₜ[] (basis Color.up) x) x:Fin 4| (Tensor.basis ![Color.down, Color.up]) fun x_1 => match x_1 with | 0 => x | 1 => x All goals completed! 🐙 i, fromPairT (Lorentz.complexContrBasisFin4 i ⊗ₜ[] Lorentz.complexCoBasisFin4 i) = i, (Tensor.basis ![Color.up, Color.down]) fun x => match x with | 0 => i | 1 => i conv_lhs => x:Fin 4| fromPairT (Lorentz.complexContrBasisFin4 x ⊗ₜ[] Lorentz.complexCoBasisFin4 x) x:Fin 4| fromPairT ((basis Color.up) x ⊗ₜ[] (basis Color.down) x) x:Fin 4| (Tensor.basis ![Color.up, Color.down]) fun x_1 => match x_1 with | 0 => x | 1 => x All goals completed! 🐙 i, fromPairT (DualLeftHandedWeyl.basis i ⊗ₜ[] LeftHandedWeyl.basis i) = i, (Tensor.basis ![Color.downL, Color.upL]) fun x => match x with | 0 => i | 1 => i conv_lhs => x:Fin 2| fromPairT (DualLeftHandedWeyl.basis x ⊗ₜ[] LeftHandedWeyl.basis x) x:Fin 2| fromPairT ((basis Color.downL) x ⊗ₜ[] (basis Color.upL) x) x:Fin 2| (Tensor.basis ![Color.downL, Color.upL]) fun x_1 => match x_1 with | 0 => x | 1 => x All goals completed! 🐙 i, fromPairT (LeftHandedWeyl.basis i ⊗ₜ[] DualLeftHandedWeyl.basis i) = i, (Tensor.basis ![Color.upL, Color.downL]) fun x => match x with | 0 => i | 1 => i conv_lhs => x:Fin 2| fromPairT (LeftHandedWeyl.basis x ⊗ₜ[] DualLeftHandedWeyl.basis x) x:Fin 2| fromPairT ((basis Color.upL) x ⊗ₜ[] (basis Color.downL) x) x:Fin 2| (Tensor.basis ![Color.upL, Color.downL]) fun x_1 => match x_1 with | 0 => x | 1 => x All goals completed! 🐙 i, fromPairT (DualRightHandedWeyl.basis i ⊗ₜ[] RightHandedWeyl.basis i) = i, (Tensor.basis ![Color.downR, Color.upR]) fun x => match x with | 0 => i | 1 => i conv_lhs => x:Fin 2| fromPairT (DualRightHandedWeyl.basis x ⊗ₜ[] RightHandedWeyl.basis x) x:Fin 2| fromPairT ((basis Color.downR) x ⊗ₜ[] (basis Color.upR) x) x:Fin 2| (Tensor.basis ![Color.downR, Color.upR]) fun x_1 => match x_1 with | 0 => x | 1 => x All goals completed! 🐙 i, fromPairT (RightHandedWeyl.basis i ⊗ₜ[] DualRightHandedWeyl.basis i) = i, (Tensor.basis ![Color.upR, Color.downR]) fun x => match x with | 0 => i | 1 => i conv_lhs => x:Fin 2| fromPairT (RightHandedWeyl.basis x ⊗ₜ[] DualRightHandedWeyl.basis x) x:Fin 2| fromPairT ((basis Color.upR) x ⊗ₜ[] (basis Color.downR) x) x:Fin 2| (Tensor.basis ![Color.upR, Color.downR]) fun x_1 => match x_1 with | 0 => x | 1 => x All goals completed! 🐙

ofRat

ofRat (∑ x, fun b' => if (fun x_1 => match x_1 with | 0 => x | 1 => x) = b' then { fst := 1, snd := 0 } else { fst := 0, snd := 0 }) = ofRat fun f => if f 0 = f 1 then 1 else 0 (∑ x, fun b' => if (fun x_1 => match x_1 with | 0 => x | 1 => x) = b' then { fst := 1, snd := 0 } else { fst := 0, snd := 0 }) = fun f => if f 0 = f 1 then 1 else 0 with_unfolding_all All goals completed! 🐙ofRat (∑ x, fun b' => if (fun x_1 => match x_1 with | 0 => x | 1 => x) = b' then { fst := 1, snd := 0 } else { fst := 0, snd := 0 }) = ofRat fun f => if f 0 = f 1 then 1 else 0 (∑ x, fun b' => if (fun x_1 => match x_1 with | 0 => x | 1 => x) = b' then { fst := 1, snd := 0 } else { fst := 0, snd := 0 }) = fun f => if f 0 = f 1 then 1 else 0 with_unfolding_all All goals completed! 🐙ofRat (∑ x, fun b' => if (fun x_1 => match x_1 with | 0 => x | 1 => x) = b' then { fst := 1, snd := 0 } else { fst := 0, snd := 0 }) = ofRat fun f => if f 0 = f 1 then 1 else 0 (∑ x, fun b' => if (fun x_1 => match x_1 with | 0 => x | 1 => x) = b' then { fst := 1, snd := 0 } else { fst := 0, snd := 0 }) = fun f => if f 0 = f 1 then 1 else 0 with_unfolding_all All goals completed! 🐙ofRat (∑ x, fun b' => if (fun x_1 => match x_1 with | 0 => x | 1 => x) = b' then { fst := 1, snd := 0 } else { fst := 0, snd := 0 }) = ofRat fun f => if f 0 = f 1 then 1 else 0 (∑ x, fun b' => if (fun x_1 => match x_1 with | 0 => x | 1 => x) = b' then { fst := 1, snd := 0 } else { fst := 0, snd := 0 }) = fun f => if f 0 = f 1 then 1 else 0 with_unfolding_all All goals completed! 🐙ofRat (∑ x, fun b' => if (fun x_1 => match x_1 with | 0 => x | 1 => x) = b' then { fst := 1, snd := 0 } else { fst := 0, snd := 0 }) = ofRat fun f => if f 0 = f 1 then 1 else 0 (∑ x, fun b' => if (fun x_1 => match x_1 with | 0 => x | 1 => x) = b' then { fst := 1, snd := 0 } else { fst := 0, snd := 0 }) = fun f => if f 0 = f 1 then 1 else 0 with_unfolding_all All goals completed! 🐙ofRat (∑ x, fun b' => if (fun x_1 => match x_1 with | 0 => x | 1 => x) = b' then { fst := 1, snd := 0 } else { fst := 0, snd := 0 }) = ofRat fun f => if f 0 = f 1 then 1 else 0 (∑ x, fun b' => if (fun x_1 => match x_1 with | 0 => x | 1 => x) = b' then { fst := 1, snd := 0 } else { fst := 0, snd := 0 }) = fun f => if f 0 = f 1 then 1 else 0 with_unfolding_all All goals completed! 🐙

Group actions

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

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

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

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

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

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

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

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

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

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

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

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