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.Basic public import Physlib.Relativity.Tensors.Contraction.SuccSuccAbove

Contractions of component indices

i. Overview

This file contains the component-index API induced by dropping a pair of contracted indices from a tensor.

The constructions here describe how component indices restrict along Fin.succSuccAbove, and how the fiber of this restriction is equivalent to the two component choices at the contracted positions.

ii. Key results

    TensorSpecies.Tensor.ComponentIdx.dropPair restricts a component index by dropping two positions.

    TensorSpecies.Tensor.ComponentIdx.DropPairSection is the finite set of component indices mapping to a fixed restricted component index.

    TensorSpecies.Tensor.ComponentIdx.DropPairSection.ofFinEquiv identifies a DropPairSection with the two basis indices at the dropped positions.

iii. Table of contents

    A. Dropping a pair

    B. Sections of the drop-pair map

iv. References

There are no known references for the material in this module.

@[expose] public section

A. Dropping a pair

The ComponentIdx obtained by dropping two components.

def dropPair {n : } {c : Fin (n + 1 + 1) C} (i j : Fin (n + 1 + 1)) (b : ComponentIdx (S := S) c) : ComponentIdx (S := S) (c Fin.succSuccAbove i j) := fun m => b (Fin.succSuccAbove i j m)

B. Sections of the drop-pair map

Given a coordinate parameter b : Π k, Fin (S.repDim ((c ∘ i.succAbove ∘ j.succAbove) k))), the coordinate parameter Π k, Fin (S.repDim (c k)) which map down to b.

