-
Notifications
You must be signed in to change notification settings - Fork 1.3k
[Merged by Bors] - feat: Tannaka duality for finite groups #22176
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Closed
Closed
Changes from all commits
Commits
Show all changes
35 commits
Select commit
Hold shift + click to select a range
2fed255
feat: Tannaka duality for finite groups
ybenmeur 3f05321
first part
ybenmeur 1a057b3
fix CI error
ybenmeur 7bbbf3c
second part
ybenmeur e15d912
third part
ybenmeur d762416
rename
ybenmeur 7d4db7c
generalize most of the file to commrings
jcommelin 80f3a63
generalize to domains
jcommelin 90d2c06
meaningful names
ybenmeur 410737c
fix docstring
ybenmeur f974f9c
Apply suggestions from code review
ybenmeur ca4846e
Update Mathlib/RepresentationTheory/Tannaka.lean
ybenmeur 677b3fd
further simplification
ybenmeur 0fa0947
Merge remote-tracking branch 'upstream/master' into yb_tannaka3
ybenmeur 0c859d2
Apply suggestions from code review
ybenmeur edc6a06
remove one `change`
ybenmeur 42b313f
attempt to remove `change`s (with some `erw` for now)
ybenmeur 4c844f3
fix
ybenmeur 8a6f4d5
no `change`s
ybenmeur 34be1f6
fix
ybenmeur 8ffe5c3
Merge branch 'master' into yb_tannaka3
ybenmeur 6ba5b52
remove `toRightFDRepComp`
ybenmeur 5938914
Merge branch 'master' into yb_tannaka3
ybenmeur 98edc4b
Merge branch 'master' into yb_tannaka3
ybenmeur 098f429
naming convention for `eval_of_algHom`
ybenmeur 062811e
Merge branch 'master' into yb_tannaka3
ybenmeur 71c03d7
fix
ybenmeur 8e38f7b
Merge remote-tracking branch 'upstream/master' into yb_tannaka3
ybenmeur b2e6a93
moved lemma
ybenmeur b57fb55
update + move things + some changes
ybenmeur 232d0dd
Merge remote-tracking branch 'upstream/master' into yb_tannaka3
ybenmeur f7e6293
fix finite/fintype assumptions
ybenmeur cebbec0
details
ybenmeur da6e937
apply review suggestions
ybenmeur 8db35b4
last suggestions
ybenmeur File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -14,7 +14,7 @@ The theorem can be formulated as follows: for any integral domain `k`, a finite | |
| recovered from `FDRep k G`, the monoidal category of finite dimensional `k`-linear representations | ||
| of `G`, and the monoidal forgetful functor `forget : FDRep k G ⥤ FGModuleCat k`. | ||
|
|
||
| More specifically, the main result is the isomorphism `equiv : G ≃* Aut (forget k G)`. | ||
| The main result is the isomorphism `equiv : G ≃* Aut (forget k G)`. | ||
|
|
||
| ## Reference | ||
|
|
||
|
|
@@ -99,11 +99,9 @@ def leftRegular : Representation k G (G → k) where | |
| @[simp] | ||
| lemma leftRegular_apply (s t : G) (f : G → k) : leftRegular s f t = f (s⁻¹ * t) := rfl | ||
|
|
||
| variable [Finite G] | ||
|
|
||
| /-- The right regular representation `rightRegular` on `G → k` as a `FDRep k G`. -/ | ||
| @[simp] | ||
| def rightFDRep : FDRep k G := FDRep.of rightRegular | ||
| def rightFDRep [Finite G] : FDRep k G := FDRep.of rightRegular | ||
|
|
||
| end definitions | ||
|
|
||
|
|
@@ -151,6 +149,81 @@ def algHomOfRightFDRepComp (η : Aut (forget k G)) : (G → k) →ₐ[k] (G → | |
| apply_fun (fun x ↦ (x.hom.app rightFDRep).hom (1 : G → k)) at this | ||
| exact this | ||
|
|
||
| /-- For `v : X` and `G` a finite group, the `G`-equivariant linear map from the right | ||
| regular representation `rightFDRep` to `X` sending `single 1 1` to `v`. -/ | ||
| @[simps] | ||
| def sumSMulInv [Fintype G] {X : FDRep k G} (v : X) : (G → k) →ₗ[k] X where | ||
| toFun f := ∑ s : G, (f s) • (X.ρ s⁻¹ v) | ||
| map_add' _ _ := by simp [add_smul, sum_add_distrib] | ||
| map_smul' _ _ := by simp [smul_sum, smul_smul] | ||
|
|
||
| omit [Finite G] in | ||
| @[simp] | ||
| lemma sumSMulInv_single_id [Fintype G] [DecidableEq G] {X : FDRep k G} (v : X) : | ||
| ∑ s : G, (single 1 1 : G → k) s • (X.ρ s⁻¹) v = v := by | ||
| rw [Fintype.sum_eq_single 1] | ||
| · simp | ||
| · simp_all | ||
|
|
||
| /-- For `v : X` and `G` a finite group, the representation morphism from the right | ||
| regular representation `rightFDRep` to `X` sending `single 1 1` to `v`. -/ | ||
| @[simps] | ||
| def ofRightFDRep [Fintype G] (X : FDRep k G) (v : X) : rightFDRep ⟶ X where | ||
| hom := ofHom (sumSMulInv v) | ||
| comm t := by | ||
| ext f | ||
| let φ_term (X : FDRep k G) (f : G → k) v s := (f s) • (X.ρ s⁻¹ v) | ||
| have := sum_map univ (mulRightEmbedding t⁻¹) (φ_term X (rightRegular t f) v) | ||
| simpa [φ_term] using this | ||
|
|
||
| lemma toRightFDRepComp_injective {η₁ η₂ : Aut (forget k G)} | ||
| (h : η₁.hom.hom.app rightFDRep = η₂.hom.hom.app rightFDRep) : η₁ = η₂ := by | ||
| have := Fintype.ofFinite G | ||
| classical | ||
| ext X v | ||
| have h1 := η₁.hom.hom.naturality (ofRightFDRep X v) | ||
| have h2 := η₂.hom.hom.naturality (ofRightFDRep X v) | ||
| rw [h, ← h2] at h1 | ||
| simpa using congr(($h1).hom (single 1 1)) | ||
|
|
||
| /-- `leftRegular` as a morphism `rightFDRep k G ⟶ rightFDRep k G` in `FDRep k G`. -/ | ||
| def leftRegularFDRepHom (s : G) : End (rightFDRep : FDRep k G) where | ||
| hom := ofHom (leftRegular s) | ||
| comm _ := by | ||
| ext f | ||
| funext _ | ||
| apply congrArg f | ||
| exact mul_assoc .. | ||
|
|
||
| lemma toRightFDRepComp_in_rightRegular [IsDomain k] (η : Aut (forget k G)) : | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Note to myself: as commented in a previous PR, this works for an "indecomposable (commutative) semiring" k (a typeclass I'm about to introduce). TODO: allow Semiring in FDRep. |
||
| ∃ (s : G), (η.hom.hom.app rightFDRep).hom = rightRegular s := by | ||
| classical | ||
| obtain ⟨s, hs⟩ := ((evalAlgHom _ _ 1).comp (algHomOfRightFDRepComp η)).eq_piEvalAlgHom | ||
| refine ⟨s, Basis.ext (basisFun k G) (fun u ↦ ?_)⟩ | ||
| simp only [rightFDRep, forget_obj] | ||
| ext t | ||
| have nat := η.hom.hom.naturality (leftRegularFDRepHom t⁻¹) | ||
| calc | ||
| _ = leftRegular t⁻¹ ((η.hom.hom.app rightFDRep).hom (single u 1)) 1 := by simp | ||
| _ = (η.hom.hom.app rightFDRep).hom (leftRegular t⁻¹ (single u 1)) 1 := | ||
| congrFun congr(($nat.symm).hom (single u 1)) 1 | ||
| _ = evalAlgHom _ _ s (leftRegular t⁻¹ (single u 1)) := | ||
| congr($hs (leftRegular t⁻¹ (single u 1))) | ||
| _ = _ := by by_cases u = t * s <;> simp_all [single_apply] | ||
|
|
||
| lemma equivHom_surjective [IsDomain k] : Function.Surjective (equivHom k G) := by | ||
| intro η | ||
| obtain ⟨s, h⟩ := toRightFDRepComp_in_rightRegular η | ||
| exact ⟨s, toRightFDRepComp_injective (hom_ext h.symm)⟩ | ||
|
|
||
| variable (k G) in | ||
| /-- Tannaka duality for finite groups: | ||
|
|
||
| A finite group `G` is isomorphic to `Aut (forget k G)`, where `k` is any integral domain, | ||
| and `forget k G` is the monoidal forgetful functor `FDRep k G ⥤ FGModuleCat k G`. -/ | ||
| def equiv [IsDomain k] : G ≃* Aut (forget k G) := | ||
| MulEquiv.ofBijective (equivHom k G) ⟨equivHom_injective, equivHom_surjective⟩ | ||
|
|
||
| end FiniteGroup | ||
|
|
||
| end TannakaDuality | ||
|
|
||
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why are you not using
sumSMulInvfor the LHS? And can you use Fintype.sum_eq_single in the proof?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Because
sumSMulInvis taggedsimps. I just tried untagging it and it was slightly worse in my opinion.