Imports
/-
Copyright (c) 2025 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.UnitTensorThe metric tensors
@[expose] public sectionattribute [-simp] LinearEquiv.cast_applylemma metricTensor_congr {c c1 : C} (h : c = c1) :
S.metricTensor c = permT id (k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cc1:Ch:c = c1⊢ IsReindexing ![c1, c1] ![c, c] id All goals completed! 🐙) (metricTensor c1) := k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cc1:Ch:c = c1⊢ metricTensor c = (permT id ⋯) (metricTensor c1)
k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ metricTensor c = (permT id ⋯) (metricTensor c)
All goals completed! 🐙All goals completed! 🐙
lemma permT_fromPairTContr_metric_metric {c : C} :
permT ![1, 0] (And.intro (by k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ Function.Bijective ![1, 0] decide All goals completed! 🐙) (fun i => by k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Ci:Fin (Nat.succ 0).succ⊢ ![c, S.τ c] (![1, 0] i) = ![S.τ c, c] i fin_cases i «0» k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ ![c, S.τ c] (![1, 0] ((fun i => i) ⟨0, ⋯⟩)) = ![S.τ c, c] ((fun i => i) ⟨0, ⋯⟩)«1» k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ ![c, S.τ c] (![1, 0] ((fun i => i) ⟨1, ⋯⟩)) = ![S.τ c, c] ((fun i => i) ⟨1, ⋯⟩) <;> «0» k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ ![c, S.τ c] (![1, 0] ((fun i => i) ⟨0, ⋯⟩)) = ![S.τ c, c] ((fun i => i) ⟨0, ⋯⟩)«1» k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ ![c, S.τ c] (![1, 0] ((fun i => i) ⟨1, ⋯⟩)) = ![S.τ c, c] ((fun i => i) ⟨1, ⋯⟩) rfl All goals completed! 🐙))
(fromPairTContr ((S.metric c) (1 : k))
((S.metric ((S.τ c))) (1 : k))) = (unitTensor c) := by k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ (permT ![1, 0] ⋯) (fromPairTContr ((S.metric c) 1) ((S.metric (S.τ c)) 1)) = unitTensor c
rw [fromPairTContr, k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ (permT ![1, 0] ⋯)
(fromPairT
((LinearEquiv.lTensor (V c) (TensorProduct.lid k (V (S.τ c))))
((LinearMap.lTensor (V c) (LinearMap.rTensor (V (S.τ c)) (S.contr c).toLinearMap))
((LinearEquiv.lTensor (V c) (TensorProduct.assoc k (V c) (V (S.τ c)) (V (S.τ c))).symm)
((TensorProduct.assoc k (V c) (V c) (TensorProduct k (V (S.τ c)) (V (S.τ c))))
((S.metric c) 1 ⊗ₜ[k] (S.metric (S.τ c)) 1)))))) =
unitTensor c k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ fromPairT
((TensorProduct.comm k (V c) (V (S.τ c)))
((LinearEquiv.lTensor (V c) (TensorProduct.lid k (V (S.τ c))))
((LinearMap.lTensor (V c) (LinearMap.rTensor (V (S.τ c)) (S.contr c).toLinearMap))
((LinearEquiv.lTensor (V c) (TensorProduct.assoc k (V c) (V (S.τ c)) (V (S.τ c))).symm)
((TensorProduct.assoc k (V c) (V c) (TensorProduct k (V (S.τ c)) (V (S.τ c))))
((S.metric c) 1 ⊗ₜ[k] (S.metric (S.τ c)) 1)))))) =
unitTensor c ← fromPairT_comm k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ fromPairT
((TensorProduct.comm k (V c) (V (S.τ c)))
((LinearEquiv.lTensor (V c) (TensorProduct.lid k (V (S.τ c))))
((LinearMap.lTensor (V c) (LinearMap.rTensor (V (S.τ c)) (S.contr c).toLinearMap))
((LinearEquiv.lTensor (V c) (TensorProduct.assoc k (V c) (V (S.τ c)) (V (S.τ c))).symm)
((TensorProduct.assoc k (V c) (V c) (TensorProduct k (V (S.τ c)) (V (S.τ c))))
((S.metric c) 1 ⊗ₜ[k] (S.metric (S.τ c)) 1)))))) =
unitTensor c k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ fromPairT
((TensorProduct.comm k (V c) (V (S.τ c)))
((LinearEquiv.lTensor (V c) (TensorProduct.lid k (V (S.τ c))))
((LinearMap.lTensor (V c) (LinearMap.rTensor (V (S.τ c)) (S.contr c).toLinearMap))
((LinearEquiv.lTensor (V c) (TensorProduct.assoc k (V c) (V (S.τ c)) (V (S.τ c))).symm)
((TensorProduct.assoc k (V c) (V c) (TensorProduct k (V (S.τ c)) (V (S.τ c))))
((S.metric c) 1 ⊗ₜ[k] (S.metric (S.τ c)) 1)))))) =
unitTensor c] k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ fromPairT
((TensorProduct.comm k (V c) (V (S.τ c)))
((LinearEquiv.lTensor (V c) (TensorProduct.lid k (V (S.τ c))))
((LinearMap.lTensor (V c) (LinearMap.rTensor (V (S.τ c)) (S.contr c).toLinearMap))
((LinearEquiv.lTensor (V c) (TensorProduct.assoc k (V c) (V (S.τ c)) (V (S.τ c))).symm)
((TensorProduct.assoc k (V c) (V c) (TensorProduct k (V (S.τ c)) (V (S.τ c))))
((S.metric c) 1 ⊗ₜ[k] (S.metric (S.τ c)) 1)))))) =
unitTensor c
change _ = fromPairT ((S.unit c) (1 : k)) k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ fromPairT
((TensorProduct.comm k (V c) (V (S.τ c)))
((LinearEquiv.lTensor (V c) (TensorProduct.lid k (V (S.τ c))))
((LinearMap.lTensor (V c) (LinearMap.rTensor (V (S.τ c)) (S.contr c).toLinearMap))
((LinearEquiv.lTensor (V c) (TensorProduct.assoc k (V c) (V (S.τ c)) (V (S.τ c))).symm)
((TensorProduct.assoc k (V c) (V c) (TensorProduct k (V (S.τ c)) (V (S.τ c))))
((S.metric c) 1 ⊗ₜ[k] (S.metric (S.τ c)) 1)))))) =
fromPairT ((S.unit c) 1)
rw [← S.contr_metric k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ fromPairT
((TensorProduct.comm k (V c) (V (S.τ c)))
((LinearEquiv.lTensor (V c) (TensorProduct.lid k (V (S.τ c))))
((LinearMap.lTensor (V c) (LinearMap.rTensor (V (S.τ c)) (S.contr c).toLinearMap))
((LinearEquiv.lTensor (V c) (TensorProduct.assoc k (V c) (V (S.τ c)) (V (S.τ c))).symm)
((TensorProduct.assoc k (V c) (V c) (TensorProduct k (V (S.τ c)) (V (S.τ c))))
((S.metric c) 1 ⊗ₜ[k] (S.metric (S.τ c)) 1)))))) =
fromPairT
((TensorProduct.comm k (V c) (V (S.τ c)))
((LinearEquiv.lTensor (V c) (TensorProduct.lid k (V (S.τ c))))
((LinearMap.lTensor (V c) (LinearMap.rTensor (V (S.τ c)) (S.contr c).toLinearMap))
((LinearMap.lTensor (V c) ↑(TensorProduct.assoc k (V c) (V (S.τ c)) (V (S.τ c))).symm)
((TensorProduct.assoc k (V c) (V c) (TensorProduct k (V (S.τ c)) (V (S.τ c))))
((S.metric c) 1 ⊗ₜ[k] (S.metric (S.τ c)) 1)))))) k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ fromPairT
((TensorProduct.comm k (V c) (V (S.τ c)))
((LinearEquiv.lTensor (V c) (TensorProduct.lid k (V (S.τ c))))
((LinearMap.lTensor (V c) (LinearMap.rTensor (V (S.τ c)) (S.contr c).toLinearMap))
((LinearEquiv.lTensor (V c) (TensorProduct.assoc k (V c) (V (S.τ c)) (V (S.τ c))).symm)
((TensorProduct.assoc k (V c) (V c) (TensorProduct k (V (S.τ c)) (V (S.τ c))))
((S.metric c) 1 ⊗ₜ[k] (S.metric (S.τ c)) 1)))))) =
fromPairT
((TensorProduct.comm k (V c) (V (S.τ c)))
((LinearEquiv.lTensor (V c) (TensorProduct.lid k (V (S.τ c))))
((LinearMap.lTensor (V c) (LinearMap.rTensor (V (S.τ c)) (S.contr c).toLinearMap))
((LinearMap.lTensor (V c) ↑(TensorProduct.assoc k (V c) (V (S.τ c)) (V (S.τ c))).symm)
((TensorProduct.assoc k (V c) (V c) (TensorProduct k (V (S.τ c)) (V (S.τ c))))
((S.metric c) 1 ⊗ₜ[k] (S.metric (S.τ c)) 1))))))] k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ fromPairT
((TensorProduct.comm k (V c) (V (S.τ c)))
((LinearEquiv.lTensor (V c) (TensorProduct.lid k (V (S.τ c))))
((LinearMap.lTensor (V c) (LinearMap.rTensor (V (S.τ c)) (S.contr c).toLinearMap))
((LinearEquiv.lTensor (V c) (TensorProduct.assoc k (V c) (V (S.τ c)) (V (S.τ c))).symm)
((TensorProduct.assoc k (V c) (V c) (TensorProduct k (V (S.τ c)) (V (S.τ c))))
((S.metric c) 1 ⊗ₜ[k] (S.metric (S.τ c)) 1)))))) =
fromPairT
((TensorProduct.comm k (V c) (V (S.τ c)))
((LinearEquiv.lTensor (V c) (TensorProduct.lid k (V (S.τ c))))
((LinearMap.lTensor (V c) (LinearMap.rTensor (V (S.τ c)) (S.contr c).toLinearMap))
((LinearMap.lTensor (V c) ↑(TensorProduct.assoc k (V c) (V (S.τ c)) (V (S.τ c))).symm)
((TensorProduct.assoc k (V c) (V c) (TensorProduct k (V (S.τ c)) (V (S.τ c))))
((S.metric c) 1 ⊗ₜ[k] (S.metric (S.τ c)) 1))))))
rfl All goals completed! 🐙
lemma fromPairTContr_metric_metric_eq_permT_unit {c : C} :
fromPairTContr ((S.metric c) (1 : k))
((S.metric (S.τ c)) (1 : k)) =
permT ![1, 0] (And.intro (by k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ Function.Bijective ![1, 0] decide All goals completed! 🐙) (fun i => by k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Ci:Fin (Nat.succ 0).succ⊢ ![S.τ c, c] (![1, 0] i) = ![c, S.τ c] i fin_cases i «0» k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ ![S.τ c, c] (![1, 0] ((fun i => i) ⟨0, ⋯⟩)) = ![c, S.τ c] ((fun i => i) ⟨0, ⋯⟩)«1» k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ ![S.τ c, c] (![1, 0] ((fun i => i) ⟨1, ⋯⟩)) = ![c, S.τ c] ((fun i => i) ⟨1, ⋯⟩) <;> «0» k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ ![S.τ c, c] (![1, 0] ((fun i => i) ⟨0, ⋯⟩)) = ![c, S.τ c] ((fun i => i) ⟨0, ⋯⟩)«1» k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ ![S.τ c, c] (![1, 0] ((fun i => i) ⟨1, ⋯⟩)) = ![c, S.τ c] ((fun i => i) ⟨1, ⋯⟩) rfl All goals completed! 🐙))
(unitTensor c) := by k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ fromPairTContr ((S.metric c) 1) ((S.metric (S.τ c)) 1) = (permT ![1, 0] ⋯) (unitTensor c)
rw [← permT_fromPairTContr_metric_metric k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ fromPairTContr ((S.metric c) 1) ((S.metric (S.τ c)) 1) =
(permT ![1, 0] ⋯) ((permT ![1, 0] ⋯) (fromPairTContr ((S.metric c) 1) ((S.metric (S.τ c)) 1))) k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ fromPairTContr ((S.metric c) 1) ((S.metric (S.τ c)) 1) =
(permT ![1, 0] ⋯) ((permT ![1, 0] ⋯) (fromPairTContr ((S.metric c) 1) ((S.metric (S.τ c)) 1)))] k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ fromPairTContr ((S.metric c) 1) ((S.metric (S.τ c)) 1) =
(permT ![1, 0] ⋯) ((permT ![1, 0] ⋯) (fromPairTContr ((S.metric c) 1) ((S.metric (S.τ c)) 1)))
rw [permT_permT k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ fromPairTContr ((S.metric c) 1) ((S.metric (S.τ c)) 1) =
(permT (![1, 0] ∘ ![1, 0]) ⋯) (fromPairTContr ((S.metric c) 1) ((S.metric (S.τ c)) 1)) k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ fromPairTContr ((S.metric c) 1) ((S.metric (S.τ c)) 1) =
(permT (![1, 0] ∘ ![1, 0]) ⋯) (fromPairTContr ((S.metric c) 1) ((S.metric (S.τ c)) 1))] k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ fromPairTContr ((S.metric c) 1) ((S.metric (S.τ c)) 1) =
(permT (![1, 0] ∘ ![1, 0]) ⋯) (fromPairTContr ((S.metric c) 1) ((S.metric (S.τ c)) 1))
symm k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ (permT (![1, 0] ∘ ![1, 0]) ⋯) (fromPairTContr ((S.metric c) 1) ((S.metric (S.τ c)) 1)) =
fromPairTContr ((S.metric c) 1) ((S.metric (S.τ c)) 1)
apply permT_congr_eq_id k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ ![1, 0] ∘ ![1, 0] = id
decide All goals completed! 🐙
The contraction of the metric tensor with its dual gives the unit tensor.
This is the de-categorification of S.contr_metric.
@[simp]
lemma contrT_metricTensor_metricTensor {c : C} :
contrT 2 1 2 (by k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ 1 ≠ 2 ∧ S.τ (Fin.append ![c, c] ![S.τ c, S.τ c] 1) = Fin.append ![c, c] ![S.τ c, S.τ c] 2 simp k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ S.τ (Fin.append ![c, c] ![S.τ c, S.τ c] 1) = Fin.append ![c, c] ![S.τ c, S.τ c] 2; rfl All goals completed! 🐙) (prodT (metricTensor c) (metricTensor (S.τ c))) =
permT ![1, 0] (And.intro (by k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ Function.Bijective ![1, 0] decide All goals completed! 🐙) (fun i => by k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Ci:Fin (Nat.succ 0).succ⊢ ![S.τ c, c] (![1, 0] i) = (Fin.append ![c, c] ![S.τ c, S.τ c] ∘ Fin.succSuccAbove 1 2) i fin_cases i «0» k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ ![S.τ c, c] (![1, 0] ((fun i => i) ⟨0, ⋯⟩)) =
(Fin.append ![c, c] ![S.τ c, S.τ c] ∘ Fin.succSuccAbove 1 2) ((fun i => i) ⟨0, ⋯⟩)«1» k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ ![S.τ c, c] (![1, 0] ((fun i => i) ⟨1, ⋯⟩)) =
(Fin.append ![c, c] ![S.τ c, S.τ c] ∘ Fin.succSuccAbove 1 2) ((fun i => i) ⟨1, ⋯⟩) <;> «0» k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ ![S.τ c, c] (![1, 0] ((fun i => i) ⟨0, ⋯⟩)) =
(Fin.append ![c, c] ![S.τ c, S.τ c] ∘ Fin.succSuccAbove 1 2) ((fun i => i) ⟨0, ⋯⟩)«1» k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ ![S.τ c, c] (![1, 0] ((fun i => i) ⟨1, ⋯⟩)) =
(Fin.append ![c, c] ![S.τ c, S.τ c] ∘ Fin.succSuccAbove 1 2) ((fun i => i) ⟨1, ⋯⟩) rfl All goals completed! 🐙))
(unitTensor (S := S) c) := by k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ (contrT 2 1 2 ⋯) ((prodT (metricTensor c)) (metricTensor (S.τ c))) = (permT ![1, 0] ⋯) (unitTensor c)
rw [metricTensor, k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ (contrT 2 1 2 ⋯) ((prodT (fromConstPair (S.metric c))) (metricTensor (S.τ c))) = (permT ![1, 0] ⋯) (unitTensor c) k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ (contrT 2 1 2 ⋯) ((prodT (fromPairT ((S.metric c) 1))) (fromPairT ((S.metric (S.τ c)) 1))) =
(permT ![1, 0] ⋯) (unitTensor c) metricTensor, k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ (contrT 2 1 2 ⋯) ((prodT (fromConstPair (S.metric c))) (fromConstPair (S.metric (S.τ c)))) =
(permT ![1, 0] ⋯) (unitTensor c) k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ (contrT 2 1 2 ⋯) ((prodT (fromPairT ((S.metric c) 1))) (fromPairT ((S.metric (S.τ c)) 1))) =
(permT ![1, 0] ⋯) (unitTensor c) fromConstPair, k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ (contrT 2 1 2 ⋯) ((prodT (fromPairT ((S.metric c) 1))) (fromConstPair (S.metric (S.τ c)))) =
(permT ![1, 0] ⋯) (unitTensor c) k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ (contrT 2 1 2 ⋯) ((prodT (fromPairT ((S.metric c) 1))) (fromPairT ((S.metric (S.τ c)) 1))) =
(permT ![1, 0] ⋯) (unitTensor c) fromConstPair k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ (contrT 2 1 2 ⋯) ((prodT (fromPairT ((S.metric c) 1))) (fromPairT ((S.metric (S.τ c)) 1))) =
(permT ![1, 0] ⋯) (unitTensor c) k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ (contrT 2 1 2 ⋯) ((prodT (fromPairT ((S.metric c) 1))) (fromPairT ((S.metric (S.τ c)) 1))) =
(permT ![1, 0] ⋯) (unitTensor c)] k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ (contrT 2 1 2 ⋯) ((prodT (fromPairT ((S.metric c) 1))) (fromPairT ((S.metric (S.τ c)) 1))) =
(permT ![1, 0] ⋯) (unitTensor c)
rw [fromPairT_contr_fromPairT_eq_fromPairTContr k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ (permT id ⋯) (fromPairTContr ((S.metric c) 1) ((S.metric (S.τ c)) 1)) = (permT ![1, 0] ⋯) (unitTensor c) k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ (permT id ⋯) (fromPairTContr ((S.metric c) 1) ((S.metric (S.τ c)) 1)) = (permT ![1, 0] ⋯) (unitTensor c)] k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ (permT id ⋯) (fromPairTContr ((S.metric c) 1) ((S.metric (S.τ c)) 1)) = (permT ![1, 0] ⋯) (unitTensor c)
erw [fromPairTContr_metric_metric_eq_permT_unit k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ (permT id ⋯) ((permT ![1, 0] ⋯) (unitTensor c)) = (permT ![1, 0] ⋯) (unitTensor c)] k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ (permT id ⋯) ((permT ![1, 0] ⋯) (unitTensor c)) = (permT ![1, 0] ⋯) (unitTensor c)
rw [permT_permT k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ (permT (![1, 0] ∘ id) ⋯) (unitTensor c) = (permT ![1, 0] ⋯) (unitTensor c) k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ (permT (![1, 0] ∘ id) ⋯) (unitTensor c) = (permT ![1, 0] ⋯) (unitTensor c)] k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ (permT (![1, 0] ∘ id) ⋯) (unitTensor c) = (permT ![1, 0] ⋯) (unitTensor c)
rfl All goals completed! 🐙
lemma contrT_metricTensor_metricTensor_eq_dual_unit {c : C} :
contrT 2 1 2 (by k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ 1 ≠ 2 ∧ S.τ (Fin.append ![c, c] ![S.τ c, S.τ c] 1) = Fin.append ![c, c] ![S.τ c, S.τ c] 2 simp k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ S.τ (Fin.append ![c, c] ![S.τ c, S.τ c] 1) = Fin.append ![c, c] ![S.τ c, S.τ c] 2; rfl All goals completed! 🐙) (prodT (metricTensor c) (metricTensor (S.τ c))) =
permT ![0, 1] (And.intro (by k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ Function.Bijective ![0, 1] decide All goals completed! 🐙) (fun i => by k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Ci:Fin (Nat.succ 0).succ⊢ ![S.τ (S.τ c), S.τ c] (![0, 1] i) = (Fin.append ![c, c] ![S.τ c, S.τ c] ∘ Fin.succSuccAbove 1 2) i
fin_cases i «0» k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ ![S.τ (S.τ c), S.τ c] (![0, 1] ((fun i => i) ⟨0, ⋯⟩)) =
(Fin.append ![c, c] ![S.τ c, S.τ c] ∘ Fin.succSuccAbove 1 2) ((fun i => i) ⟨0, ⋯⟩)«1» k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ ![S.τ (S.τ c), S.τ c] (![0, 1] ((fun i => i) ⟨1, ⋯⟩)) =
(Fin.append ![c, c] ![S.τ c, S.τ c] ∘ Fin.succSuccAbove 1 2) ((fun i => i) ⟨1, ⋯⟩)
· «0» k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ ![S.τ (S.τ c), S.τ c] (![0, 1] ((fun i => i) ⟨0, ⋯⟩)) =
(Fin.append ![c, c] ![S.τ c, S.τ c] ∘ Fin.succSuccAbove 1 2) ((fun i => i) ⟨0, ⋯⟩) change S.τ (S.τ c) = c «0» k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ S.τ (S.τ c) = c
simp All goals completed! 🐙
· «1» k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ ![S.τ (S.τ c), S.τ c] (![0, 1] ((fun i => i) ⟨1, ⋯⟩)) =
(Fin.append ![c, c] ![S.τ c, S.τ c] ∘ Fin.succSuccAbove 1 2) ((fun i => i) ⟨1, ⋯⟩) rfl All goals completed! 🐙))
(unitTensor (S := S) (S.τ c)) := by k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ (contrT 2 1 2 ⋯) ((prodT (metricTensor c)) (metricTensor (S.τ c))) = (permT ![0, 1] ⋯) (unitTensor (S.τ c))
rw [contrT_metricTensor_metricTensor k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ (permT ![1, 0] ⋯) (unitTensor c) = (permT ![0, 1] ⋯) (unitTensor (S.τ c)) k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ (permT ![1, 0] ⋯) (unitTensor c) = (permT ![0, 1] ⋯) (unitTensor (S.τ c))] k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ (permT ![1, 0] ⋯) (unitTensor c) = (permT ![0, 1] ⋯) (unitTensor (S.τ c))
rw [unitTensor_eq_permT_dual k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ (permT ![1, 0] ⋯) ((permT ![1, 0] ⋯) (unitTensor (S.τ c))) = (permT ![0, 1] ⋯) (unitTensor (S.τ c)) k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ (permT ![1, 0] ⋯) ((permT ![1, 0] ⋯) (unitTensor (S.τ c))) = (permT ![0, 1] ⋯) (unitTensor (S.τ c))] k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ (permT ![1, 0] ⋯) ((permT ![1, 0] ⋯) (unitTensor (S.τ c))) = (permT ![0, 1] ⋯) (unitTensor (S.τ c))
rw [permT_permT k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ (permT (![1, 0] ∘ ![1, 0]) ⋯) (unitTensor (S.τ c)) = (permT ![0, 1] ⋯) (unitTensor (S.τ c)) k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ (permT (![1, 0] ∘ ![1, 0]) ⋯) (unitTensor (S.τ c)) = (permT ![0, 1] ⋯) (unitTensor (S.τ c))] k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ (permT (![1, 0] ∘ ![1, 0]) ⋯) (unitTensor (S.τ c)) = (permT ![0, 1] ⋯) (unitTensor (S.τ c))
apply permT_congr hmap k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ ![1, 0] ∘ ![1, 0] = ![0, 1]htensor k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ unitTensor (S.τ c) = unitTensor (S.τ c)
· hmap k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ ![1, 0] ∘ ![1, 0] = ![0, 1] decide All goals completed! 🐙
· htensor k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ unitTensor (S.τ c) = unitTensor (S.τ c) rfl All goals completed! 🐙
set_option backward.isDefEq.respectTransparency false in
@[simp]
lemma contrT_dual_metricTensor_metricTensor {c : C} :
contrT 2 1 2 (by k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ 1 ≠ 2 ∧ S.τ (Fin.append ![S.τ c, S.τ c] ![c, c] 1) = Fin.append ![S.τ c, S.τ c] ![c, c] 2 change _ ∧ S.τ (S.τ c) = c k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ 1 ≠ 2 ∧ S.τ (S.τ c) = c; simp All goals completed! 🐙)
(prodT (metricTensor (S.τ c)) (metricTensor c)) =
permT id (by k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ IsReindexing ![S.τ c, c] (Fin.append ![S.τ c, S.τ c] ![c, c] ∘ Fin.succSuccAbove 1 2) id simp k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ S.τ c = Fin.append ![S.τ c, S.τ c] ![c, c] (Fin.succSuccAbove 1 2 0) ∧
c = Fin.append ![S.τ c, S.τ c] ![c, c] (Fin.succSuccAbove 1 2 1); exact ⟨rfl,rfl⟩ All goals completed! 🐙) (unitTensor (S := S) c) := by k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ (contrT 2 1 2 ⋯) ((prodT (metricTensor (S.τ c))) (metricTensor c)) = (permT id ⋯) (unitTensor c)
have hm := S.metricTensor_congr (by k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ c = S.τ (S.τ c) k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Chm:metricTensor c = (permT id ⋯) (metricTensor (S.τ (S.τ c)))⊢ (contrT 2 1 2 ⋯) ((prodT (metricTensor (S.τ c))) (metricTensor c)) = (permT id ⋯) (unitTensor c) simp All goals completed! 🐙 k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Chm:metricTensor c = (permT id ⋯) (metricTensor (S.τ (S.τ c)))⊢ (contrT 2 1 2 ⋯) ((prodT (metricTensor (S.τ c))) (metricTensor c)) = (permT id ⋯) (unitTensor c) : c = S.τ (S.τ c)) k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Chm:metricTensor c = (permT id ⋯) (metricTensor (S.τ (S.τ c)))⊢ (contrT 2 1 2 ⋯) ((prodT (metricTensor (S.τ c))) (metricTensor c)) = (permT id ⋯) (unitTensor c)
rw [hm k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Chm:metricTensor c = (permT id ⋯) (metricTensor (S.τ (S.τ c)))⊢ (contrT 2 1 2 ⋯) ((prodT (metricTensor (S.τ c))) ((permT id ⋯) (metricTensor (S.τ (S.τ c))))) =
(permT id ⋯) (unitTensor c) k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Chm:metricTensor c = (permT id ⋯) (metricTensor (S.τ (S.τ c)))⊢ (contrT 2 1 2 ⋯) ((prodT (metricTensor (S.τ c))) ((permT id ⋯) (metricTensor (S.τ (S.τ c))))) =
(permT id ⋯) (unitTensor c)] k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Chm:metricTensor c = (permT id ⋯) (metricTensor (S.τ (S.τ c)))⊢ (contrT 2 1 2 ⋯) ((prodT (metricTensor (S.τ c))) ((permT id ⋯) (metricTensor (S.τ (S.τ c))))) =
(permT id ⋯) (unitTensor c)
rw [prodT_permT_right, k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Chm:metricTensor c = (permT id ⋯) (metricTensor (S.τ (S.τ c)))⊢ (contrT 2 1 2 ⋯)
((permT (Fin.append (Fin.castAdd (Nat.succ 0).succ) (Fin.natAdd (Nat.succ 0).succ ∘ id)) ⋯)
((prodT (metricTensor (S.τ c))) (metricTensor (S.τ (S.τ c))))) =
(permT id ⋯) (unitTensor c) k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Chm:metricTensor c = (permT id ⋯) (metricTensor (S.τ (S.τ c)))⊢ (permT (Fin.funPredPredAbove 1 2 ⋯ (Fin.append (Fin.castAdd (Nat.succ 0).succ) (Fin.natAdd (Nat.succ 0).succ ∘ id)) ⋯)
⋯)
((contrT 2 (Fin.append (Fin.castAdd (Nat.succ 0).succ) (Fin.natAdd (Nat.succ 0).succ ∘ id) 1)
(Fin.append (Fin.castAdd (Nat.succ 0).succ) (Fin.natAdd (Nat.succ 0).succ ∘ id) 2) ⋯)
((prodT (metricTensor (S.τ c))) (metricTensor (S.τ (S.τ c))))) =
(permT id ⋯) (unitTensor c) contrT_permT k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Chm:metricTensor c = (permT id ⋯) (metricTensor (S.τ (S.τ c)))⊢ (permT (Fin.funPredPredAbove 1 2 ⋯ (Fin.append (Fin.castAdd (Nat.succ 0).succ) (Fin.natAdd (Nat.succ 0).succ ∘ id)) ⋯)
⋯)
((contrT 2 (Fin.append (Fin.castAdd (Nat.succ 0).succ) (Fin.natAdd (Nat.succ 0).succ ∘ id) 1)
(Fin.append (Fin.castAdd (Nat.succ 0).succ) (Fin.natAdd (Nat.succ 0).succ ∘ id) 2) ⋯)
((prodT (metricTensor (S.τ c))) (metricTensor (S.τ (S.τ c))))) =
(permT id ⋯) (unitTensor c) k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Chm:metricTensor c = (permT id ⋯) (metricTensor (S.τ (S.τ c)))⊢ (permT (Fin.funPredPredAbove 1 2 ⋯ (Fin.append (Fin.castAdd (Nat.succ 0).succ) (Fin.natAdd (Nat.succ 0).succ ∘ id)) ⋯)
⋯)
((contrT 2 (Fin.append (Fin.castAdd (Nat.succ 0).succ) (Fin.natAdd (Nat.succ 0).succ ∘ id) 1)
(Fin.append (Fin.castAdd (Nat.succ 0).succ) (Fin.natAdd (Nat.succ 0).succ ∘ id) 2) ⋯)
((prodT (metricTensor (S.τ c))) (metricTensor (S.τ (S.τ c))))) =
(permT id ⋯) (unitTensor c)] k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Chm:metricTensor c = (permT id ⋯) (metricTensor (S.τ (S.τ c)))⊢ (permT (Fin.funPredPredAbove 1 2 ⋯ (Fin.append (Fin.castAdd (Nat.succ 0).succ) (Fin.natAdd (Nat.succ 0).succ ∘ id)) ⋯)
⋯)
((contrT 2 (Fin.append (Fin.castAdd (Nat.succ 0).succ) (Fin.natAdd (Nat.succ 0).succ ∘ id) 1)
(Fin.append (Fin.castAdd (Nat.succ 0).succ) (Fin.natAdd (Nat.succ 0).succ ∘ id) 2) ⋯)
((prodT (metricTensor (S.τ c))) (metricTensor (S.τ (S.τ c))))) =
(permT id ⋯) (unitTensor c)
conv_lhs =>
enter [2] k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Chm:metricTensor c = (permT id ⋯) (metricTensor (S.τ (S.τ c)))| (contrT 2 (Fin.append (Fin.castAdd (Nat.succ 0).succ) (Fin.natAdd (Nat.succ 0).succ ∘ id) 1)
(Fin.append (Fin.castAdd (Nat.succ 0).succ) (Fin.natAdd (Nat.succ 0).succ ∘ id) 2) ⋯)
((prodT (metricTensor (S.τ c))) (metricTensor (S.τ (S.τ c))))
change contrT 2 1 2 _ _ k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Chm:metricTensor c = (permT id ⋯) (metricTensor (S.τ (S.τ c)))| (contrT 2 1 2 ⋯) ((prodT (metricTensor (S.τ c))) (metricTensor (S.τ (S.τ c))))
rw [contrT_metricTensor_metricTensor] k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Chm:metricTensor c = (permT id ⋯) (metricTensor (S.τ (S.τ c)))| (permT ![1, 0] ⋯) (unitTensor (S.τ c))
simp only [Nat.reduceAdd, Nat.succ_eq_add_one, Fin.isValue] k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Chm:metricTensor c = (permT id ⋯) (metricTensor (S.τ (S.τ c)))⊢ (permT (Fin.funPredPredAbove 1 2 ⋯ (Fin.append (Fin.castAdd 2) (Fin.natAdd 2 ∘ id)) ⋯) ⋯)
((permT ![1, 0] ⋯) (unitTensor (S.τ c))) =
(permT id ⋯) (unitTensor c)
conv_rhs => rw [unitTensor_eq_permT_dual] k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Chm:metricTensor c = (permT id ⋯) (metricTensor (S.τ (S.τ c)))| (permT id ⋯) ((permT ![1, 0] ⋯) (unitTensor (S.τ c)))
simp only [Fin.isValue, Nat.succ_eq_add_one, Nat.reduceAdd, permT_permT, CompTriple.comp_eq] k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Chm:metricTensor c = (permT id ⋯) (metricTensor (S.τ (S.τ c)))⊢ (permT (Fin.funPredPredAbove 1 2 ⋯ (Fin.append (Fin.castAdd 2) (Fin.natAdd 2 ∘ id)) ⋯) ⋯)
((permT ![1, 0] ⋯) (unitTensor (S.τ c))) =
(permT ![1, 0] ⋯) (unitTensor (S.τ c))
rw (transparency := .instances) [permT_permT k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Chm:metricTensor c = (permT id ⋯) (metricTensor (S.τ (S.τ c)))⊢ (permT (![1, 0] ∘ Fin.funPredPredAbove 1 2 ⋯ (Fin.append (Fin.castAdd 2) (Fin.natAdd 2 ∘ id)) ⋯) ⋯)
(unitTensor (S.τ c)) =
(permT ![1, 0] ⋯) (unitTensor (S.τ c)) k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Chm:metricTensor c = (permT id ⋯) (metricTensor (S.τ (S.τ c)))⊢ (permT (![1, 0] ∘ Fin.funPredPredAbove 1 2 ⋯ (Fin.append (Fin.castAdd 2) (Fin.natAdd 2 ∘ id)) ⋯) ⋯)
(unitTensor (S.τ c)) =
(permT ![1, 0] ⋯) (unitTensor (S.τ c))] k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Chm:metricTensor c = (permT id ⋯) (metricTensor (S.τ (S.τ c)))⊢ (permT (![1, 0] ∘ Fin.funPredPredAbove 1 2 ⋯ (Fin.append (Fin.castAdd 2) (Fin.natAdd 2 ∘ id)) ⋯) ⋯)
(unitTensor (S.τ c)) =
(permT ![1, 0] ⋯) (unitTensor (S.τ c))
apply permT_congr hmap k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Chm:metricTensor c = (permT id ⋯) (metricTensor (S.τ (S.τ c)))⊢ ![1, 0] ∘ Fin.funPredPredAbove 1 2 ⋯ (Fin.append (Fin.castAdd 2) (Fin.natAdd 2 ∘ id)) ⋯ = ![1, 0]htensor k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Chm:metricTensor c = (permT id ⋯) (metricTensor (S.τ (S.τ c)))⊢ unitTensor (S.τ c) = unitTensor (S.τ c)
· hmap k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Chm:metricTensor c = (permT id ⋯) (metricTensor (S.τ (S.τ c)))⊢ ![1, 0] ∘ Fin.funPredPredAbove 1 2 ⋯ (Fin.append (Fin.castAdd 2) (Fin.natAdd 2 ∘ id)) ⋯ = ![1, 0] ext i hmap k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Chm:metricTensor c = (permT id ⋯) (metricTensor (S.τ (S.τ c)))i:Fin 2⊢ ↑((![1, 0] ∘ Fin.funPredPredAbove 1 2 ⋯ (Fin.append (Fin.castAdd 2) (Fin.natAdd 2 ∘ id)) ⋯) i) = ↑(![1, 0] i)
fin_cases i hmap.«0» k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Chm:metricTensor c = (permT id ⋯) (metricTensor (S.τ (S.τ c)))⊢ ↑((![1, 0] ∘ Fin.funPredPredAbove 1 2 ⋯ (Fin.append (Fin.castAdd 2) (Fin.natAdd 2 ∘ id)) ⋯) ((fun i => i) ⟨0, ⋯⟩)) =
↑(![1, 0] ((fun i => i) ⟨0, ⋯⟩))hmap.«1» k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Chm:metricTensor c = (permT id ⋯) (metricTensor (S.τ (S.τ c)))⊢ ↑((![1, 0] ∘ Fin.funPredPredAbove 1 2 ⋯ (Fin.append (Fin.castAdd 2) (Fin.natAdd 2 ∘ id)) ⋯) ((fun i => i) ⟨1, ⋯⟩)) =
↑(![1, 0] ((fun i => i) ⟨1, ⋯⟩)) <;> hmap.«0» k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Chm:metricTensor c = (permT id ⋯) (metricTensor (S.τ (S.τ c)))⊢ ↑((![1, 0] ∘ Fin.funPredPredAbove 1 2 ⋯ (Fin.append (Fin.castAdd 2) (Fin.natAdd 2 ∘ id)) ⋯) ((fun i => i) ⟨0, ⋯⟩)) =
↑(![1, 0] ((fun i => i) ⟨0, ⋯⟩))hmap.«1» k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Chm:metricTensor c = (permT id ⋯) (metricTensor (S.τ (S.τ c)))⊢ ↑((![1, 0] ∘ Fin.funPredPredAbove 1 2 ⋯ (Fin.append (Fin.castAdd 2) (Fin.natAdd 2 ∘ id)) ⋯) ((fun i => i) ⟨1, ⋯⟩)) =
↑(![1, 0] ((fun i => i) ⟨1, ⋯⟩)) rfl All goals completed! 🐙
· htensor k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Chm:metricTensor c = (permT id ⋯) (metricTensor (S.τ (S.τ c)))⊢ unitTensor (S.τ c) = unitTensor (S.τ c) rfl All goals completed! 🐙