def DropPairSection {n : } {c : Fin (n + 1 + 1) C} {i : Fin (n + 1 + 1)} {j : Fin (n + 1 + 1)} (b : ComponentIdx (S := S) (c Fin.succSuccAbove i j)) : Finset (ComponentIdx (S := S) c) := {b' : ComponentIdx c | dropPair i j 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✝n:c:Fin (n + 1 + 1) Ci:Fin (n + 1 + 1)j:Fin (n + 1 + 1)b:ComponentIdx (c i.succSuccAbove j)b':ComponentIdx c(∀ (x : Fin n), dropPair i j b' x = b x) (m : Fin n), b' (i.succSuccAbove j m) = b m All goals completed! 🐙@[simp] lemma mem_self_of_dropPair {n : } {c : Fin (n + 1 + 1) C} {i j : Fin (n + 1 + 1)} (b : ComponentIdx (c)) : b DropPairSection (S := S) (b.dropPair i j) := 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✝n:c:Fin (n + 1 + 1) Ci:Fin (n + 1 + 1)j:Fin (n + 1 + 1)b:ComponentIdx cb (dropPair i j b).DropPairSection All goals completed! 🐙

Given a b in ComponentIdx (c ∘ Fin.succSuccAbove i j)) and an x in Fin (S.repDim (c i)) × Fin (S.repDim (c j)), the corresponding coordinate parameter in ComponentIdx c.

unsolved goals k:Typeinst✝⁵:CommRing kC G: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✝n:c:Fin (n + 1 + 1) Ci j:Fin (n + 1 + 1)hij:i jb:ComponentIdx (c i.succSuccAbove j)x:basisIdx (c i) × basisIdx (c j)m:Fin (n + 1 + 1)hi:¬m = ihj:¬m = jc (i.succSuccAbove j (i.predPredAbove j hij m ?m.127)) = c munsolved goals k:Typeinst✝⁵:CommRing kC G: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✝n:c:Fin (n + 1 + 1) Ci j:Fin (n + 1 + 1)hij:i jb:ComponentIdx (c i.succSuccAbove j)x:basisIdx (c i) × basisIdx (c j)m:Fin (n + 1 + 1)hi:¬m = ihj:¬m = jc (i.succSuccAbove j (i.predPredAbove j hij m ?m.127)) = c m def ofFin {n : } {c : Fin (n + 1 + 1) C} {i j : Fin (n + 1 + 1)} (hij : i j) (b : ComponentIdx (S := S) (c Fin.succSuccAbove i j)) (x : basisIdx (c i) × basisIdx (c j)) : ComponentIdx (S := S) c := fun m => if hi : m = i then 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✝n:c:Fin (n + 1 + 1) Ci:Fin (n + 1 + 1)j:Fin (n + 1 + 1)hij:i jb:ComponentIdx (c i.succSuccAbove j)x:basisIdx (c i) × basisIdx (c j)m:Fin (n + 1 + 1)hi:m = ic i = c m 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✝n:c:Fin (n + 1 + 1) Cj:Fin (n + 1 + 1)m:Fin (n + 1 + 1)hij:m jb:ComponentIdx (c m.succSuccAbove j)x:basisIdx (c m) × basisIdx (c j)c m = c m; All goals completed! 🐙) x.1 else if hj : m = j then 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✝n:c:Fin (n + 1 + 1) Ci:Fin (n + 1 + 1)j:Fin (n + 1 + 1)hij:i jb:ComponentIdx (c i.succSuccAbove j)x:basisIdx (c i) × basisIdx (c j)m:Fin (n + 1 + 1)hi:¬m = ihj:m = jc j = c m 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✝n:c:Fin (n + 1 + 1) Ci:Fin (n + 1 + 1)m:Fin (n + 1 + 1)hi:¬m = ihij:i mb:ComponentIdx (c i.succSuccAbove m)x:basisIdx (c i) × basisIdx (c m)c m = c m; All goals completed! 🐙) x.2 else basisIdxCongr (unsolved goals k:Typeinst✝⁵:CommRing kC G: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✝n:c:Fin (n + 1 + 1) Ci j:Fin (n + 1 + 1)hij:i jb:ComponentIdx (c i.succSuccAbove j)x:basisIdx (c i) × basisIdx (c j)m:Fin (n + 1 + 1)hi:¬m = ihj:¬m = jc (i.succSuccAbove j (i.predPredAbove j hij m ?m.127)) = c mk: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✝n:c:Fin (n + 1 + 1) Ci:Fin (n + 1 + 1)j:Fin (n + 1 + 1)hij:i jb:ComponentIdx (c i.succSuccAbove j)x:basisIdx (c i) × basisIdx (c j)m:Fin (n + 1 + 1)hi:¬m = ihj:¬m = j(c i.succSuccAbove j) (i.predPredAbove j hij m ?m.127) = c m 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✝n:c:Fin (n + 1 + 1) Ci:Fin (n + 1 + 1)j:Fin (n + 1 + 1)hij:i jb:ComponentIdx (c i.succSuccAbove j)x:basisIdx (c i) × basisIdx (c j)m:Fin (n + 1 + 1)hi:¬m = ihj:¬m = jc (i.succSuccAbove j (i.predPredAbove j hij m ?m.127)) = c m) (b (Fin.predPredAbove i j hij m (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✝n:c:Fin (n + 1 + 1) Ci:Fin (n + 1 + 1)j:Fin (n + 1 + 1)hij:i jb:ComponentIdx (c i.succSuccAbove j)x:basisIdx (c i) × basisIdx (c j)m:Fin (n + 1 + 1)hi:¬m = ihj:¬m = jm i m j All goals completed! 🐙)))
@[simp] lemma declaration uses `sorry`ofFin_apply_fst {n : } {c : Fin (n + 1 + 1) C} {i j : Fin (n + 1 + 1)} (hij : i j) (b : ComponentIdx (c Fin.succSuccAbove i j)) (x : basisIdx (c i) × basisIdx (c j)) : ofFin (S := S) hij b x i = x.1 := 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✝n:c:Fin (n + 1 + 1) Ci:Fin (n + 1 + 1)j:Fin (n + 1 + 1)hij:i jb:ComponentIdx (c i.succSuccAbove j)x:basisIdx (c i) × basisIdx (c j)ofFin hij b x i = x.1 All goals completed! 🐙@[simp] lemma declaration uses `sorry`ofFin_apply_snd {n : } {c : Fin (n + 1 + 1) C} {i j : Fin (n + 1 + 1)} (hij : i j) (b : ComponentIdx (c Fin.succSuccAbove i j)) (x : basisIdx (c i) × basisIdx (c j)) : ofFin (S := S) hij b x j = x.2 := 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✝n:c:Fin (n + 1 + 1) Ci:Fin (n + 1 + 1)j:Fin (n + 1 + 1)hij:i jb:ComponentIdx (c i.succSuccAbove j)x:basisIdx (c i) × basisIdx (c j)ofFin hij b x j = x.2 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✝n:c:Fin (n + 1 + 1) Ci:Fin (n + 1 + 1)j:Fin (n + 1 + 1)hij:i jb:ComponentIdx (c i.succSuccAbove j)x:basisIdx (c i) × basisIdx (c j) (h : j = i), (basisIdxCongr ) x.1 = x.2 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✝n:c:Fin (n + 1 + 1) Ci:Fin (n + 1 + 1)j:Fin (n + 1 + 1)hij:i jb:ComponentIdx (c i.succSuccAbove j)x:basisIdx (c i) × basisIdx (c j)h:j = i(basisIdxCongr ) x.1 = x.2 All goals completed! 🐙lemma declaration uses `sorry`ofFin_mem_succSuccAboveSection {n : } {c : Fin (n + 1 + 1) C} {i j : Fin (n + 1 + 1)} (hij : i j) (b : ComponentIdx (c Fin.succSuccAbove i j)) (x : basisIdx (c i) × basisIdx (c j)) : ofFin (S := S) hij b x DropPairSection 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✝n:c:Fin (n + 1 + 1) Ci:Fin (n + 1 + 1)j:Fin (n + 1 + 1)hij:i jb:ComponentIdx (c i.succSuccAbove j)x:basisIdx (c i) × basisIdx (c j)ofFin hij b x b.DropPairSection 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✝n:c:Fin (n + 1 + 1) Ci:Fin (n + 1 + 1)j:Fin (n + 1 + 1)hij:i jb:ComponentIdx (c i.succSuccAbove j)x:basisIdx (c i) × basisIdx (c j)dropPair i j (ofFin hij b x) = 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✝n:c:Fin (n + 1 + 1) Ci:Fin (n + 1 + 1)j:Fin (n + 1 + 1)hij:i jb:ComponentIdx (c i.succSuccAbove j)x:basisIdx (c i) × basisIdx (c j)m:Fin ndropPair i j (ofFin hij b x) m = b m 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✝n:c:Fin (n + 1 + 1) Ci:Fin (n + 1 + 1)j:Fin (n + 1 + 1)hij:i jb:ComponentIdx (c i.succSuccAbove j)x:basisIdx (c i) × basisIdx (c j)m:Fin n(basisIdxCongr ) (b (i.predPredAbove j hij (i.succSuccAbove j m) )) = b m 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✝n:c:Fin (n + 1 + 1) Ci:Fin (n + 1 + 1)j:Fin (n + 1 + 1)hij:i jb:ComponentIdx (c i.succSuccAbove j)x:basisIdx (c i) × basisIdx (c j)m:Fin nb m = (basisIdxCongr ) (b (i.predPredAbove j hij (i.succSuccAbove j m) )) 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✝n:c:Fin (n + 1 + 1) Ci:Fin (n + 1 + 1)j:Fin (n + 1 + 1)hij:i jb:ComponentIdx (c i.succSuccAbove j)x:basisIdx (c i) × basisIdx (c j)m:Fin nm = i.predPredAbove j hij (i.succSuccAbove j m) All goals completed! 🐙

