module GpdCont.WildCat.NatTrans where open import GpdCont.Prelude renaming (id to idfun) open import Cubical.Foundations.Function using (flip) renaming (_∘_ to _∘fun_) open import Cubical.Foundations.HLevels open import Cubical.WildCat.Base using (WildCat ; _[_,_] ; concatMor) open import Cubical.WildCat.Functor as Functor using (WildFunctor ; WildNatTrans) private variable ℓo ℓh : Level C D : WildCat ℓo ℓh open WildCat open WildFunctor open WildNatTrans WildNatTransPath : {F G : WildFunctor C D} {α β : WildNatTrans C D F G} → (ob-path : ∀ (x : C .ob) → α .N-ob x ≡ β .N-ob x) → (hom-path : ∀ {x y} (f : C [ x , y ]) → PathP (λ i → (F .F-hom f) ⋆⟨ D ⟩ ob-path y i ≡ ob-path x i ⋆⟨ D ⟩ (G .F-hom f)) (α .N-hom f) (β .N-hom f) ) → α ≡ β WildNatTransPath ob-path hom-path i .N-ob x = ob-path x i WildNatTransPath ob-path hom-path i .N-hom f = hom-path f i WildNatTransSquare : ∀ {ℓo ℓo′ ℓh ℓh′} {C : WildCat ℓo ℓh} {D : WildCat ℓo′ ℓh′} {F G : WildFunctor C D} → {α₀₀ α₀₁ : WildNatTrans C D F G} → {α₀₋ : α₀₀ ≡ α₀₁} → {α₁₀ α₁₁ : WildNatTrans C D F G} → {α₁₋ : α₁₀ ≡ α₁₁} → {α₋₀ : α₀₀ ≡ α₁₀} → {α₋₁ : α₀₁ ≡ α₁₁} → (ob-square : ∀ (x : C .ob) → Square (cong N-ob α₀₋ ≡$ x) (cong N-ob α₁₋ ≡$ x) (cong N-ob α₋₀ ≡$ x) (cong N-ob α₋₁ ≡$ x)) → (hom-square : ∀ {x y} (f : C [ x , y ]) → SquareP (λ i j → (F .F-hom f) ⋆⟨ D ⟩ (ob-square y i j) ≡ (ob-square x i j) ⋆⟨ D ⟩ (G .F-hom f)) (λ j → α₀₋ j .N-hom f) (λ j → α₁₋ j .N-hom f) (λ i → α₋₀ i .N-hom f) (λ i → α₋₁ i .N-hom f) ) → Square α₀₋ α₁₋ α₋₀ α₋₁ WildNatTransSquare ob-square hom-square i j .N-ob x = ob-square x i j WildNatTransSquare ob-square hom-square i j .N-hom f = hom-square f i j isGroupoidHom→WildNatTransSquare : {F G : WildFunctor C D} → (∀ {x y} → isGroupoid (D [ x , y ])) → {α₀₀ α₀₁ : WildNatTrans C D F G} → {α₀₋ : α₀₀ ≡ α₀₁} → {α₁₀ α₁₁ : WildNatTrans C D F G} → {α₁₋ : α₁₀ ≡ α₁₁} → {α₋₀ : α₀₀ ≡ α₁₀} → {α₋₁ : α₀₁ ≡ α₁₁} → (ob-square : ∀ (x : C .ob) → Square (cong N-ob α₀₋ ≡$ x) (cong N-ob α₁₋ ≡$ x) (cong N-ob α₋₀ ≡$ x) (cong N-ob α₋₁ ≡$ x)) → Square α₀₋ α₁₋ α₋₀ α₋₁ isGroupoidHom→WildNatTransSquare {C} {D} {F} {G} gpd-hom ob-square = WildNatTransSquare ob-square λ {x} {y} f → isSet→SquareP {A = λ i j → concatMor D (F .F-hom f) (ob-square y i j) ≡ concatMor D (ob-square x i j) (G .F-hom f)} (λ i j → gpd-hom _ _) _ _ _ _