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.ComponentIdx.BasicComponent indices for one-index tensors
i. Overview
This file defines the canonical equivalence between component indices for a single color and the basis indices of that color.
ii. Key results
TensorSpecies.Tensor.ComponentIdx.single is the equivalence between
ComponentIdx ![c] and basisIdx c.
TensorSpecies.Tensor.ComponentIdx.single_apply and
TensorSpecies.Tensor.ComponentIdx.single_symm_apply are simp lemmas for the two
directions of this equivalence.
iii. Table of contents
A. Single-index equivalence
iv. References
There are no known references for the material in this module.
@[expose] public sectionA. Single-index equivalence
The equivalence between component indices for a single color and the basis indices of that color.
def ComponentIdx.single {c : C} :
ComponentIdx (S := S) ![c] ≃ basisIdx c where
toFun b := basisIdxCongr (k:Typeinst✝⁵:CommRing 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 b✝c:Cb:ComponentIdx ![c]⊢ ![c] 0 = c All goals completed! 🐙) (b 0)
invFun b := fun _ => basisIdxCongr (k:Typeinst✝⁵:CommRing 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 b✝c:Cb:basisIdx cx✝:Fin (Nat.succ 0)⊢ c = ![c] x✝ All goals completed! 🐙) b
left_inv b := k:Typeinst✝⁵:CommRing 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 b✝c:Cb:ComponentIdx ![c]⊢ (fun b x => (basisIdxCongr ⋯) b) ((fun b => (basisIdxCongr ⋯) (b 0)) b) = b
k:Typeinst✝⁵:CommRing 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 b✝c:Cb:ComponentIdx ![c]i:Fin (Nat.succ 0)⊢ (fun b x => (basisIdxCongr ⋯) b) ((fun b => (basisIdxCongr ⋯) (b 0)) b) i = b i
k:Typeinst✝⁵:CommRing 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 b✝c:Cb:ComponentIdx ![c]⊢ (fun b x => (basisIdxCongr ⋯) b) ((fun b => (basisIdxCongr ⋯) (b 0)) b) 0 = b 0
k:Typeinst✝⁵:CommRing 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 b✝c:Cb:ComponentIdx ![c]⊢ (Equiv.refl (basisIdx c)) ((Equiv.refl (basisIdx c)) (b 0)) = b 0
All goals completed! 🐙
right_inv b := k:Typeinst✝⁵:CommRing 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 b✝c:Cb:basisIdx c⊢ (fun b => (basisIdxCongr ⋯) (b 0)) ((fun b x => (basisIdxCongr ⋯) b) b) = b
k:Typeinst✝⁵:CommRing 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 b✝c:Cb:basisIdx c⊢ (Equiv.refl (basisIdx c)) ((Equiv.refl (basisIdx c)) b) = b
All goals completed! 🐙@[simp]
lemma ComponentIdx.single_apply {c : C} (b : ComponentIdx (S := S) ![c]) :
ComponentIdx.single (S := S) b = basisIdxCongr (k:Typeinst✝⁵:CommRing 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 b✝c:Cb:ComponentIdx ![c]⊢ ![c] 0 = c All goals completed! 🐙) (b 0) := rfl@[simp]
lemma ComponentIdx.single_symm_apply {c : C} (b : basisIdx c) (i : Fin 1) :
(ComponentIdx.single (S := S) (c := c)).symm b i = basisIdxCongr (k:Typeinst✝⁵:CommRing 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 b✝c:Cb:basisIdx ci:Fin 1⊢ c = ![c] i All goals completed! 🐙) b := rfl