Skip to content

Commit d516886

Browse files
ybenmeurjcommelin
andcommitted
feat: Tannaka duality for finite groups (#22176)
Proves Tannaka duality for finite groups. - [x] depends on: #23065 Co-authored-by: Johan Commelin <johan@commelin.net>
1 parent 1031377 commit d516886

1 file changed

Lines changed: 77 additions & 4 deletions

File tree

Mathlib/RepresentationTheory/Tannaka.lean

Lines changed: 77 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ The theorem can be formulated as follows: for any integral domain `k`, a finite
1414
recovered from `FDRep k G`, the monoidal category of finite dimensional `k`-linear representations
1515
of `G`, and the monoidal forgetful functor `forget : FDRep k G ⥤ FGModuleCat k`.
1616
17-
More specifically, the main result is the isomorphism `equiv : G ≃* Aut (forget k G)`.
17+
The main result is the isomorphism `equiv : G ≃* Aut (forget k G)`.
1818
1919
## Reference
2020
@@ -99,11 +99,9 @@ def leftRegular : Representation k G (G → k) where
9999
@[simp]
100100
lemma leftRegular_apply (s t : G) (f : G → k) : leftRegular s f t = f (s⁻¹ * t) := rfl
101101

102-
variable [Finite G]
103-
104102
/-- The right regular representation `rightRegular` on `G → k` as a `FDRep k G`. -/
105103
@[simp]
106-
def rightFDRep : FDRep k G := FDRep.of rightRegular
104+
def rightFDRep [Finite G] : FDRep k G := FDRep.of rightRegular
107105

108106
end definitions
109107

@@ -151,6 +149,81 @@ def algHomOfRightFDRepComp (η : Aut (forget k G)) : (G → k) →ₐ[k] (G →
151149
apply_fun (fun x ↦ (x.hom.app rightFDRep).hom (1 : G → k)) at this
152150
exact this
153151

152+
/-- For `v : X` and `G` a finite group, the `G`-equivariant linear map from the right
153+
regular representation `rightFDRep` to `X` sending `single 1 1` to `v`. -/
154+
@[simps]
155+
def sumSMulInv [Fintype G] {X : FDRep k G} (v : X) : (G → k) →ₗ[k] X where
156+
toFun f := ∑ s : G, (f s) • (X.ρ s⁻¹ v)
157+
map_add' _ _ := by simp [add_smul, sum_add_distrib]
158+
map_smul' _ _ := by simp [smul_sum, smul_smul]
159+
160+
omit [Finite G] in
161+
@[simp]
162+
lemma sumSMulInv_single_id [Fintype G] [DecidableEq G] {X : FDRep k G} (v : X) :
163+
∑ s : G, (single 1 1 : G → k) s • (X.ρ s⁻¹) v = v := by
164+
rw [Fintype.sum_eq_single 1]
165+
· simp
166+
· simp_all
167+
168+
/-- For `v : X` and `G` a finite group, the representation morphism from the right
169+
regular representation `rightFDRep` to `X` sending `single 1 1` to `v`. -/
170+
@[simps]
171+
def ofRightFDRep [Fintype G] (X : FDRep k G) (v : X) : rightFDRep ⟶ X where
172+
hom := ofHom (sumSMulInv v)
173+
comm t := by
174+
ext f
175+
let φ_term (X : FDRep k G) (f : G → k) v s := (f s) • (X.ρ s⁻¹ v)
176+
have := sum_map univ (mulRightEmbedding t⁻¹) (φ_term X (rightRegular t f) v)
177+
simpa [φ_term] using this
178+
179+
lemma toRightFDRepComp_injective {η₁ η₂ : Aut (forget k G)}
180+
(h : η₁.hom.hom.app rightFDRep = η₂.hom.hom.app rightFDRep) : η₁ = η₂ := by
181+
have := Fintype.ofFinite G
182+
classical
183+
ext X v
184+
have h1 := η₁.hom.hom.naturality (ofRightFDRep X v)
185+
have h2 := η₂.hom.hom.naturality (ofRightFDRep X v)
186+
rw [h, ← h2] at h1
187+
simpa using congr(($h1).hom (single 1 1))
188+
189+
/-- `leftRegular` as a morphism `rightFDRep k G ⟶ rightFDRep k G` in `FDRep k G`. -/
190+
def leftRegularFDRepHom (s : G) : End (rightFDRep : FDRep k G) where
191+
hom := ofHom (leftRegular s)
192+
comm _ := by
193+
ext f
194+
funext _
195+
apply congrArg f
196+
exact mul_assoc ..
197+
198+
lemma toRightFDRepComp_in_rightRegular [IsDomain k] (η : Aut (forget k G)) :
199+
∃ (s : G), (η.hom.hom.app rightFDRep).hom = rightRegular s := by
200+
classical
201+
obtain ⟨s, hs⟩ := ((evalAlgHom _ _ 1).comp (algHomOfRightFDRepComp η)).eq_piEvalAlgHom
202+
refine ⟨s, Basis.ext (basisFun k G) (fun u ↦ ?_)⟩
203+
simp only [rightFDRep, forget_obj]
204+
ext t
205+
have nat := η.hom.hom.naturality (leftRegularFDRepHom t⁻¹)
206+
calc
207+
_ = leftRegular t⁻¹ ((η.hom.hom.app rightFDRep).hom (single u 1)) 1 := by simp
208+
_ = (η.hom.hom.app rightFDRep).hom (leftRegular t⁻¹ (single u 1)) 1 :=
209+
congrFun congr(($nat.symm).hom (single u 1)) 1
210+
_ = evalAlgHom _ _ s (leftRegular t⁻¹ (single u 1)) :=
211+
congr($hs (leftRegular t⁻¹ (single u 1)))
212+
_ = _ := by by_cases u = t * s <;> simp_all [single_apply]
213+
214+
lemma equivHom_surjective [IsDomain k] : Function.Surjective (equivHom k G) := by
215+
intro η
216+
obtain ⟨s, h⟩ := toRightFDRepComp_in_rightRegular η
217+
exact ⟨s, toRightFDRepComp_injective (hom_ext h.symm)⟩
218+
219+
variable (k G) in
220+
/-- Tannaka duality for finite groups:
221+
222+
A finite group `G` is isomorphic to `Aut (forget k G)`, where `k` is any integral domain,
223+
and `forget k G` is the monoidal forgetful functor `FDRep k G ⥤ FGModuleCat k G`. -/
224+
def equiv [IsDomain k] : G ≃* Aut (forget k G) :=
225+
MulEquiv.ofBijective (equivHom k G) ⟨equivHom_injective, equivHom_surjective⟩
226+
154227
end FiniteGroup
155228

156229
end TannakaDuality

0 commit comments

Comments
 (0)