@@ -8,6 +8,7 @@ open import GpdCont.Group.TwoCategory using (TwoGroup)
88
99open import GpdCont.TwoCategory.Base
1010open import GpdCont.TwoCategory.LaxFunctor
11+ open import GpdCont.TwoCategory.StrictFunctor using (StrictFunctor)
1112open import GpdCont.TwoCategory.Pseudofunctor
1213open import GpdCont.TwoCategory.HomotopyGroupoid using (hGpdCat ; isLocallyGroupoidalHGpdCat)
1314open import GpdCont.TwoCategory.LocalCategory using (LocalCategory)
@@ -352,3 +353,78 @@ module TwoFunc (ℓ : Level) where
352353 isLocallyWeakEquivalenceDelooping : LocalFunctor.isLocallyWeakEquivalence TwoDelooping
353354 isLocallyWeakEquivalenceDelooping G H .isWeakEquivalence.fullfaith = isLocallyFullyFaithfulDelooping G H
354355 isLocallyWeakEquivalenceDelooping G H .isWeakEquivalence.esssurj = isLocallyEssentiallySurjectiveDelooping G H
356+
357+ private
358+ 𝔹-hom-id : (G : TwoGroup.ob) → hGpdCat.id-hom (𝔹-ob G) ≡ 𝔹-hom (TwoGroup.id-hom G)
359+ 𝔹-hom-id G = sym (Map.map-id G)
360+
361+ 𝔹-hom-comp : {G H K : TwoGroup.ob} (φ : TwoGroup.hom G H) (ψ : TwoGroup.hom H K)
362+ → (𝔹-hom φ hGpdCat.∙₁ 𝔹-hom ψ) ≡ 𝔹-hom (φ TwoGroup.∙₁ ψ)
363+ 𝔹-hom-comp φ ψ = sym (Map.map-comp φ ψ)
364+
365+ module 𝔹-assoc {G H K L : TwoGroup.ob} (φ* @ (φ , _) : TwoGroup.hom G H) (ψ* @ (ψ , _) : TwoGroup.hom H K) (ρ* @ (ρ , _) : TwoGroup.hom K L) where
366+ module 𝔹G = Delooping _ (str G)
367+ module 𝔹L = Delooping _ (str L)
368+ assoc-hom : (𝔹-hom φ* ⋆ 𝔹-hom ψ*) ⋆ 𝔹-hom ρ* ≡ 𝔹-hom ((φ* TwoGroup.∙₁ ψ*) TwoGroup.∙₁ ρ*)
369+ assoc-hom = funExt (𝔹G.elimSet (λ _ → str (𝔹-ob L) _ _) refl λ g j i → 𝔹L.loop (ρ (ψ (φ g))) j)
370+
371+ filler-left : PathCompFiller (cong (λ - → hGpdCat._∙₁_ {x = 𝔹-ob G} - (𝔹-hom ρ*)) (sym (Map.map-comp φ* ψ*))) (sym (Map.map-comp (φ* TwoGroup.∙₁ ψ*) ρ*))
372+ filler-left .fst = funExt (𝔹G.elimSet (λ _ → str (𝔹-ob L) _ _) refl λ g j i → 𝔹L.loop (ρ (ψ (φ g))) j)
373+ filler-left .snd = 𝔹-hom-Square λ i j → 𝔹L.⋆
374+ {-# INJECTIVE_FOR_INFERENCE filler-left #-}
375+
376+ filler-right : PathCompFiller (cong (λ - → hGpdCat._∙₁_ {z = 𝔹-ob L} (𝔹-hom φ*) -) (sym (Map.map-comp ψ* ρ*))) (sym (Map.map-comp φ* (ψ* TwoGroup.∙₁ ρ*)))
377+ filler-right .fst = funExt (𝔹G.elimSet (λ _ → str (𝔹-ob L) _ _) refl λ g j i → 𝔹L.loop (ρ (ψ (φ g))) j)
378+ filler-right .snd = 𝔹-hom-Square λ i j → 𝔹L.⋆
379+ {-# INJECTIVE_FOR_INFERENCE filler-right #-}
380+
381+ assoc : PathP
382+ (λ i → hGpdCat.comp-hom-assoc (𝔹-hom φ*) (𝔹-hom ψ*) (𝔹-hom ρ*) i ≡ 𝔹-hom (TwoGroup.comp-hom-assoc φ* ψ* ρ* i))
383+ (filler-left .fst)
384+ (filler-right .fst)
385+ assoc = 𝔹-hom-Square λ i j → 𝔹L.⋆
386+ {-# INJECTIVE_FOR_INFERENCE assoc #-}
387+
388+ module 𝔹-unit-left {G H : TwoGroup.ob} (φ : TwoGroup.hom G H) where
389+ module 𝔹G = Delooping _ (str G)
390+ module 𝔹H = Delooping _ (str H)
391+
392+ filler : PathCompFiller (cong (λ - → hGpdCat._∙₁_ {x = 𝔹-ob G} - (𝔹-hom φ)) (sym (Map.map-id G))) (sym (Map.map-comp (TwoGroup.id-hom G) φ))
393+ filler .fst = cong 𝔹-hom (sym $ TwoGroup.comp-hom-unit-left φ)
394+ filler .snd = 𝔹-hom-Square λ i j → 𝔹H.⋆
395+ {-# INJECTIVE_FOR_INFERENCE filler #-}
396+
397+ unit-left : PathP (λ i → hGpdCat.comp-hom-unit-left (𝔹-hom φ) i ≡ 𝔹-hom (TwoGroup.comp-hom-unit-left φ i))
398+ (filler .fst)
399+ (refl′ (𝔹-hom φ))
400+ unit-left = 𝔹-hom-Square λ i j → 𝔹H.⋆
401+
402+ module 𝔹-unit-right {G H : TwoGroup.ob} (φ : TwoGroup.hom G H) where
403+ module 𝔹G = Delooping _ (str G)
404+ module 𝔹H = Delooping _ (str H)
405+ filler : PathCompFiller (cong ((𝔹-hom φ) hGpdCat.∙₁_) (𝔹-hom-id H)) (𝔹-hom-comp φ (TwoGroup.id-hom H))
406+ filler .fst = cong 𝔹-hom (sym $ TwoGroup.comp-hom-unit-right φ)
407+ filler .snd = 𝔹-hom-Square λ i j → 𝔹H.⋆
408+ {-# INJECTIVE_FOR_INFERENCE filler #-}
409+
410+ unit-right : PathP (λ i → hGpdCat.comp-hom-unit-right (𝔹-hom φ) i ≡ 𝔹-hom (TwoGroup.comp-hom-unit-right φ i))
411+ (filler .fst)
412+ (refl′ (𝔹-hom φ))
413+ unit-right = 𝔹-hom-Square λ i j → 𝔹H.⋆
414+
415+
416+ TwoDeloopingˢ : StrictFunctor (TwoGroup ℓ) (hGpdCat ℓ)
417+ TwoDeloopingˢ .StrictFunctor.F-ob = 𝔹-ob
418+ TwoDeloopingˢ .StrictFunctor.F-hom = 𝔹-hom
419+ TwoDeloopingˢ .StrictFunctor.F-rel = 𝔹-rel
420+ TwoDeloopingˢ .StrictFunctor.F-rel-id = 𝔹-rel-id
421+ TwoDeloopingˢ .StrictFunctor.F-rel-trans = 𝔹-rel-trans
422+ TwoDeloopingˢ .StrictFunctor.F-hom-comp = 𝔹-hom-comp
423+ TwoDeloopingˢ .StrictFunctor.F-hom-id = 𝔹-hom-id
424+ TwoDeloopingˢ .StrictFunctor.F-assoc-filler-left = 𝔹-assoc.filler-left
425+ TwoDeloopingˢ .StrictFunctor.F-assoc-filler-right = 𝔹-assoc.filler-right
426+ TwoDeloopingˢ .StrictFunctor.F-assoc = 𝔹-assoc.assoc
427+ TwoDeloopingˢ .StrictFunctor.F-unit-left-filler = 𝔹-unit-left.filler
428+ TwoDeloopingˢ .StrictFunctor.F-unit-left = 𝔹-unit-left.unit-left
429+ TwoDeloopingˢ .StrictFunctor.F-unit-right-filler = 𝔹-unit-right.filler
430+ TwoDeloopingˢ .StrictFunctor.F-unit-right = 𝔹-unit-right.unit-right
0 commit comments