Paper XII · Lean source
PacketTrace.lean
Inherited / related evidence Coverage and evidence
The edition relies on earlier or related formal evidence. That evidence is not a fresh full-edition replay.
This viewer reads the retained source; it does not run Lean or assign new claim mappings.
PaperXII/PacketTrace.lean74 lines
Original source path
core/publication/source/lean_guide/formal_release/lean/PaperXII/PacketTrace.leanSkip declarations and read code
1 import Mathlib.LinearAlgebra.Trace
2 import Mathlib.LinearAlgebra.Dimension.LinearMap
3
4 set_option autoImplicit false
5
6 /-! Paper XII, Corollary 8.4. The projector is the actual action of a supplied
7 idempotent of the Hecke algebra, and the packet is its actual image submodule.
8 This block does not construct the canonical Artin idempotents (Fact 8.1), nor
9 prove the localization/direct-sum comparisons in Theorem 8.2. Its conclusions
10 apply to every supplied idempotent, in particular to those canonical inputs.
11 No semisimplicity or faithful action is assumed. -/
12 namespace PaperXII.PacketTrace
13
14 variable {E T V : Type*} [Field E] [CommRing T] [Algebra E T]
15 [AddCommGroup V] [Module E V] [Module T V] [IsScalarTower E T V]
16
17 /-- The actual E-linear action of the Hecke element. -/
18 def projector (e : T) : V →ₗ[E] V := Algebra.lsmul E E V e
19
20 /-- The packet eV, as a submodule of the original representation space. -/
21 def packet (e : T) : Submodule E V := LinearMap.range (projector (V := V) e)
22
23 theorem projector_apply (e : T) (v : V) : projector (E := E) e v = e • v := rfl
24
25 theorem projector_idempotent {e : T} (he : IsIdempotentElem e) :
26 IsIdempotentElem (projector (E := E) (V := V) e) := by
27 change projector e * projector e = projector e
28 ext v
29 change e • (e • v) = e • v
30 rw [← mul_smul, he]
31
32 theorem mem_packet_iff (e : T) (v : V) :
33 v ∈ packet (E := E) e ↔ ∃ w : V, e • w = v := Iff.rfl
34
35 /-- An element lies in eV exactly when e fixes it. -/
36 theorem mem_packet_iff_fixed {e : T} (he : IsIdempotentElem e) (v : V) :
37 v ∈ packet (E := E) e ↔ e • v = v := by
38 rw [mem_packet_iff]
39 constructor
40 · rintro ⟨w, rfl⟩
41 rw [← mul_smul, he]
42 · intro hv
43 exact ⟨v, hv⟩
44
45 variable [FiniteDimensional E V]
46
47 /-- Operator rank is the natural image dimension, with its cardinal cast. -/
48 theorem rank_eq_dimension (e : T) :
49 LinearMap.rank (projector (E := E) (V := V) e) =
50 (Module.finrank E (packet (E := E) (V := V) e) : Cardinal) := by
51 exact (Module.finrank_eq_rank (R := E) (M := packet (E := E) (V := V) e)).symm
52
53 /-- The trace formula includes the necessary cast from natural dimension to E.
54 The equality itself holds in every characteristic. -/
55 theorem trace_eq_cast_finrank {e : T} (he : IsIdempotentElem e) :
56 LinearMap.trace E V (projector e) =
57 (Module.finrank E (packet (E := E) (V := V) e) : E) := by
58 exact ((LinearMap.isProj_range_iff_isIdempotentElem _).mpr
59 (projector_idempotent (E := E) (V := V) he)).trace
60
61 /-- Occupancy means a nonzero image, and rank positivity is a statement in N. -/
62 theorem occupied_iff_positive_rank (e : T) :
63 packet (E := E) (V := V) e ≠ ⊥ ↔
64 0 < Module.finrank E (packet (E := E) (V := V) e) := by
65 rw [Module.finrank_pos_iff, Submodule.nontrivial_iff_ne_bot]
66
67 /-- Characteristic zero is needed only for nonzero scalar trace detection. -/
68 theorem occupied_iff_trace_ne_zero [CharZero E] {e : T} (he : IsIdempotentElem e) :
69 packet (E := E) (V := V) e ≠ ⊥ ↔
70 LinearMap.trace E V (projector e) ≠ 0 := by
71 rw [trace_eq_cast_finrank he, Nat.cast_ne_zero, occupied_iff_positive_rank,
72 Nat.pos_iff_ne_zero]
73
74 end PaperXII.PacketTrace
Original file and source record
This copy matches the recorded source file. Its publication here does not change the work’s review status.
SHA-256: ad4c7192632b5075026bb73c0de7011bdece56d24f79f7ea05c4e4aa77b25255
Back to Paper XII: Patching Support, Hecke Packets, and Conditional Automorphic Completion