@@ -7,9 +7,7 @@ open import GpdCont.Group.MapConjugator using (Conjugator ; idConjugator ; compC
77open import GpdCont.Group.TwoCategory using (TwoGroup)
88
99open import GpdCont.TwoCategory.Base
10- open import GpdCont.TwoCategory.LaxFunctor
1110open import GpdCont.TwoCategory.StrictFunctor using (StrictFunctor)
12- open import GpdCont.TwoCategory.Pseudofunctor
1311open import GpdCont.TwoCategory.HomotopyGroupoid using (hGpdCat ; isLocallyGroupoidalHGpdCat)
1412open import GpdCont.TwoCategory.LocalCategory using (LocalCategory)
1513open import GpdCont.TwoCategory.StrictFunctor.LocalFunctor as LocalFunctor using (LocalFunctor)
@@ -204,130 +202,6 @@ module TwoFunc (ℓ : Level) where
204202 𝔹-rel-trans : (h₁ : TwoGroup.rel φ ψ) (h₂ : TwoGroup.rel ψ ρ) → 𝔹-rel (compConjugator h₁ h₂) ≡ 𝔹-rel h₁ ∙ 𝔹-rel h₂
205203 𝔹-rel-trans {φ} {ψ} {ρ} = Map.map≡-comp-∙ φ ψ ρ
206204
207- private
208- 𝔹-trans-lax : (φ : TwoGroup.hom G H) (ψ : TwoGroup.hom H K) → (𝔹-hom φ hGpdCat.∙₁ 𝔹-hom ψ) ≡ 𝔹-hom (φ TwoGroup.∙₁ ψ)
209- 𝔹-trans-lax {G} {H} {K} φ ψ = funExt (𝔹G.elimSet isSetMotive refl λ g i j → 𝔹K.loop ((φ TwoGroup.∙₁ ψ) .fst g) i) where
210- module 𝔹G = Delooping G
211- module 𝔹K = Delooping K
212-
213- isSetMotive : (x : Delooping.𝔹 G) → isSet ((𝔹-hom ψ $ 𝔹-hom φ x) ≡ (𝔹-hom (φ TwoGroup.∙₁ ψ) x))
214- isSetMotive x = 𝔹K.isGroupoid𝔹 _ _
215-
216- 𝔹-trans-lax-natural : {φ₁ φ₂ : TwoGroup.hom G H} {ψ₁ ψ₂ : TwoGroup.hom H K}
217- → (h : TwoGroup.rel φ₁ φ₂)
218- → (k : TwoGroup.rel ψ₁ ψ₂)
219- → ((𝔹-rel h hGpdCat.∙ₕ 𝔹-rel k) ∙ 𝔹-trans-lax φ₂ ψ₂) ≡ (𝔹-trans-lax φ₁ ψ₁ ∙ 𝔹-rel (h TwoGroup.∙ₕ k))
220- 𝔹-trans-lax-natural {G} {H} {K} {φ₁} {φ₂} {ψ₁} {ψ₂} h k = funExtSquare lax where
221- module K = GroupStr (str K)
222- module 𝔹G = Delooping G
223- module 𝔹H = Delooping H
224- module 𝔹K = Delooping K
225-
226- open 𝔹G using (cong⋆ ; cong⋆-∙)
227-
228- -- The meat of the proof: Horizontal composition computes to the correct loop at the point.
229- -- This is almost definitional, except that the LHS computes to the diagonal of a composite square,
230- -- in particular it is the diagonal that shows that the group element underlying `(h TwoGroup.∙ₕ k)`
231- -- is a conjugator of ψ₁ and ψ₂.
232- lemma : cong⋆ (𝔹-rel h hGpdCat.∙ₕ 𝔹-rel k) ≡ 𝔹K.loop ((h TwoGroup.∙ₕ k) .fst)
233- lemma = Map.map≡-loopᵝ ψ₁ ψ₂ k (h .fst)
234-
235- lax⋆ : cong⋆ (((𝔹-rel h hGpdCat.∙ₕ 𝔹-rel k) ∙ 𝔹-trans-lax φ₂ ψ₂)) ≡ cong⋆ (𝔹-trans-lax φ₁ ψ₁ ∙ 𝔹-rel (h TwoGroup.∙ₕ k))
236- lax⋆ =
237- cong⋆ (((𝔹-rel h hGpdCat.∙ₕ 𝔹-rel k) ∙ 𝔹-trans-lax φ₂ ψ₂)) ≡⟨ cong⋆-∙ (𝔹-rel h hGpdCat.∙ₕ 𝔹-rel k) (𝔹-trans-lax φ₂ ψ₂) ⟩
238- cong⋆ (𝔹-rel h hGpdCat.∙ₕ 𝔹-rel k) ∙ cong⋆ (𝔹-trans-lax φ₂ ψ₂) ≡⟨⟩
239- cong⋆ (𝔹-rel h hGpdCat.∙ₕ 𝔹-rel k) ∙ refl ≡⟨ sym $ GL.rUnit _ ⟩
240- cong⋆ (𝔹-rel h hGpdCat.∙ₕ 𝔹-rel k) ≡⟨ lemma ⟩
241- 𝔹K.loop ((h TwoGroup.∙ₕ k) .fst) ≡⟨⟩
242- cong⋆ (𝔹-rel (h TwoGroup.∙ₕ k)) ≡⟨ GL.lUnit _ ⟩
243- refl ∙ cong⋆ (𝔹-rel (h TwoGroup.∙ₕ k)) ≡⟨⟩
244- cong⋆ (𝔹-trans-lax φ₁ ψ₁) ∙ cong⋆ (𝔹-rel (h TwoGroup.∙ₕ k)) ≡⟨ sym $ cong⋆-∙ (𝔹-trans-lax φ₁ ψ₁) (𝔹-rel (h TwoGroup.∙ₕ k)) ⟩
245- cong⋆ (𝔹-trans-lax φ₁ ψ₁ ∙ 𝔹-rel (h TwoGroup.∙ₕ k)) ∎
246-
247- lax : (x : 𝔹G.𝔹) → (((𝔹-rel h hGpdCat.∙ₕ 𝔹-rel k) ∙ 𝔹-trans-lax φ₂ ψ₂) ≡$S x) ≡ (𝔹-trans-lax φ₁ ψ₁ ∙ 𝔹-rel (h TwoGroup.∙ₕ k) ≡$S x)
248- lax = 𝔹G.elimProp (λ x → 𝔹K.isGroupoid𝔹 _ _ _ _) lax⋆
249-
250- 𝔹-id-lax : (G : TwoGroup.ob) → hGpdCat.id-hom (𝔹-ob G) ≡ 𝔹-hom (TwoGroup.id-hom G)
251- 𝔹-id-lax G = sym (Map.map-id G)
252-
253- 𝔹-assoc : (φ : TwoGroup.hom G H) (ψ : TwoGroup.hom H K) (ρ : TwoGroup.hom K L)
254- → Square
255- ((𝔹-trans-lax φ ψ hGpdCat.∙ₕ refl′ (𝔹-hom ρ)) ∙ 𝔹-trans-lax (φ TwoGroup.∙₁ ψ) ρ)
256- ((refl′ (𝔹-hom φ) hGpdCat.∙ₕ 𝔹-trans-lax ψ ρ) ∙ 𝔹-trans-lax φ (ψ TwoGroup.∙₁ ρ))
257- (refl′ ((𝔹-hom φ hGpdCat.∙₁ 𝔹-hom ψ) hGpdCat.∙₁ 𝔹-hom ρ))
258- (cong 𝔹-hom (TwoGroup.comp-hom-assoc φ ψ ρ))
259- 𝔹-assoc {G} {H} {L} φ ψ ρ = funExtSquare assoc-ext where
260- module 𝔹G = Delooping G
261- module 𝔹L = Delooping L
262-
263- open 𝔹G using (cong⋆ ; cong⋆-∙)
264-
265- assoc-ext : (x : 𝔹G.𝔹) → Square
266- ((𝔹-trans-lax φ ψ hGpdCat.∙ₕ refl′ (𝔹-hom ρ)) ∙ 𝔹-trans-lax (φ TwoGroup.∙₁ ψ) ρ ≡$ x)
267- (((refl′ (𝔹-hom φ) hGpdCat.∙ₕ 𝔹-trans-lax ψ ρ) ∙ 𝔹-trans-lax φ (ψ TwoGroup.∙₁ ρ)) ≡$ x)
268- refl
269- (λ i → 𝔹-hom (TwoGroup.comp-hom-assoc φ ψ ρ i) x)
270- assoc-ext = 𝔹G.elimProp (λ x → 𝔹L.isPropDeloopingSquare) $
271- let
272- p = (𝔹-trans-lax φ ψ hGpdCat.∙ₕ refl′ (𝔹-hom ρ))
273- q = (𝔹-trans-lax (φ TwoGroup.∙₁ ψ) ρ)
274- r = (refl′ (𝔹-hom φ) hGpdCat.∙ₕ 𝔹-trans-lax ψ ρ)
275- s = (𝔹-trans-lax φ (ψ TwoGroup.∙₁ ρ))
276- in
277- (cong⋆ $ p ∙ q) ≡⟨ cong⋆-∙ p q ⟩
278- (cong⋆ p ∙ cong⋆ q) ≡⟨⟩
279- (refl ∙ refl) ≡⟨ sym $ cong⋆-∙ r s ⟩
280- (cong⋆ $ r ∙ s) ∎
281-
282- 𝔹-unit-left : (φ : TwoGroup.hom G H)
283- → Square
284- ((𝔹-id-lax G hGpdCat.∙ₕ refl′ (𝔹-hom φ)) hGpdCat.∙ᵥ 𝔹-trans-lax idGroupHom φ)
285- (refl′ (𝔹-hom φ))
286- (hGpdCat.comp-hom-unit-left (𝔹-hom φ))
287- (cong 𝔹-hom (TwoGroup.comp-hom-unit-left φ))
288- 𝔹-unit-left {G} {H} φ = 𝔹-hom-Square unit-left⋆ where
289- module 𝔹G = Delooping G
290- module 𝔹H = Delooping H
291-
292- p : (id ⟨ 𝔹-ob G ⟩) ⋆ (𝔹-hom φ) ≡ (𝔹-hom idGroupHom) ⋆ (𝔹-hom φ)
293- p = 𝔹-id-lax G hGpdCat.∙ₕ refl′ (𝔹-hom φ)
294-
295- q : (𝔹-hom idGroupHom ⋆ 𝔹-hom φ) ≡ 𝔹-hom (idGroupHom TwoGroup.∙₁ φ)
296- q = 𝔹-trans-lax idGroupHom φ
297-
298- unit-left⋆ : 𝔹G.cong⋆ (p ∙ q) ≡ refl′ 𝔹H.⋆
299- unit-left⋆ = 𝔹G.cong⋆-∙ p q ∙ sym compPathRefl
300-
301- 𝔹-unit-right : (φ : TwoGroup.hom G H)
302- → Square
303- ((refl′ (𝔹-hom φ) hGpdCat.∙ₕ 𝔹-id-lax H) hGpdCat.∙ᵥ 𝔹-trans-lax φ idGroupHom)
304- (refl′ (𝔹-hom φ))
305- (hGpdCat.comp-hom-unit-right (𝔹-hom φ))
306- (cong 𝔹-hom (TwoGroup.comp-hom-unit-right φ))
307- 𝔹-unit-right {G} {H} φ = 𝔹-hom-Square unit-right⋆ where
308- module 𝔹G = Delooping G
309- module 𝔹H = Delooping H
310-
311- p = refl′ (𝔹-hom φ) hGpdCat.∙ₕ 𝔹-id-lax H
312- q = 𝔹-trans-lax φ idGroupHom
313-
314- -- Both p and q reduce to refl at the point:
315- unit-right⋆ : 𝔹G.cong⋆ (p ∙ q) ≡ refl′ 𝔹H.⋆
316- unit-right⋆ = 𝔹G.cong⋆-∙ p q ∙ sym compPathRefl
317-
318- TwoDelooping : LaxFunctor (TwoGroup ℓ) (hGpdCat ℓ)
319- TwoDelooping .LaxFunctor.F-ob = 𝔹-ob
320- TwoDelooping .LaxFunctor.F-hom = 𝔹-hom
321- TwoDelooping .LaxFunctor.F-rel = 𝔹-rel
322- TwoDelooping .LaxFunctor.F-rel-id = 𝔹-rel-id
323- TwoDelooping .LaxFunctor.F-rel-trans = 𝔹-rel-trans
324- TwoDelooping .LaxFunctor.F-trans-lax = 𝔹-trans-lax
325- TwoDelooping .LaxFunctor.F-trans-lax-natural = 𝔹-trans-lax-natural
326- TwoDelooping .LaxFunctor.F-id-lax = 𝔹-id-lax
327- TwoDelooping .LaxFunctor.F-assoc = 𝔹-assoc
328- TwoDelooping .LaxFunctor.F-unit-left = 𝔹-unit-left
329- TwoDelooping .LaxFunctor.F-unit-right = 𝔹-unit-right
330-
331205 private
332206 𝔹-hom-id : (G : TwoGroup.ob) → hGpdCat.id-hom (𝔹-ob G) ≡ 𝔹-hom (TwoGroup.id-hom G)
333207 𝔹-hom-id G = sym (Map.map-id G)
@@ -402,42 +276,42 @@ module TwoFunc (ℓ : Level) where
402276 unit-right = 𝔹-hom-Square (reflSquare 𝔹H.⋆)
403277
404278
405- TwoDeloopingˢ : StrictFunctor (TwoGroup ℓ) (hGpdCat ℓ)
406- TwoDeloopingˢ .StrictFunctor.F-ob = 𝔹-ob
407- TwoDeloopingˢ .StrictFunctor.F-hom = 𝔹-hom
408- TwoDeloopingˢ .StrictFunctor.F-rel = 𝔹-rel
409- TwoDeloopingˢ .StrictFunctor.F-rel-id = 𝔹-rel-id
410- TwoDeloopingˢ .StrictFunctor.F-rel-trans = 𝔹-rel-trans
411- TwoDeloopingˢ .StrictFunctor.F-hom-comp = 𝔹-hom-comp
412- TwoDeloopingˢ .StrictFunctor.F-hom-id = 𝔹-hom-id
413- TwoDeloopingˢ .StrictFunctor.F-assoc-filler-left = 𝔹-assoc.filler-left
414- TwoDeloopingˢ .StrictFunctor.F-assoc-filler-right = 𝔹-assoc.filler-right
415- TwoDeloopingˢ .StrictFunctor.F-assoc = 𝔹-assoc.assoc
416- TwoDeloopingˢ .StrictFunctor.F-unit-left-filler = 𝔹-unit-left.filler
417- TwoDeloopingˢ .StrictFunctor.F-unit-left = 𝔹-unit-left.unit-left
418- TwoDeloopingˢ .StrictFunctor.F-unit-right-filler = 𝔹-unit-right.filler
419- TwoDeloopingˢ .StrictFunctor.F-unit-right = 𝔹-unit-right.unit-right
279+ 𝔹 : StrictFunctor (TwoGroup ℓ) (hGpdCat ℓ)
280+ 𝔹 .StrictFunctor.F-ob = 𝔹-ob
281+ 𝔹 .StrictFunctor.F-hom = 𝔹-hom
282+ 𝔹 .StrictFunctor.F-rel = 𝔹-rel
283+ 𝔹 .StrictFunctor.F-rel-id = 𝔹-rel-id
284+ 𝔹 .StrictFunctor.F-rel-trans = 𝔹-rel-trans
285+ 𝔹 .StrictFunctor.F-hom-comp = 𝔹-hom-comp
286+ 𝔹 .StrictFunctor.F-hom-id = 𝔹-hom-id
287+ 𝔹 .StrictFunctor.F-assoc-filler-left = 𝔹-assoc.filler-left
288+ 𝔹 .StrictFunctor.F-assoc-filler-right = 𝔹-assoc.filler-right
289+ 𝔹 .StrictFunctor.F-assoc = 𝔹-assoc.assoc
290+ 𝔹 .StrictFunctor.F-unit-left-filler = 𝔹-unit-left.filler
291+ 𝔹 .StrictFunctor.F-unit-left = 𝔹-unit-left.unit-left
292+ 𝔹 .StrictFunctor.F-unit-right-filler = 𝔹-unit-right.filler
293+ 𝔹 .StrictFunctor.F-unit-right = 𝔹-unit-right.unit-right
420294
421295 private
422- module TwoDeloopingˢ = StrictFunctor TwoDeloopingˢ
296+ module 𝔹 = StrictFunctor 𝔹
423297
424- isLocallyFullyFaithfulDelooping : LocalFunctor.isLocallyFullyFaithful TwoDeloopingˢ
298+ isLocallyFullyFaithfulDelooping : LocalFunctor.isLocallyFullyFaithful 𝔹
425299 isLocallyFullyFaithfulDelooping G H = goal where module _ (φ ψ : TwoGroup.hom G H) where
426300 goal : isEquiv 𝔹-rel
427301 goal = equivIsEquiv (MapPathEquiv.map≡Equiv φ ψ)
428302
429303 localDeloopingEmbedding : {G H : TwoGroup.ob} (φ ψ : TwoGroup.hom G H)
430- → TwoGroup.rel φ ψ ≃ hGpdCat.rel (TwoDeloopingˢ .₁ φ) (TwoDeloopingˢ .₁ ψ)
431- localDeloopingEmbedding = LocalFunctor.localEmbedding TwoDeloopingˢ isLocallyFullyFaithfulDelooping
304+ → TwoGroup.rel φ ψ ≃ hGpdCat.rel (𝔹 .₁ φ) (𝔹 .₁ ψ)
305+ localDeloopingEmbedding = LocalFunctor.localEmbedding 𝔹 isLocallyFullyFaithfulDelooping
432306
433- isLocallyEssentiallySurjectiveDelooping : LocalFunctor.isLocallyEssentiallySurjective TwoDeloopingˢ
307+ isLocallyEssentiallySurjectiveDelooping : LocalFunctor.isLocallyEssentiallySurjective 𝔹
434308 isLocallyEssentiallySurjectiveDelooping G H = goal where module _ (f : ⟨ 𝔹-ob G ⟩ → ⟨ 𝔹-ob H ⟩) where
435309 open import Cubical.HITs.PropositionalTruncation.Monad
436310 goal : ∃[ φ ∈ GroupHom G H ] CatIso (LocalCategory _ (𝔹-ob G) (𝔹-ob H)) (map φ) f
437311 goal = do
438312 (φ , section-f-mapφ) ← LocalInverse.isSurjection-map f
439313 ∃-intro φ $ pathToIso section-f-mapφ
440314
441- isLocallyWeakEquivalenceDelooping : LocalFunctor.isLocallyWeakEquivalence TwoDeloopingˢ
315+ isLocallyWeakEquivalenceDelooping : LocalFunctor.isLocallyWeakEquivalence 𝔹
442316 isLocallyWeakEquivalenceDelooping G H .isWeakEquivalence.fullfaith = isLocallyFullyFaithfulDelooping G H
443317 isLocallyWeakEquivalenceDelooping G H .isWeakEquivalence.esssurj = isLocallyEssentiallySurjectiveDelooping G H
0 commit comments