{-# OPTIONS --safe #-}
module Cubical.WildCat.Product where

open import Cubical.Foundations.Prelude

open import Cubical.Data.Sigma renaming (_×_ to _×'_)

open import Cubical.WildCat.Base

private
  variable
     ℓ' : Level
    ℓC ℓC' ℓD ℓD' : Level

open WildCat

_×_ :  (C : WildCat ℓC ℓC') (D : WildCat ℓD ℓD')  WildCat _ _
ob (C × D) = ob C ×' ob D
Hom[_,_] (C × D) (c , d) (c' , d') =
  Hom[_,_] C c c' ×' Hom[_,_] D d d'
id (C × D) = id C , id D
_⋆_ (C × D) f g = _⋆_ C (fst f) (fst g) , _⋆_ D (snd f) (snd g)
⋆IdL (C × D) (f , g) i = (⋆IdL C f i) , (⋆IdL D g i)
⋆IdR (C × D) (f , g) i = (⋆IdR C f i) , (⋆IdR D g i)
⋆Assoc (C × D) (f , g) (f' , g') (f'' , g'') i =
  ⋆Assoc C f f' f'' i , ⋆Assoc D g g' g'' i