@@ -2,43 +2,106 @@ module GpdCont.SymmetricContainer.TwoCategory where
22
33open import GpdCont.Prelude
44open import GpdCont.SymmetricContainer.Base
5- open import GpdCont.SymmetricContainer.Morphism using (idMorphism ; isGroupoidMorphism)
5+ open import GpdCont.SymmetricContainer.Morphism using (idMorphism ; isGroupoidMorphism ; Morphism )
66open import GpdCont.SymmetricContainer.WildCat using (Eval ; EvalFunctor ; module EvalFunctor ; SymmContWildCat)
7- open import GpdCont.SymmetricContainer.Eval using (⟦-⟧-Path ; ⟦-⟧ᵗ-Path)
7+ open import GpdCont.SymmetricContainer.Eval using (⟦-⟧-Path ; ⟦-⟧ᵗ-Path ; ⟦_⟧ )
88open import GpdCont.TwoCategory.Base
99open import GpdCont.TwoCategory.TwoDiscrete using (TwoDiscrete)
1010open import GpdCont.TwoCategory.LaxFunctor
11+ open import GpdCont.TwoCategory.StrictFunctor
12+ open import GpdCont.TwoCategory.HomotopyGroupoid using () renaming (hGpdCat to hGpd)
1113open import GpdCont.TwoCategory.GroupoidEndo using (Endo)
12- open import GpdCont.WildCat.NatTrans using (WildNatTransPath)
14+ open import GpdCont.WildCat.NatTrans using (WildNatTransPath ; isGroupoidHom→WildNatTransSquare)
15+ open import GpdCont.WildCat.TypeOfHLevel using (idNatTransₗ ; idNatTransᵣ ; hGroupoidNatTransSquare)
1316open import GpdCont.WildCat.TypeOfHLevel using (idNat ; _⊛_)
1417
1518open import GpdCont.Polynomial using (poly⟨_,_⟩ ; Polynomial)
1619
1720import Cubical.Foundations.GroupoidLaws as GL
21+ open import Cubical.Foundations.Path using (compPath→Square)
1822open import Cubical.WildCat.Base using (WildCat)
1923open import Cubical.WildCat.Functor using (WildFunctor ; WildNatTrans)
2024
25+ {-# INJECTIVE_FOR_INFERENCE ⟨_⟩ #-}
26+
2127SymmContCat : (ℓ : Level) → TwoCategory (ℓ-suc ℓ) ℓ ℓ
2228SymmContCat ℓ = TwoDiscrete (SymmContWildCat ℓ) λ _ _ → isGroupoidMorphism
2329
24- private
25- module SymmContWildCat {ℓ} = WildCat (SymmContWildCat ℓ)
26- ⟦-⟧-id-lax : ∀ {ℓ} (C : SymmetricContainer ℓ) → idNat ℓ (Eval C) ≡ EvalFunctor.on-hom (idMorphism C)
27- ⟦-⟧-id-lax C = WildNatTransPath (λ X → funExt λ x → ⟦-⟧ᵗ-Path C refl refl) λ { v i j x → poly⟨ Polynomial.shape x , v ∘ Polynomial.label x ⟩ }
28-
29- ⟦-⟧-trans-lax : ∀ {ℓ} {F G H : SymmetricContainer ℓ} (f : SymmContWildCat.Hom[ F , G ]) (g : SymmContWildCat.Hom[ G , H ])
30- → _⊛_ ℓ (EvalFunctor.on-hom f) (EvalFunctor.on-hom g) ≡ EvalFunctor.on-hom (f SymmContWildCat.⋆ g)
31- ⟦-⟧-trans-lax {H} f g = WildNatTransPath (λ X → funExt λ x → ⟦-⟧ᵗ-Path H refl refl) λ { v i j x → poly⟨ {!_ !} , {! !} ⟩ }
32-
33- ⟦-⟧ : ∀ {ℓ} → LaxFunctor (SymmContCat ℓ) (Endo ℓ)
34- ⟦-⟧ .LaxFunctor.F-ob = Eval
35- ⟦-⟧ .LaxFunctor.F-hom = EvalFunctor.on-hom
36- ⟦-⟧ .LaxFunctor.F-rel = cong EvalFunctor.on-hom
37- ⟦-⟧ .LaxFunctor.F-rel-id = refl
38- ⟦-⟧ .LaxFunctor.F-rel-trans = GL.cong-∙ EvalFunctor.on-hom
39- ⟦-⟧ .LaxFunctor.F-trans-lax = ⟦-⟧-trans-lax
40- ⟦-⟧ .LaxFunctor.F-trans-lax-natural = {! !}
41- ⟦-⟧ .LaxFunctor.F-id-lax = ⟦-⟧-id-lax
42- ⟦-⟧ .LaxFunctor.F-assoc f g h = {! !}
43- ⟦-⟧ .LaxFunctor.F-unit-left = {! !}
44- ⟦-⟧ .LaxFunctor.F-unit-right = {! !}
30+ module ⟦-⟧ {ℓ} where
31+ private
32+ module SymmCont = TwoCategory (SymmContCat ℓ)
33+ module Endo = TwoCategory (Endo ℓ)
34+ module hGpd = TwoCategory (hGpd ℓ)
35+
36+ ⟦_⟧₀ = Eval
37+ ⟦_⟧₁ = EvalFunctor.on-hom
38+
39+ hom-comp : ∀ {F G H : SymmCont.ob} (f : SymmCont.hom F G) (g : SymmCont.hom G H)
40+ → ⟦ f ⟧₁ Endo.∙₁ ⟦ g ⟧₁ ≡ ⟦ f SymmCont.∙₁ g ⟧₁
41+ hom-comp f g = sym (EvalFunctor.on-hom-seq f g)
42+
43+ hom-id : (F : SymmCont.ob) → Endo.id-hom ⟦ F ⟧₀ ≡ ⟦ SymmCont.id-hom F ⟧₁
44+ hom-id f = sym EvalFunctor.on-hom-id
45+
46+ module _ {F G : SymmCont.ob} (f : SymmCont.hom F G) where
47+ private module f = Morphism f
48+ unit-left-filler : PathCompFiller (cong (Endo._∙₁ ⟦ f ⟧₁) (hom-id F)) (hom-comp (SymmCont.id-hom F) f)
49+ unit-left-filler .fst = Endo.comp-hom-unit-left ⟦ f ⟧₁
50+ unit-left-filler .snd = hGroupoidNatTransSquare ℓ λ X → reflSquare _
51+
52+ unit-left : PathP (λ i → Endo.comp-hom-unit-left ⟦ f ⟧₁ i ≡ ⟦ f ⟧₁) (Endo.comp-hom-unit-left ⟦ f ⟧₁) (refl′ ⟦ f ⟧₁)
53+ unit-left i j = Endo.comp-hom-unit-left ⟦ f ⟧₁ (i ∨ j)
54+
55+ unit-right-filler : PathCompFiller (cong (⟦ f ⟧₁ Endo.∙₁_) (hom-id G)) (hom-comp f (SymmCont.id-hom G))
56+ unit-right-filler .fst = Endo.comp-hom-unit-right ⟦ f ⟧₁
57+ unit-right-filler .snd = hGroupoidNatTransSquare ℓ λ X → reflSquare _
58+
59+ unit-right : PathP (λ i → Endo.comp-hom-unit-right ⟦ f ⟧₁ i ≡ ⟦ f ⟧₁) (Endo.comp-hom-unit-right ⟦ f ⟧₁) (refl′ ⟦ f ⟧₁)
60+ unit-right i j = Endo.comp-hom-unit-right ⟦ f ⟧₁ (i ∨ j)
61+
62+ module _ {F G H : SymmCont.ob} (f : SymmCont.hom F G) (g : SymmCont.hom G H) where
63+ open WildNatTrans
64+ comp-hom-nat-filler : ∀ {x y} (α : hGpd.hom x y) → (⟦ f ⟧₁ Endo.∙₁ ⟦ g ⟧₁) .N-hom {x} {y} α ≡ refl
65+ comp-hom-nat-filler α = sym GL.compPathRefl
66+
67+ module _ {F G H K : SymmCont.ob} (f : SymmCont.hom F G) (g : SymmCont.hom G H) (h : SymmCont.hom H K) where
68+ open WildNatTrans
69+
70+ assoc-filler-left : PathCompFiller (cong (Endo._∙₁ ⟦ h ⟧₁) (hom-comp f g)) (hom-comp (f SymmCont.∙₁ g) h)
71+ assoc-filler-left .fst = WildNatTransPath
72+ (λ X → refl)
73+ λ {x} {y} α →
74+ ((⟦ f ⟧₁ Endo.∙₁ ⟦ g ⟧₁) Endo.∙₁ ⟦ h ⟧₁) .N-hom {x} {y} α ≡[ i ]⟨ ((hom-comp f g i) Endo.∙₁ ⟦ h ⟧₁) .N-hom {x} {y} α ⟩
75+ (⟦ f SymmCont.∙₁ g ⟧₁ Endo.∙₁ ⟦ h ⟧₁) .N-hom {x} {y} α ≡⟨ comp-hom-nat-filler (f SymmCont.∙₁ g) h {x} {y} α ⟩
76+ ⟦ (f SymmCont.∙₁ g) SymmCont.∙₁ h ⟧₁ .N-hom {x} {y} α ∎
77+ assoc-filler-left .snd = hGroupoidNatTransSquare ℓ λ X → reflSquare _
78+
79+ assoc-filler-right : PathCompFiller (cong (⟦ f ⟧₁ Endo.∙₁_) (hom-comp g h)) (hom-comp f (g SymmCont.∙₁ h))
80+ assoc-filler-right .fst = WildNatTransPath (λ X → refl)
81+ λ {x} {y} α →
82+ (⟦ f ⟧₁ Endo.∙₁ (⟦ g ⟧₁ Endo.∙₁ ⟦ h ⟧₁)) .N-hom {x} {y} α ≡[ i ]⟨ (⟦ f ⟧₁ Endo.∙₁ (hom-comp g h i)) .N-hom {x} {y} α ⟩
83+ (⟦ f ⟧₁ Endo.∙₁ (⟦ g SymmCont.∙₁ h ⟧₁)) .N-hom {x} {y} α ≡⟨ comp-hom-nat-filler f (g SymmCont.∙₁ h) {x} {y} α ⟩
84+ ⟦ f SymmCont.∙₁ (g SymmCont.∙₁ h) ⟧₁ .N-hom {x} {y} α ∎
85+ assoc-filler-right .snd = hGroupoidNatTransSquare ℓ λ X → reflSquare _
86+
87+ assoc : PathP
88+ (λ i → Endo.comp-hom-assoc ⟦ f ⟧₁ ⟦ g ⟧₁ ⟦ h ⟧₁ i ≡ ⟦ SymmCont.comp-hom-assoc f g h i ⟧₁)
89+ (assoc-filler-left .fst)
90+ (assoc-filler-right .fst)
91+ assoc = hGroupoidNatTransSquare ℓ λ X → reflSquare _
92+
93+ ⟦-⟧ : ∀ {ℓ} → StrictFunctor (SymmContCat ℓ) (Endo ℓ)
94+ ⟦-⟧ .StrictFunctor.F-ob = Eval
95+ ⟦-⟧ .StrictFunctor.F-hom = EvalFunctor.on-hom
96+ ⟦-⟧ .StrictFunctor.F-rel = cong EvalFunctor.on-hom
97+ ⟦-⟧ .StrictFunctor.F-rel-id = refl
98+ ⟦-⟧ .StrictFunctor.F-rel-trans = GL.cong-∙ EvalFunctor.on-hom
99+ ⟦-⟧ .StrictFunctor.F-hom-comp = ⟦-⟧.hom-comp
100+ ⟦-⟧ .StrictFunctor.F-hom-id = ⟦-⟧.hom-id
101+ ⟦-⟧ .StrictFunctor.F-assoc-filler-left = ⟦-⟧.assoc-filler-left
102+ ⟦-⟧ .StrictFunctor.F-assoc-filler-right = ⟦-⟧.assoc-filler-right
103+ ⟦-⟧ .StrictFunctor.F-assoc = ⟦-⟧.assoc
104+ ⟦-⟧ .StrictFunctor.F-unit-left-filler = ⟦-⟧.unit-left-filler
105+ ⟦-⟧ .StrictFunctor.F-unit-left = ⟦-⟧.unit-left
106+ ⟦-⟧ .StrictFunctor.F-unit-right-filler = ⟦-⟧.unit-right-filler
107+ ⟦-⟧ .StrictFunctor.F-unit-right = ⟦-⟧.unit-right
0 commit comments