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.Basic
@[expose] public sectionlemma antiSymm_contr_symm {A : ℂT[.up, .up]} {S : ℂT[.down, .down]} (hA : {A | μ ν = - (A | ν μ)}ᵀ) (hs : {S | μ ν = S | ν μ}ᵀ) : {A | μ ν ⊗ S | μ ν = - A | μ ν ⊗ S | μ ν}ᵀ := A:complexLorentzTensor.Tensor ![Color.up, Color.up]S:complexLorentzTensor.Tensor ![Color.down, Color.down]hA:A = (permT ![1, 0] ⋯) (-A)hs:S = (permT ![1, 0] ⋯) S⊢ (contrT 0 0 1 ⋯) ((contrT 2 1 3 ⋯) ((prodT A) S)) = -(contrT 0 0 1 ⋯) ((contrT 2 1 3 ⋯) ((prodT A) S)) conv_lhs => A:complexLorentzTensor.Tensor ![Color.up, Color.up]S:complexLorentzTensor.Tensor ![Color.down, Color.down]hA:A = (permT ![1, 0] ⋯) (-A)hs:S = (permT ![1, 0] ⋯) S| (permT (((Fin.succSuccAbove 1 3 0).predPredAbove (Fin.succSuccAbove 1 3 1) ⋯ 1 ⋯).funPredPredAbove ((Fin.succSuccAbove 1 3 0).predPredAbove (Fin.succSuccAbove 1 3 1) ⋯ 3 ⋯) ⋯ ((Fin.succSuccAbove 1 3 0).funPredPredAbove (Fin.succSuccAbove 1 3 1) ⋯ (Fin.append (Fin.castAdd (Nat.succ 0).succ) (Fin.natAdd (Nat.succ 0).succ ∘ ![1, 0]) ∘ Fin.append (Fin.castAdd (Nat.succ 0).succ ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ)) ⋯) ⋯ ∘ id) ⋯) ((contrT 0 ((Fin.succSuccAbove 1 3 0).funPredPredAbove (Fin.succSuccAbove 1 3 1) ⋯ (Fin.append (Fin.castAdd (Nat.succ 0).succ) (Fin.natAdd (Nat.succ 0).succ ∘ ![1, 0]) ∘ Fin.append (Fin.castAdd (Nat.succ 0).succ ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ)) ⋯ ((Fin.succSuccAbove 1 3 0).predPredAbove (Fin.succSuccAbove 1 3 1) ⋯ 1 ⋯)) ((Fin.succSuccAbove 1 3 0).funPredPredAbove (Fin.succSuccAbove 1 3 1) ⋯ (Fin.append (Fin.castAdd (Nat.succ 0).succ) (Fin.natAdd (Nat.succ 0).succ ∘ ![1, 0]) ∘ Fin.append (Fin.castAdd (Nat.succ 0).succ ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ)) ⋯ ((Fin.succSuccAbove 1 3 0).predPredAbove (Fin.succSuccAbove 1 3 1) ⋯ 3 ⋯)) ⋯) ((contrT 2 ((Fin.append (Fin.castAdd (Nat.succ 0).succ) (Fin.natAdd (Nat.succ 0).succ ∘ ![1, 0]) ∘ Fin.append (Fin.castAdd (Nat.succ 0).succ ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ)) (Fin.succSuccAbove 1 3 0)) ((Fin.append (Fin.castAdd (Nat.succ 0).succ) (Fin.natAdd (Nat.succ 0).succ ∘ ![1, 0]) ∘ Fin.append (Fin.castAdd (Nat.succ 0).succ ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ)) (Fin.succSuccAbove 1 3 1)) ⋯) ((prodT (-A)) S))) A:complexLorentzTensor.Tensor ![Color.up, Color.up]S:complexLorentzTensor.Tensor ![Color.down, Color.down]hA:A = (permT ![1, 0] ⋯) (-A)hs:S = (permT ![1, 0] ⋯) S⊢ -(permT (((Fin.succSuccAbove 1 3 0).predPredAbove (Fin.succSuccAbove 1 3 1) ⋯ 1 ⋯).funPredPredAbove ((Fin.succSuccAbove 1 3 0).predPredAbove (Fin.succSuccAbove 1 3 1) ⋯ 3 ⋯) ⋯ ((Fin.succSuccAbove 1 3 0).funPredPredAbove (Fin.succSuccAbove 1 3 1) ⋯ (Fin.append (Fin.castAdd (Nat.succ 0).succ) (Fin.natAdd (Nat.succ 0).succ ∘ ![1, 0]) ∘ Fin.append (Fin.castAdd (Nat.succ 0).succ ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ)) ⋯) ⋯ ∘ id) ⋯) ((contrT 0 ((Fin.succSuccAbove 1 3 0).funPredPredAbove (Fin.succSuccAbove 1 3 1) ⋯ (Fin.append (Fin.castAdd (Nat.succ 0).succ) (Fin.natAdd (Nat.succ 0).succ ∘ ![1, 0]) ∘ Fin.append (Fin.castAdd (Nat.succ 0).succ ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ)) ⋯ ((Fin.succSuccAbove 1 3 0).predPredAbove (Fin.succSuccAbove 1 3 1) ⋯ 1 ⋯)) ((Fin.succSuccAbove 1 3 0).funPredPredAbove (Fin.succSuccAbove 1 3 1) ⋯ (Fin.append (Fin.castAdd (Nat.succ 0).succ) (Fin.natAdd (Nat.succ 0).succ ∘ ![1, 0]) ∘ Fin.append (Fin.castAdd (Nat.succ 0).succ ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ)) ⋯ ((Fin.succSuccAbove 1 3 0).predPredAbove (Fin.succSuccAbove 1 3 1) ⋯ 3 ⋯)) ⋯) ((contrT 2 ((Fin.append (Fin.castAdd (Nat.succ 0).succ) (Fin.natAdd (Nat.succ 0).succ ∘ ![1, 0]) ∘ Fin.append (Fin.castAdd (Nat.succ 0).succ ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ)) (Fin.succSuccAbove 1 3 0)) ((Fin.append (Fin.castAdd (Nat.succ 0).succ) (Fin.natAdd (Nat.succ 0).succ ∘ ![1, 0]) ∘ Fin.append (Fin.castAdd (Nat.succ 0).succ ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ)) (Fin.succSuccAbove 1 3 1)) ⋯) ((prodT A) S))) = -(contrT 0 0 1 ⋯) ((contrT 2 1 3 ⋯) ((prodT A) S)) A:complexLorentzTensor.Tensor ![Color.up, Color.up]S:complexLorentzTensor.Tensor ![Color.down, Color.down]hA:A = (permT ![1, 0] ⋯) (-A)hs:S = (permT ![1, 0] ⋯) S⊢ (permT (((Fin.succSuccAbove 1 3 0).predPredAbove (Fin.succSuccAbove 1 3 1) ⋯ 1 ⋯).funPredPredAbove ((Fin.succSuccAbove 1 3 0).predPredAbove (Fin.succSuccAbove 1 3 1) ⋯ 3 ⋯) ⋯ ((Fin.succSuccAbove 1 3 0).funPredPredAbove (Fin.succSuccAbove 1 3 1) ⋯ (Fin.append (Fin.castAdd (Nat.succ 0).succ) (Fin.natAdd (Nat.succ 0).succ ∘ ![1, 0]) ∘ Fin.append (Fin.castAdd (Nat.succ 0).succ ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ)) ⋯) ⋯ ∘ id) ⋯) ((contrT 0 ((Fin.succSuccAbove 1 3 0).funPredPredAbove (Fin.succSuccAbove 1 3 1) ⋯ (Fin.append (Fin.castAdd (Nat.succ 0).succ) (Fin.natAdd (Nat.succ 0).succ ∘ ![1, 0]) ∘ Fin.append (Fin.castAdd (Nat.succ 0).succ ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ)) ⋯ ((Fin.succSuccAbove 1 3 0).predPredAbove (Fin.succSuccAbove 1 3 1) ⋯ 1 ⋯)) ((Fin.succSuccAbove 1 3 0).funPredPredAbove (Fin.succSuccAbove 1 3 1) ⋯ (Fin.append (Fin.castAdd (Nat.succ 0).succ) (Fin.natAdd (Nat.succ 0).succ ∘ ![1, 0]) ∘ Fin.append (Fin.castAdd (Nat.succ 0).succ ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ)) ⋯ ((Fin.succSuccAbove 1 3 0).predPredAbove (Fin.succSuccAbove 1 3 1) ⋯ 3 ⋯)) ⋯) ((contrT 2 ((Fin.append (Fin.castAdd (Nat.succ 0).succ) (Fin.natAdd (Nat.succ 0).succ ∘ ![1, 0]) ∘ Fin.append (Fin.castAdd (Nat.succ 0).succ ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ)) (Fin.succSuccAbove 1 3 0)) ((Fin.append (Fin.castAdd (Nat.succ 0).succ) (Fin.natAdd (Nat.succ 0).succ ∘ ![1, 0]) ∘ Fin.append (Fin.castAdd (Nat.succ 0).succ ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ)) (Fin.succSuccAbove 1 3 1)) ⋯) ((prodT A) S))) = (contrT 0 0 1 ⋯) ((contrT 2 1 3 ⋯) ((prodT A) S)) A:complexLorentzTensor.Tensor ![Color.up, Color.up]S:complexLorentzTensor.Tensor ![Color.down, Color.down]hA:A = (permT ![1, 0] ⋯) (-A)hs:S = (permT ![1, 0] ⋯) S⊢ ((Fin.succSuccAbove 1 3 0).predPredAbove (Fin.succSuccAbove 1 3 1) ⋯ 1 ⋯).funPredPredAbove ((Fin.succSuccAbove 1 3 0).predPredAbove (Fin.succSuccAbove 1 3 1) ⋯ 3 ⋯) ⋯ ((Fin.succSuccAbove 1 3 0).funPredPredAbove (Fin.succSuccAbove 1 3 1) ⋯ (Fin.append (Fin.castAdd (Nat.succ 0).succ) (Fin.natAdd (Nat.succ 0).succ ∘ ![1, 0]) ∘ Fin.append (Fin.castAdd (Nat.succ 0).succ ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ)) ⋯) ⋯ ∘ id = id All goals completed! 🐙