@@ -46,7 +46,7 @@ section
46
46
open StructuredArrow
47
47
48
48
namespace StrictSegal
49
- variable ( X : SSet.{u}) [ StrictSegal X]
49
+ variable { X : SSet.{u}} (sx : StrictSegal X)
50
50
51
51
namespace isPointwiseRightKanExtensionAt
52
52
@@ -60,10 +60,10 @@ abbrev strArrowMk₂ {i : ℕ} {n : ℕ} (φ : ⦋i⦌ ⟶ ⦋n⦌) (hi : i ≤
60
60
`(proj (op ⦋n⦌) ((Truncated.inclusion 2).op ⋙ (Truncated.inclusion 2).op ⋙ X)` where `X` is
61
61
Strict Segal, one can produce an `n`-simplex in `X`. -/
62
62
@[simp]
63
- noncomputable def lift {X : SSet.{u}} [ StrictSegal X] {n}
63
+ noncomputable def lift {X : SSet.{u}} (sx : StrictSegal X) {n}
64
64
(s : Cone (proj (op ⦋n⦌) (Truncated.inclusion 2 ).op ⋙
65
65
(Truncated.inclusion 2 ).op ⋙ X)) (x : s.pt) : X _⦋n⦌ :=
66
- StrictSegal .spineToSimplex {
66
+ sx .spineToSimplex {
67
67
vertex := fun i ↦ s.π.app (.mk (Y := op ⦋0 ⦌₂) (.op (SimplexCategory.const _ _ i))) x
68
68
arrow := fun i ↦ s.π.app (.mk (Y := op ⦋1 ⦌₂) (.op (mkOfLe _ _ (Fin.castSucc_le_succ i)))) x
69
69
arrow_src := fun i ↦ by
@@ -83,7 +83,7 @@ noncomputable def lift {X : SSet.{u}} [StrictSegal X] {n}
83
83
lemma fac_aux₁ {n : ℕ}
84
84
(s : Cone (proj (op ⦋n⦌) (Truncated.inclusion 2 ).op ⋙ (Truncated.inclusion 2 ).op ⋙ X))
85
85
(x : s.pt) (i : ℕ) (hi : i < n) :
86
- X.map (mkOfSucc ⟨i, hi⟩).op (lift s x) =
86
+ X.map (mkOfSucc ⟨i, hi⟩).op (lift sx s x) =
87
87
s.π.app (strArrowMk₂ (mkOfSucc ⟨i, hi⟩)) x := by
88
88
dsimp [lift]
89
89
rw [spineToSimplex_arrow]
@@ -92,7 +92,7 @@ lemma fac_aux₁ {n : ℕ}
92
92
lemma fac_aux₂ {n : ℕ}
93
93
(s : Cone (proj (op ⦋n⦌) (Truncated.inclusion 2 ).op ⋙ (Truncated.inclusion 2 ).op ⋙ X))
94
94
(x : s.pt) (i j : ℕ) (hij : i ≤ j) (hj : j ≤ n) :
95
- X.map (mkOfLe ⟨i, by omega⟩ ⟨j, by omega⟩ hij).op (lift s x) =
95
+ X.map (mkOfLe ⟨i, by omega⟩ ⟨j, by omega⟩ hij).op (lift sx s x) =
96
96
s.π.app (strArrowMk₂ (mkOfLe ⟨i, by omega⟩ ⟨j, by omega⟩ hij)) x := by
97
97
obtain ⟨k, hk⟩ := Nat.le.dest hij
98
98
revert i j
@@ -123,23 +123,22 @@ lemma fac_aux₂ {n : ℕ}
123
123
⟨j, by omega⟩ (by simp) (by simp only [Fin.mk_le_mk]; omega))
124
124
let α₀ := strArrowMk₂ (mkOfLe (n := n) ⟨i + k, by omega⟩ ⟨j, by omega⟩
125
125
(by simp only [Fin.mk_le_mk]; omega))
126
- let α₁ := strArrowMk₂ (mkOfLe (n := n) ⟨i, by omega⟩ ⟨j, by omega⟩
127
- (by simp only [Fin.mk_le_mk]; omega))
126
+ let α₁ := strArrowMk₂ (mkOfLe (n := n) ⟨i, by omega⟩ ⟨j, by omega⟩ hij)
128
127
let α₂ := strArrowMk₂ (mkOfLe (n := n) ⟨i, by omega⟩ ⟨i + k, by omega⟩ (by simp))
129
128
let β₀ : α ⟶ α₀ := StructuredArrow.homMk ((mkOfSucc 1 ).op) (Quiver.Hom.unop_inj
130
129
(by ext x; fin_cases x <;> rfl))
131
130
let β₁ : α ⟶ α₁ := StructuredArrow.homMk ((δ 1 ).op) (Quiver.Hom.unop_inj
132
131
(by ext x; fin_cases x <;> rfl))
133
132
let β₂ : α ⟶ α₂ := StructuredArrow.homMk ((mkOfSucc 0 ).op) (Quiver.Hom.unop_inj
134
133
(by ext x; fin_cases x <;> rfl))
135
- have h₀ : X.map α₀.hom (lift s x) = s.π.app α₀ x := by
134
+ have h₀ : X.map α₀.hom (lift sx s x) = s.π.app α₀ x := by
136
135
subst hik
137
136
exact fac_aux₁ _ _ _ _ hj
138
- have h₂ : X.map α₂.hom (lift s x) = s.π.app α₂ x :=
137
+ have h₂ : X.map α₂.hom (lift sx s x) = s.π.app α₂ x :=
139
138
hk i (i + k) (by simp) (by omega) rfl
140
- change X.map α₁.hom (lift s x) = s.π.app α₁ x
141
- have : X.map α.hom (lift s x) = s.π.app α x := by
142
- apply StrictSegal .spineInjective
139
+ change X.map α₁.hom (lift sx s x) = s.π.app α₁ x
140
+ have : X.map α.hom (lift sx s x) = s.π.app α x := by
141
+ apply sx .spineInjective
143
142
apply Path.ext'
144
143
intro t
145
144
dsimp only [spineEquiv]
@@ -162,7 +161,7 @@ lemma fac_aux₂ {n : ℕ}
162
161
lemma fac_aux₃ {n : ℕ}
163
162
(s : Cone (proj (op ⦋n⦌) (Truncated.inclusion 2 ).op ⋙ (Truncated.inclusion 2 ).op ⋙ X))
164
163
(x : s.pt) (φ : ⦋1 ⦌ ⟶ ⦋n⦌) :
165
- X.map φ.op (lift s x) = s.π.app (strArrowMk₂ φ) x := by
164
+ X.map φ.op (lift sx s x) = s.π.app (strArrowMk₂ φ) x := by
166
165
obtain ⟨i, j, hij, rfl⟩ : ∃ i j hij, φ = mkOfLe i j hij :=
167
166
⟨φ.toOrderHom 0 , φ.toOrderHom 1 , φ.toOrderHom.monotone (by decide),
168
167
Hom.ext_one_left _ _ rfl rfl⟩
@@ -176,18 +175,18 @@ open isPointwiseRightKanExtensionAt in
176
175
/-- A strict Segal simplicial set is 2-coskeletal. -/
177
176
noncomputable def isPointwiseRightKanExtensionAt (n : ℕ) :
178
177
(rightExtensionInclusion X 2 ).IsPointwiseRightKanExtensionAt ⟨⦋n⦌⟩ where
179
- lift s x := lift (X := X) s x
178
+ lift s x := lift sx s x
180
179
fac s j := by
181
180
ext x
182
181
obtain ⟨⟨i, hi⟩, ⟨f : _ ⟶ _⟩, rfl⟩ := j.mk_surjective
183
182
obtain ⟨i, rfl⟩ : ∃ j, SimplexCategory.mk j = i := ⟨_, i.mk_len⟩
184
183
dsimp at hi ⊢
185
- apply StrictSegal .spineInjective
184
+ apply sx .spineInjective
186
185
dsimp
187
186
ext k
188
187
· dsimp only [spineEquiv, Equiv.coe_fn_mk]
189
188
rw [show op f = f.op from rfl]
190
- rw [spine_map_vertex, spine_spineToSimplex , spine_vertex]
189
+ rw [spine_map_vertex, spine_spineToSimplex_apply , spine_vertex]
191
190
let α : strArrowMk₂ f hi ⟶ strArrowMk₂ (⦋0 ⦌.const ⦋n⦌ (f.toOrderHom k)) :=
192
191
StructuredArrow.homMk ((⦋0 ⦌.const _ (by exact k)).op) (by simp; rfl)
193
192
exact congr_fun (s.w α).symm x
@@ -198,9 +197,9 @@ noncomputable def isPointwiseRightKanExtensionAt (n : ℕ) :
198
197
exact (isPointwiseRightKanExtensionAt.fac_aux₃ _ _ _ _).trans (congr_fun (s.w α).symm x)
199
198
uniq s m hm := by
200
199
ext x
201
- apply StrictSegal .spineInjective (X := X)
200
+ apply sx .spineInjective (X := X)
202
201
dsimp [spineEquiv]
203
- rw [StrictSegal.spine_spineToSimplex ]
202
+ rw [sx.spine_spineToSimplex_apply ]
204
203
ext i
205
204
· exact congr_fun (hm (StructuredArrow.mk (Y := op ⦋0 ⦌₂) (⦋0 ⦌.const ⦋n⦌ i).op)) x
206
205
· exact congr_fun (hm (.mk (Y := op ⦋1 ⦌₂) (.op (mkOfLe _ _ (Fin.castSucc_le_succ i))))) x
@@ -209,16 +208,21 @@ noncomputable def isPointwiseRightKanExtensionAt (n : ℕ) :
209
208
cones are limit cones, `rightExtensionInclusion X 2` is a pointwise right Kan extension. -/
210
209
noncomputable def isPointwiseRightKanExtension :
211
210
(rightExtensionInclusion X 2 ).IsPointwiseRightKanExtension :=
212
- fun Δ => isPointwiseRightKanExtensionAt X Δ.unop.len
211
+ fun Δ => sx. isPointwiseRightKanExtensionAt Δ.unop.len
213
212
214
- theorem isRightKanExtension :
213
+ theorem isRightKanExtension (sx : StrictSegal X) :
215
214
X.IsRightKanExtension (𝟙 ((inclusion 2 ).op ⋙ X)) :=
216
215
RightExtension.IsPointwiseRightKanExtension.isRightKanExtension
217
- ( isPointwiseRightKanExtension X)
216
+ sx. isPointwiseRightKanExtension
218
217
219
218
/-- When `X` is `StrictSegal`, `X` is 2-coskeletal. -/
220
- instance isCoskeletal : SimplicialObject.IsCoskeletal X 2 where
221
- isRightKanExtension := isRightKanExtension X
219
+ theorem isCoskeletal (sx : StrictSegal X) :
220
+ SimplicialObject.IsCoskeletal X 2 where
221
+ isRightKanExtension := sx.isRightKanExtension
222
+
223
+ /-- When `X` satisfies `IsStrictSegal`, `X` is 2-coskeletal. -/
224
+ instance isCoskeletal' [IsStrictSegal X] : SimplicialObject.IsCoskeletal X 2 :=
225
+ isCoskeletal <| ofIsStrictSegal X
222
226
223
227
end StrictSegal
224
228
@@ -232,8 +236,8 @@ namespace Nerve
232
236
233
237
open SSet
234
238
235
- example (C : Type u) [Category.{v} C] :
236
- SimplicialObject.IsCoskeletal (nerve C) 2 := by infer_instance
239
+ instance (C : Type u) [Category.{v} C] :
240
+ SimplicialObject.IsCoskeletal (nerve C) 2 := inferInstance
237
241
238
242
/-- The essential data of the nerve functor is contained in the 2-truncation, which is
239
243
recorded by the composite functor `nerveFunctor₂`. -/
0 commit comments