Skip to content

Commit 24bb9b2

Browse files
committed
feat(CategoryTheory/Galois): equivalence to ContAction (#24563)
1 parent 6870b86 commit 24bb9b2

File tree

5 files changed

+132
-1
lines changed

5 files changed

+132
-1
lines changed

Mathlib.lean

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2037,6 +2037,7 @@ import Mathlib.CategoryTheory.Functor.TwoSquare
20372037
import Mathlib.CategoryTheory.Galois.Action
20382038
import Mathlib.CategoryTheory.Galois.Basic
20392039
import Mathlib.CategoryTheory.Galois.Decomposition
2040+
import Mathlib.CategoryTheory.Galois.Equivalence
20402041
import Mathlib.CategoryTheory.Galois.EssSurj
20412042
import Mathlib.CategoryTheory.Galois.Examples
20422043
import Mathlib.CategoryTheory.Galois.Full

Mathlib/CategoryTheory/Galois/Basic.lean

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ the definitions in Lenstras notes (see below for a reference).
2626
* `IsConnected` : an object of a category is connected if it is not initial
2727
and does not have non-trivial subobjects
2828
29+
Any fiber functor `F` induces an equivalence with the category of finite, discrete `Aut F`-types.
30+
This is proven in `Mathlib.CategoryTheory.Galois.Equivalence`.
31+
2932
## Implementation details
3033
3134
We mostly follow Def 3.1 in Lenstras notes. In axiom (G3)
@@ -170,7 +173,7 @@ section
170173

171174
/-- If `F` is a fiber functor and `E` is an equivalence between categories of finite types,
172175
then `F ⋙ E` is again a fiber functor. -/
173-
lemma comp_right (E : FintypeCat.{w} ⥤ FintypeCat.{t}) [E.IsEquivalence] :
176+
instance comp_right (E : FintypeCat.{w} ⥤ FintypeCat.{t}) [E.IsEquivalence] :
174177
FiberFunctor (F ⋙ E) where
175178
preservesQuotientsByFiniteGroups _ := comp_preservesColimitsOfShape F E
176179

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
/-
2+
Copyright (c) 2025 Christian Merten. All rights reserved.
3+
Released under Apache 2.0 license as described in the file LICENSE.
4+
Authors: Christian Merten
5+
-/
6+
import Mathlib.CategoryTheory.Galois.EssSurj
7+
import Mathlib.CategoryTheory.Action.Continuous
8+
import Mathlib.Topology.Category.FinTopCat
9+
10+
/-!
11+
# Fiber functors induce an equivalence of categories
12+
13+
Let `C` be a Galois category with fiber functor `F`.
14+
15+
In this file we conclude that the induced functor from `C` to the category of finite,
16+
discrete `Aut F`-sets is an equivalence of categories.
17+
-/
18+
19+
universe u₂ u₁ w
20+
21+
open CategoryTheory
22+
23+
namespace CategoryTheory
24+
25+
variable {C : Type u₁} [Category.{u₂} C] {F : C ⥤ FintypeCat.{w}}
26+
27+
namespace PreGaloisCategory
28+
29+
variable [GaloisCategory C] [FiberFunctor F]
30+
31+
open scoped FintypeCatDiscrete
32+
33+
variable (F) in
34+
/-- The induced functor from `C` to the category of finite, discrete `Aut F`-sets. -/
35+
@[simps! obj_obj map]
36+
def functorToContAction : C ⥤ ContAction FintypeCat (Aut F) :=
37+
ObjectProperty.lift _ (functorToAction F) (fun X ↦ continuousSMul_aut_fiber F X)
38+
39+
instance : (functorToContAction F).Faithful :=
40+
inferInstanceAs <| (ObjectProperty.lift _ _ _).Faithful
41+
42+
instance : (functorToContAction F).Full :=
43+
inferInstanceAs <| (ObjectProperty.lift _ _ _).Full
44+
45+
instance {F : C ⥤ FintypeCat.{u₁}} [FiberFunctor F] : (functorToContAction F).EssSurj where
46+
mem_essImage X := by
47+
have : ContinuousSMul (Aut F) X.obj.V.carrier := X.2
48+
obtain ⟨A, ⟨i⟩⟩ := exists_lift_of_continuous (F := F) X
49+
exact ⟨A, ⟨ObjectProperty.isoMk _ i⟩⟩
50+
51+
instance : (functorToContAction F).EssSurj := by
52+
let F' : C ⥤ FintypeCat.{u₁} := F ⋙ FintypeCat.uSwitch.{w, u₁}
53+
letI : FiberFunctor F' := FiberFunctor.comp_right _
54+
have : (functorToContAction F').EssSurj := inferInstance
55+
let f : Aut F ≃ₜ* Aut F' :=
56+
(autEquivAutWhiskerRight F (FintypeCat.uSwitchEquivalence.{w, u₁}).fullyFaithfulFunctor)
57+
let equiv : ContAction FintypeCat.{u₁} (Aut F') ≌ ContAction FintypeCat.{w} (Aut F) :=
58+
(FintypeCat.uSwitchEquivalence.{u₁, w}.mapContAction (Aut F')
59+
(fun X ↦ by
60+
rw [Action.isContinuous_def]
61+
show Continuous ((fun p ↦ (FintypeCat.uSwitchEquiv X.obj.V).symm p) ∘
62+
(fun p : Aut F' × _ ↦ (X.obj.ρ p.1) p.2) ∘
63+
(fun p : Aut F' × _ ↦ (p.1, FintypeCat.uSwitchEquiv _ p.2)))
64+
have : Continuous (fun p : Aut F' × _ ↦ (X.obj.ρ p.1) p.2) := X.2.1
65+
fun_prop)
66+
(fun X ↦ by
67+
rw [Action.isContinuous_def]
68+
show Continuous ((fun p ↦ (FintypeCat.uSwitchEquiv X.obj.V).symm p) ∘
69+
(fun p : Aut F' × _ ↦ (X.obj.ρ p.1) p.2) ∘
70+
(fun p : Aut F' × _ ↦ (p.1, FintypeCat.uSwitchEquiv _ p.2)))
71+
have : Continuous (fun p : Aut F' × _ ↦ (X.obj.ρ p.1) p.2) := X.2.1
72+
fun_prop)).trans <|
73+
ContAction.resEquiv _ f
74+
have : functorToContAction F ≅ functorToContAction F' ⋙ equiv.functor :=
75+
NatIso.ofComponents
76+
(fun X ↦ ObjectProperty.isoMk _ (Action.mkIso (FintypeCat.uSwitchEquivalence.unitIso.app _)
77+
(fun g ↦ FintypeCat.uSwitchEquivalence.unitIso.hom.naturality (g.hom.app X))))
78+
(fun f ↦ by
79+
ext : 2
80+
exact FintypeCat.uSwitchEquivalence.unitIso.hom.naturality (F.map f))
81+
exact Functor.essSurj_of_iso this.symm
82+
83+
/-- Any fiber functor `F` induces an equivalence of categories with the category of finite and
84+
discrete `Aut F`-sets. -/
85+
@[stacks 0BN4]
86+
instance : (functorToContAction F).IsEquivalence where
87+
88+
end PreGaloisCategory
89+
90+
end CategoryTheory

Mathlib/CategoryTheory/Galois/Topology.lean

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
44
Authors: Christian Merten
55
-/
66
import Mathlib.CategoryTheory.Galois.Prorepresentability
7+
import Mathlib.Topology.Algebra.ContinuousMonoidHom
78
import Mathlib.Topology.Algebra.Group.Basic
89

910
/-!
@@ -118,6 +119,27 @@ instance continuousSMul_aut_fiber (X : C) : ContinuousSMul (Aut F) (F.obj X) whe
118119
show Continuous (g ∘ h)
119120
fun_prop
120121

122+
/-- If `G` is a functor of categories of finite types, the induced map `Aut F → Aut (F ⋙ G)` is
123+
continuous. -/
124+
lemma continuous_mapAut_whiskeringRight (G : FintypeCat.{w} ⥤ FintypeCat.{v}) :
125+
Continuous (((whiskeringRight _ _ _).obj G).mapAut F) := by
126+
rw [Topology.IsInducing.continuous_iff (autEmbedding_isClosedEmbedding _).isInducing,
127+
continuous_pi_iff]
128+
intro X
129+
show Continuous fun a ↦ G.mapAut (F.obj X) (autEmbedding F a X)
130+
fun_prop
131+
132+
/-- If `G` is a fully faithful functor of categories finite types, this is the automorphism of
133+
topological groups `Aut F ≃ Aut (F ⋙ G)`. -/
134+
noncomputable def autEquivAutWhiskerRight {G : FintypeCat.{w} ⥤ FintypeCat.{v}}
135+
(h : G.FullyFaithful) :
136+
Aut F ≃ₜ* Aut (F ⋙ G) where
137+
__ := (h.whiskeringRight C).autMulEquivOfFullyFaithful F
138+
continuous_toFun := continuous_mapAut_whiskeringRight F G
139+
continuous_invFun := Continuous.continuous_symm_of_equiv_compact_to_t2
140+
(f := ((h.whiskeringRight C).autMulEquivOfFullyFaithful F).toEquiv)
141+
(continuous_mapAut_whiskeringRight F G)
142+
121143
variable [GaloisCategory C] [FiberFunctor F]
122144

123145
/--

Mathlib/Topology/Category/FinTopCat.lean

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,3 +66,18 @@ instance (X : FinTopCat) : Fintype ((forget₂ FinTopCat TopCat).obj X) :=
6666
X.fintype
6767

6868
end FinTopCat
69+
70+
namespace FintypeCatDiscrete
71+
72+
/-- Scoped topological space instance on objects of the category of finite types, assigning
73+
the discrete topology. -/
74+
scoped instance (X : FintypeCat) : TopologicalSpace X := ⊥
75+
scoped instance (X : FintypeCat) : DiscreteTopology X := ⟨rfl⟩
76+
77+
/-- The forgetful functor from finite types to topological spaces, forgetting discreteness.
78+
This is a scoped instance. -/
79+
scoped instance : HasForget₂ FintypeCat TopCat where
80+
forget₂.obj X := TopCat.of X
81+
forget₂.map f := TopCat.ofHom ⟨f, continuous_of_discreteTopology⟩
82+
83+
end FintypeCatDiscrete

0 commit comments

Comments
 (0)