Skip to content

Commit 678f491

Browse files
committed
feat(Condensed): explicit sheaf condition for light condensed sets (#13503)
- [x] depends on: #13501
1 parent f6d6254 commit 678f491

File tree

2 files changed

+96
-0
lines changed

2 files changed

+96
-0
lines changed

Mathlib.lean

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1786,6 +1786,7 @@ import Mathlib.Condensed.Equivalence
17861786
import Mathlib.Condensed.Explicit
17871787
import Mathlib.Condensed.Functors
17881788
import Mathlib.Condensed.Light.Basic
1789+
import Mathlib.Condensed.Light.Explicit
17891790
import Mathlib.Condensed.Light.Module
17901791
import Mathlib.Condensed.Limits
17911792
import Mathlib.Condensed.Module
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
/-
2+
Copyright (c) 2023 Dagur Asgeirsson. All rights reserved.
3+
Released under Apache 2.0 license as described in the file LICENSE.
4+
Authors: Dagur Asgeirsson
5+
-/
6+
import Mathlib.CategoryTheory.Sites.Coherent.SheafComparison
7+
import Mathlib.Condensed.Light.Module
8+
/-!
9+
10+
# The explicit sheaf condition for light condensed sets
11+
12+
We give explicit description of light condensed sets:
13+
14+
* `LightCondensed.ofSheafLightProfinite`: A finite-product-preserving presheaf on `LightProfinite`,
15+
satisfying `EqualizerCondition`.
16+
17+
The property `EqualizerCondition` is defined in `Mathlib/CategoryTheory/Sites/RegularExtensive.lean`
18+
and it says that for any effective epi `X ⟶ B` (in this case that is equivalent to being a
19+
continuous surjection), the presheaf `F` exhibits `F(B)` as the equalizer of the two maps
20+
`F(X) ⇉ F(X ×_B X)`
21+
-/
22+
23+
universe v u w
24+
25+
open CategoryTheory Limits Opposite Functor Presheaf regularTopology
26+
27+
variable {A : Type*} [Category A]
28+
29+
namespace LightCondensed
30+
31+
/--
32+
The light condensed object associated to a presheaf on `LightProfinite` which preserves finite
33+
products and satisfies the equalizer condition.
34+
-/
35+
@[simps]
36+
noncomputable def ofSheafLightProfinite (F : LightProfinite.{u}ᵒᵖ ⥤ A) [PreservesFiniteProducts F]
37+
(hF : EqualizerCondition F) : LightCondensed A where
38+
val := F
39+
cond := by
40+
rw [isSheaf_iff_preservesFiniteProducts_and_equalizerCondition F]
41+
exact ⟨⟨⟨fun _ _ ↦ inferInstance⟩⟩, hF⟩
42+
43+
/--
44+
The light condensed object associated to a presheaf on `LightProfinite` whose postcomposition with
45+
the forgetful functor preserves finite products and satisfies the equalizer condition.
46+
-/
47+
@[simps]
48+
noncomputable def ofSheafForgetLightProfinite
49+
[ConcreteCategory A] [ReflectsFiniteLimits (CategoryTheory.forget A)]
50+
(F : LightProfinite.{u}ᵒᵖ ⥤ A) [PreservesFiniteProducts (F ⋙ CategoryTheory.forget A)]
51+
(hF : EqualizerCondition (F ⋙ CategoryTheory.forget A)) : LightCondensed A where
52+
val := F
53+
cond := by
54+
apply isSheaf_coherent_of_hasPullbacks_of_comp F (CategoryTheory.forget A)
55+
rw [isSheaf_iff_preservesFiniteProducts_and_equalizerCondition]
56+
exact ⟨⟨⟨fun _ _ ↦ inferInstance⟩⟩, hF⟩
57+
58+
/-- A light condensed object satisfies the equalizer condition. -/
59+
theorem equalizerCondition (X : LightCondensed A) : EqualizerCondition X.val :=
60+
isSheaf_iff_preservesFiniteProducts_and_equalizerCondition X.val |>.mp X.cond |>.2
61+
62+
/-- A light condensed object preserves finite products. -/
63+
noncomputable instance (X : LightCondensed A) : PreservesFiniteProducts X.val :=
64+
isSheaf_iff_preservesFiniteProducts_and_equalizerCondition X.val |>.mp X.cond |>.1.some
65+
66+
end LightCondensed
67+
68+
namespace LightCondSet
69+
70+
/-- A `LightCondSet` version of `LightCondensed.ofSheafLightProfinite`. -/
71+
noncomputable abbrev ofSheafLightProfinite (F : LightProfinite.{u}ᵒᵖ ⥤ Type u)
72+
[PreservesFiniteProducts F] (hF : EqualizerCondition F) : LightCondSet :=
73+
LightCondensed.ofSheafLightProfinite F hF
74+
75+
end LightCondSet
76+
77+
namespace LightCondMod
78+
79+
variable (R : Type u) [Ring R]
80+
81+
/-- A `LightCondAb` version of `LightCondensed.ofSheafLightProfinite`. -/
82+
noncomputable abbrev ofSheafLightProfinite (F : LightProfinite.{u}ᵒᵖ ⥤ ModuleCat.{u} R)
83+
[PreservesFiniteProducts F] (hF : EqualizerCondition F) : LightCondMod.{u} R :=
84+
LightCondensed.ofSheafLightProfinite F hF
85+
86+
end LightCondMod
87+
88+
namespace LightCondAb
89+
90+
/-- A `LightCondAb` version of `LightCondensed.ofSheafLightProfinite`. -/
91+
noncomputable abbrev ofSheafLightProfinite (F : LightProfiniteᵒᵖ ⥤ ModuleCat ℤ)
92+
[PreservesFiniteProducts F] (hF : EqualizerCondition F) : LightCondAb :=
93+
LightCondMod.ofSheafLightProfinite ℤ F hF
94+
95+
end LightCondAb

0 commit comments

Comments
 (0)