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.PrimeDegreePackets.G line 11
abbrev G (n : ℕ) := Matrix.SpecialLinearGroup (Fin n) ℝ
definition OAI.PrimeDegreePackets.integralGroup line 13
def integralGroup (n : ℕ) : Subgroup (G n) := (Matrix.SpecialLinearGroup.map (Int.castRingHom ℝ)).range
abbreviation OAI.PrimeDegreePackets.X line 16
abbrev X (n : ℕ) := Quotient (QuotientGroup.rightRel (integralGroup n))
definition OAI.PrimeDegreePackets.rightAction line 21
def rightAction {n : ℕ} (x : X n) (g : G n) : X n := Quotient.map (fun h => h * g) (by intro a b hab change (QuotientGroup.rightRel (integralGroup n)) a b at hab change (QuotientGroup.rightRel (integralGroup n)) (a * g) (b * g) rw [QuotientGroup.rightRel_apply] at hab ⊢ simpa only [mul_inv_rev, mul_assoc, mul_inv_cancel_left] using hab) x
definition OAI.PrimeDegreePackets.signMatrices line 38
def signMatrices (n : ℕ) : Set (G n) := {g | (∀ i j, i ≠ j → g.1 i j = 0) ∧ ∀ i, g.1 i i = 1 ∨ g.1 i i = -1}
definition OAI.PrimeDegreePackets.rowLattice line 41
def rowLattice {n : ℕ} (g : Matrix (Fin n) (Fin n) ℝ) : Submodule ℤ (Fin n → ℝ) := Submodule.span ℤ (Set.range fun i => g i)
structure OAI.PrimeDegreePackets.FullLattice line 44
structure FullLattice (n : ℕ) (K : Type*) [Field K] [NumberField K] where carrier : Submodule ℤ K basis : Basis (Fin n) ℤ carrier spans : Submodule.span ℚ (carrier : Set K) = ⊤
definition OAI.PrimeDegreePackets.multiplierOrder line 49
def multiplierOrder {n : ℕ} {K : Type*} [Field K] [NumberField K] (M : FullLattice n K) : AddSubgroup K where carrier := {a | ∀ x ∈ M.carrier, a * x ∈ M.carrier} zero_mem' := by simp add_mem' := by intro a b ha hb x hx simpa only [add_mul] using M.carrier.add_mem (ha x hx) (hb x hx) neg_mem' := by intro a ha x hx simpa only [neg_mul] using M.carrier.neg_mem (ha x hx)
definition OAI.PrimeDegreePackets.integralElements line 59
def integralElements (K : Type*) [Field K] : AddSubgroup K := (integralClosure ℤ K).toSubring.toAddSubgroup
definition OAI.PrimeDegreePackets.multiplierDiscriminant line 62
def multiplierDiscriminant {n : ℕ} {K : Type*} [Field K] [NumberField K] (M : FullLattice n K) : ℝ := |(NumberField.discr K : ℝ)| * ((multiplierOrder M).relIndex (integralElements K) : ℝ) ^ 2
abbreviation OAI.PrimeDegreePackets.OrderedEmbeddings line 67
abbrev OrderedEmbeddings (n : ℕ) (K : Type*) [Field K] := Fin n ≃ (K →+* ℝ)
definition OAI.PrimeDegreePackets.embeddingMatrix line 69
def embeddingMatrix {n : ℕ} {K : Type*} [Field K] [NumberField K] (M : FullLattice n K) (σ : OrderedEmbeddings n K) : Matrix (Fin n) (Fin n) ℝ := fun i j => σ j (M.basis i)
definition OAI.PrimeDegreePackets.normalizedLattice line 73
def normalizedLattice {n : ℕ} {K : Type*} [Field K] [NumberField K] (M : FullLattice n K) (σ : OrderedEmbeddings n K) : Submodule ℤ (Fin n → ℝ) := let B := embeddingMatrix M σ rowLattice (|(Matrix.det B)| ^ (-(1 : ℝ) / n) • B)
definition OAI.PrimeDegreePackets.latticePoint line 78
def latticePoint {n : ℕ} {K : Type*} [Field K] [NumberField K] (M : FullLattice n K) (σ : OrderedEmbeddings n K) : X n := if h : ∃ g : G n, rowLattice g.1 = normalizedLattice M σ then Quotient.mk _ h.choose else Quotient.mk _ (1 : G n)
abbreviation OAI.PrimeDegreePackets.LogCoordinates line 84
abbrev LogCoordinates (d : ℕ) := Fin d → ℝ
definition OAI.PrimeDegreePackets.diagonalFlow line 86
def diagonalFlow {d : ℕ} (u : LogCoordinates d) : G (d + 1) := ⟨Matrix.diagonal (Fin.snoc (fun i => Real.exp (u i)) (Real.exp (-∑ i, u i))), by rw [Matrix.det_diagonal, Fin.prod_univ_castSucc] simp only [Fin.snoc_castSucc, Fin.snoc_last] rw [← Real.exp_sum, ← Real.exp_add, add_neg_cancel, Real.exp_zero]⟩
definition OAI.PrimeDegreePackets.orbitMap line 110
def orbitMap {d : ℕ} (x : X (d + 1)) (u : LogCoordinates d) : X (d + 1) := rightAction x (diagonalFlow u)
definition OAI.PrimeDegreePackets.periodGroup line 120
def periodGroup {d : ℕ} (x : X (d + 1)) : AddSubgroup (LogCoordinates d) where
Show the remaining 11 lines
carrier := {u | orbitMap x u = x} zero_mem' := orbitMap_zero x add_mem' := by intro u v hu hv change orbitMap x (u + v) = x rw [orbitMap_add, hu, hv] neg_mem' := by intro u hu have h := congrArg (fun y => orbitMap y (-u)) hu rw [← orbitMap_add, add_neg_cancel, orbitMap_zero] at h exact h.symm
definition OAI.PrimeDegreePackets.diagonalOrbit line 133
def diagonalOrbit {d : ℕ} (x : X (d + 1)) : Set (X (d + 1)) := Set.range (orbitMap x)
definition OAI.PrimeDegreePackets.orbitVolume line 135
def orbitVolume {d : ℕ} (x : X (d + 1)) : ℝ≥0∞ := addCovolume (periodGroup x) (LogCoordinates d) volume
definition OAI.PrimeDegreePackets.orbitalHaar line 138
def orbitalHaar {d : ℕ} (x : X (d + 1)) : Measure (X (d + 1)) := if h : HasAddFundamentalDomain (periodGroup x) (LogCoordinates d) volume then Measure.map (orbitMap x) (volume.restrict h.ExistsIsAddFundamentalDomain.choose) else 0
definition OAI.PrimeDegreePackets.orbitProbability line 143
def orbitProbability {d : ℕ} (x : X (d + 1)) : Measure (X (d + 1)) := (orbitVolume x)⁻¹ • orbitalHaar x
abbreviation OAI.PrimeDegreePackets.LocalAlgebra line 146
abbrev LocalAlgebra (p : ℕ) [Fact p.Prime] (K : Type*) [Field K] [NumberField K] := Padic p ⊗[ℚ] K
definition OAI.PrimeDegreePackets.completedLattice line 149
def completedLattice {n : ℕ} {K : Type*} [Field K] [NumberField K] (p : ℕ) [Fact p.Prime] (M : FullLattice n K) : Submodule (PadicInt p) (LocalAlgebra p K) := Submodule.span (PadicInt p) ((Algebra.TensorProduct.includeRight : K →ₐ[ℚ] LocalAlgebra p K) '' (M.carrier : Set K))
6 more definitions are reached the same way; the full file lists them.