The lines of the Lean statement that state the theorem, then the definitions in the file that it uses.
Local definitions the statement names, followed through the definitions they name in turn. The match is by name in the source text, so a name reached only through notation can be missed; the full file is below.
abbreviation OAI.ThorpNine.Harmonic.Thorp.Card line 11
abbrev Card (d : ℕ) := Fin d → Bool
definition OAI.ThorpNine.Harmonic.Thorp.switchFun line 13
def switchFun {d : ℕ} (ξ : Card d → Bool) (x : Card (d + 1)) : Card (d + 1) := Fin.cons (Bool.xor (x 0) (ξ (Fin.tail x))) (Fin.tail x)
definition OAI.ThorpNine.Harmonic.Thorp.pairSwitch line 25
def pairSwitch {d : ℕ} (ξ : Card d → Bool) : Equiv.Perm (Card (d + 1)) := { toFun := switchFun ξ invFun := switchFun ξ left_inv := switchFun_involutive ξ right_inv := switchFun_involutive ξ }
definition OAI.ThorpNine.Harmonic.Thorp.Coins line 31
def Coins : ℕ → Type | 0 => Unit | d + 1 => Card d → Bool
definition OAI.ThorpNine.Harmonic.Thorp.rotate line 41
def rotate (d : ℕ) : Equiv.Perm (Card d) where toFun x i := x (finRotate d i) invFun x i := x ((finRotate d).symm i) left_inv x := by funext i; simp only [Equiv.apply_symm_apply] right_inv x := by funext i; simp only [Equiv.symm_apply_apply]
definition OAI.ThorpNine.Harmonic.Thorp.step line 47
def step : (d : ℕ) → Coins d → Equiv.Perm (Card d) | 0, _ => 1 | d + 1, ξ => rotate (d + 1) * pairSwitch ξ
definition OAI.ThorpNine.Harmonic.Thorp.run line 51
def run (d : ℕ) : (t : ℕ) → (Fin t → Coins d) → Equiv.Perm (Card d) | 0, _ => 1 | t + 1, ω => step d (ω (Fin.last t)) * run d t (fun i => ω i.castSucc)
definition OAI.ThorpNine.Harmonic.Thorp.law line 55
noncomputable def law (d t : ℕ) (g : Equiv.Perm (Card d)) : ℝ := (Fintype.card {ω : Fin t → Coins d // run d t ω = g} : ℝ) / (Fintype.card (Fin t → Coins d) : ℝ)
abbreviation OAI.ThorpNine.Harmonic.Thorp.Specht.Cell line 67
abbrev Cell (μ : YoungDiagram) := {x : ℕ × ℕ // x ∈ μ.cells}
definition OAI.ThorpNine.Harmonic.Thorp.Specht.row line 69
def row {μ : YoungDiagram} (x : Cell μ) : ℕ := x.1.1
definition OAI.ThorpNine.Harmonic.Thorp.Specht.col line 71
def col {μ : YoungDiagram} (x : Cell μ) : ℕ := x.1.2
definition OAI.ThorpNine.Harmonic.Thorp.Specht.rowIndex line 76
noncomputable def rowIndex {μ : YoungDiagram} (x : Cell μ) : Fin (μ.colLen 0) := ⟨row x, (row_lt_colLen x).trans_le (μ.colLen_anti 0 (col x) (Nat.zero_le _))⟩
abbreviation OAI.ThorpNine.Harmonic.Thorp.Specht.Tabloid line 79
abbrev Tabloid (μ : YoungDiagram) := {f : Cell μ → Fin (μ.colLen 0) // ∃ p : Equiv.Perm (Cell μ), f = rowIndex ∘ p}
definition OAI.ThorpNine.Harmonic.Thorp.Specht.baseTabloid line 84
noncomputable def baseTabloid (μ : YoungDiagram) : Tabloid μ := ⟨rowIndex, 1, rfl⟩
definition OAI.ThorpNine.Harmonic.Thorp.Specht.tabloidAct line 86
noncomputable def tabloidAct {μ : YoungDiagram} (p : Equiv.Perm (Cell μ)) : Equiv.Perm (Tabloid μ) where
Show the remaining 12 lines
toFun f := ⟨fun x => f.1 (p⁻¹ x), by obtain ⟨q,hq⟩ := f.2 refine ⟨q*p⁻¹, ?_⟩ funext x simp only [hq,Function.comp_apply,Equiv.Perm.mul_apply]⟩ invFun f := ⟨fun x => f.1 (p x), by obtain ⟨q,hq⟩ := f.2 refine ⟨q*p, ?_⟩ funext x simp only [hq,Function.comp_apply,Equiv.Perm.mul_apply]⟩ left_inv f := by apply Subtype.ext; funext x; simp right_inv f := by apply Subtype.ext; funext x; simp
definition OAI.ThorpNine.Harmonic.Thorp.Specht.tabloidRep line 113
noncomputable def tabloidRep (μ : YoungDiagram) : Representation ℂ (Equiv.Perm (Cell μ)) (Tabloid μ → ℂ) where
Show the remaining 9 lines
toFun p := { toFun := fun v f => v (tabloidAct p⁻¹ f) map_add' := by intros; rfl map_smul' := by intros; rfl } map_one' := by ext v f; simp map_mul' p q := by ext v f simp only [mul_inv_rev,tabloidAct_mul,Equiv.Perm.mul_apply] rfl
definition OAI.ThorpNine.Harmonic.Thorp.Specht.delta line 125
noncomputable def delta {μ : YoungDiagram} (f : Tabloid μ) : Tabloid μ → ℂ := fun g => if g=f then 1 else 0
definition OAI.ThorpNine.Harmonic.Thorp.Specht.colGroup line 128
noncomputable def colGroup (μ : YoungDiagram) : Subgroup (Equiv.Perm (Cell μ)) where carrier := {p | ∀ x, col (p x) = col x} one_mem' := by intro x; rfl mul_mem' := by intro p q hp hq x; exact (hp (q x)).trans (hq x) inv_mem' := by intro p hp x; simpa using (hp (p⁻¹ x)).symm
definition OAI.ThorpNine.Harmonic.Thorp.Specht.permSign line 134
noncomputable def permSign {α : Type*} [Fintype α] [DecidableEq α] (p : Equiv.Perm α) : ℂ := ((Equiv.Perm.sign p : ℤ) : ℂ)
definition OAI.ThorpNine.Harmonic.Thorp.Specht.alternator line 143
noncomputable def alternator (C : Subgroup (Equiv.Perm α)) (ρ : Representation ℂ (Equiv.Perm α) V) : Module.End ℂ V := by classical exact ∑ c : C, permSign (c : Equiv.Perm α) • ρ c
definition OAI.ThorpNine.Harmonic.Thorp.Specht.polytabloid line 153
noncomputable def polytabloid (μ : YoungDiagram) : Tabloid μ → ℂ := alternator (colGroup μ) (tabloidRep μ) (delta (baseTabloid μ))
definition OAI.ThorpNine.Harmonic.Thorp.Specht.space line 156
noncomputable def space (μ : YoungDiagram) : Submodule ℂ (Tabloid μ → ℂ) := Submodule.span ℂ (Set.range (fun p : Equiv.Perm (Cell μ) => tabloidRep μ p (polytabloid μ)))
definition OAI.ThorpNine.Harmonic.Thorp.Specht.subrepresentation line 174
noncomputable def subrepresentation (μ : YoungDiagram) : Subrepresentation (tabloidRep μ) := ⟨space μ, fun p v hv => action_mem_space μ p v hv⟩
definition OAI.ThorpNine.Harmonic.Thorp.Specht.representation line 177
noncomputable def representation (μ : YoungDiagram) : Representation ℂ (Equiv.Perm (Cell μ)) (space μ) := (subrepresentation μ).toRepresentation
16 more definitions are reached the same way; the full file lists them.