{-# OPTIONS --without-K --safe #-}
open import Categories.Bicategory using (Bicategory)
module Categories.Bicategory.Object.Product {o ā e t} (š : Bicategory o ā e t) where
open import Level
open Bicategory š
open import Categories.Category using (_[_,_])
open import Categories.Morphism using (_ā
_)
open import Categories.Morphism.HeterogeneousEquality
open import Categories.Morphism.Notation using (_[_ā
_])
record Product  (A B : Obj) : Set (o ā ā ā e ā t) where
  infix 10 āØ_,_ā©ā āØ_,_ā©ā
  field
    AĆB : Obj
    Ļa : AĆB āā A
    Ļb : AĆB āā B
    āØ_,_ā©ā : ā {Ī} ā Ī āā A ā Ī āā B ā Ī āā AĆB
    āØ_,_ā©ā : ā {Ī}{fa ga : Ī āā A}{fb gb : Ī āā B}
           ā fa āā ga ā fb āā gb ā ⨠fa , fb ā©ā āā ⨠ga , gb ā©ā
    βāa : ā {Ī} f g ā hom Ī A [ Ļa āā ⨠f , g ā©ā  ā
 f ]
    βāb : ā {Ī} f g ā hom Ī B [ Ļb āā ⨠f , g ā©ā  ā
 g ]
    βāa : ā {Ī}{fa ga fb gb}(αa : hom Ī A [ fa , ga ])(αb : hom Ī B [ fb , gb ])
        ā Along βāa _ _ , βāa _ _ [ Ļa ⷠ⨠αa , αb ā©ā ā αa ]
    βāb : ā {Ī}{fa ga fb gb}(αa : hom Ī A [ fa , ga ])(αb : hom Ī B [ fb , gb ])
        ā Along βāb _ _ , βāb _ _ [ Ļb ⷠ⨠αa , αb ā©ā ā αb ]
    Ī·ā : ā {Ī} p ā hom Ī AĆB [ p ā
 ⨠Ļa āā p , Ļb āā p ā©ā ]
    Ī·ā : ā {Ī}{p p'}(Ļ : hom Ī AĆB [ p , p' ])
       ā Along (Ī·ā _) , (Ī·ā _) [ Ļ ā ⨠Ļa ā· Ļ , Ļb ā· Ļ ā©ā ]