The equivalence between ContrSection b and basisIdx (c i) × basisIdx (c j).

def declaration uses `sorry`ofFinEquiv {n : } {c : Fin n.succ.succ C} {i j : Fin (n + 1 + 1)} (hij : i j) (b : ComponentIdx (c Fin.succSuccAbove i j)) : basisIdx (c i) × basisIdx (c j) DropPairSection (S := S) b where invFun b' := b'.1 i, b'.1 j toFun x := ofFin hij b x, ofFin_mem_succSuccAboveSection hij b x 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✝n:c:Fin n.succ.succ Ci:Fin (n + 1 + 1)j:Fin (n + 1 + 1)hij:i jb:ComponentIdx (c i.succSuccAbove j)b':b.DropPairSection(fun x => ofFin hij b x, ) ((fun b' => (b' i, b' j)) 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✝n:c:Fin n.succ.succ Ci:Fin (n + 1 + 1)j:Fin (n + 1 + 1)hij:i jb:ComponentIdx (c i.succSuccAbove j)b':b.DropPairSectionm:Fin (n + 1 + 1)((fun x => ofFin hij b x, ) ((fun b' => (b' i, b' j)) b')) m = b' m 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✝n:c:Fin n.succ.succ Ci:Fin (n + 1 + 1)j:Fin (n + 1 + 1)hij:i jb:ComponentIdx (c i.succSuccAbove j)b':b.DropPairSectionm:Fin (n + 1 + 1)ofFin hij b (b' i, b' j) m = b' m 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✝n:c:Fin n.succ.succ Cj:Fin (n + 1 + 1)m:Fin (n + 1 + 1)hij:m jb:ComponentIdx (c m.succSuccAbove j)b':b.DropPairSectionofFin hij b (b' m, b' j) m = b' mk: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✝n:c:Fin n.succ.succ Ci:Fin (n + 1 + 1)m:Fin (n + 1 + 1)hij:i mb:ComponentIdx (c i.succSuccAbove m)b':b.DropPairSectionofFin hij b (b' i, b' m) m = b' mk: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✝n:c:Fin n.succ.succ Ci:Fin (n + 1 + 1)j:Fin (n + 1 + 1)hij:i jb:ComponentIdx (c i.succSuccAbove j)b':b.DropPairSectionm:Fin nofFin hij b (b' i, b' j) (i.succSuccAbove j m) = b' (i.succSuccAbove j m) 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✝n:c:Fin n.succ.succ Cj:Fin (n + 1 + 1)m:Fin (n + 1 + 1)hij:m jb:ComponentIdx (c m.succSuccAbove j)b':b.DropPairSectionofFin hij b (b' m, b' j) m = b' m All goals completed! 🐙 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✝n:c:Fin n.succ.succ Ci:Fin (n + 1 + 1)m:Fin (n + 1 + 1)hij:i mb:ComponentIdx (c i.succSuccAbove m)b':b.DropPairSectionofFin hij b (b' i, b' m) m = b' m All goals completed! 🐙 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✝n:c:Fin n.succ.succ Ci:Fin (n + 1 + 1)j:Fin (n + 1 + 1)hij:i jb:ComponentIdx (c i.succSuccAbove j)b':b.DropPairSectionm:Fin nofFin hij b (b' i, b' j) (i.succSuccAbove j m) = b' (i.succSuccAbove j m) 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✝n:c:Fin n.succ.succ Ci:Fin (n + 1 + 1)j:Fin (n + 1 + 1)hij:i jb:ComponentIdx (c i.succSuccAbove j)b':b.DropPairSectionm:Fin n(basisIdxCongr ) (b (i.predPredAbove j hij (i.succSuccAbove j m) )) = b' (i.succSuccAbove j m) 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✝n:c:Fin n.succ.succ Ci:Fin (n + 1 + 1)j:Fin (n + 1 + 1)hij:i jb:ComponentIdx (c i.succSuccAbove j)m:Fin nb':ComponentIdx chb':b' b.DropPairSection(basisIdxCongr ) (b (i.predPredAbove j hij (i.succSuccAbove j m) )) = b', hb' (i.succSuccAbove j m) 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✝n:c:Fin n.succ.succ Ci:Fin (n + 1 + 1)j:Fin (n + 1 + 1)hij:i jb:ComponentIdx (c i.succSuccAbove j)m:Fin nb':ComponentIdx chb'✝:b' b.DropPairSectionhb': (m : Fin n), b' (i.succSuccAbove j m) = b m(basisIdxCongr ) (b (i.predPredAbove j hij (i.succSuccAbove j m) )) = b', hb' (i.succSuccAbove j m) 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✝n:c:Fin n.succ.succ Ci:Fin (n + 1 + 1)j:Fin (n + 1 + 1)hij:i jb:ComponentIdx (c i.succSuccAbove j)m:Fin nb':ComponentIdx chb'✝:b' b.DropPairSectionhb': (m : Fin n), b' (i.succSuccAbove j m) = b m(basisIdxCongr ) (b (i.predPredAbove j hij (i.succSuccAbove j m) )) = b m 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✝n:c:Fin n.succ.succ Ci:Fin (n + 1 + 1)j:Fin (n + 1 + 1)hij:i jb:ComponentIdx (c i.succSuccAbove j)m:Fin nb':ComponentIdx chb'✝:b' b.DropPairSectionhb': (m : Fin n), b' (i.succSuccAbove j m) = b mb m = (basisIdxCongr ) (b (i.predPredAbove j hij (i.succSuccAbove j m) )) 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✝n:c:Fin n.succ.succ Ci:Fin (n + 1 + 1)j:Fin (n + 1 + 1)hij:i jb:ComponentIdx (c i.succSuccAbove j)m:Fin nb':ComponentIdx chb'✝:b' b.DropPairSectionhb': (m : Fin n), b' (i.succSuccAbove j m) = b mm = i.predPredAbove j hij (i.succSuccAbove j m) All goals completed! 🐙 left_inv x := 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✝n:c:Fin n.succ.succ Ci:Fin (n + 1 + 1)j:Fin (n + 1 + 1)hij:i jb:ComponentIdx (c i.succSuccAbove j)x:basisIdx (c i) × basisIdx (c j)(fun b' => (b' i, b' j)) ((fun x => ofFin hij b x, ) x) = x All goals completed! 🐙
@[simp] lemma ofFinEquiv_apply_fst {n : } {c : Fin (n + 1 + 1) C} {i j : Fin (n + 1 + 1)} (hij : i j) (b : ComponentIdx (c Fin.succSuccAbove i j)) (x : basisIdx (c i) × basisIdx (c j)) : (ofFinEquiv (S := S) hij b x).1 i = x.1 := 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✝n:c:Fin (n + 1 + 1) Ci:Fin (n + 1 + 1)j:Fin (n + 1 + 1)hij:i jb:ComponentIdx (c i.succSuccAbove j)x:basisIdx (c i) × basisIdx (c j)((ofFinEquiv hij b) x) i = x.1 All goals completed! 🐙@[simp] lemma ofFinEquiv_apply_snd {n : } {c : Fin (n + 1 + 1) C} {i j : Fin (n + 1 + 1)} (hij : i j) (b : ComponentIdx (c Fin.succSuccAbove i j)) (x : basisIdx (c i) × basisIdx (c j)) : (ofFinEquiv (S := S) hij b x).1 j = x.2 := 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✝n:c:Fin (n + 1 + 1) Ci:Fin (n + 1 + 1)j:Fin (n + 1 + 1)hij:i jb:ComponentIdx (c i.succSuccAbove j)x:basisIdx (c i) × basisIdx (c j)((ofFinEquiv hij b) x) j = x.2 All goals completed! 🐙