module Cat.Displayed.Instances.TotalProduct
  {oโ‚ โ„“โ‚ oโ‚‚ โ„“โ‚‚ oโ‚ƒ โ„“โ‚ƒ oโ‚„ โ„“โ‚„}
  (C : Precategory oโ‚ โ„“โ‚)
  (D : Precategory oโ‚‚ โ„“โ‚‚)
  (EC : Displayed C oโ‚ƒ โ„“โ‚ƒ) (ED : Displayed D oโ‚„ โ„“โ‚„) where
  private module EC = Displayed EC
  private module ED = Displayed ED

The total product of displayed categories๐Ÿ”—

If and are displayed categories, then we can define their total product which is again a displayed category.

  _ร—แต€แดฐ_ : Displayed (C ร—แถœ D) (oโ‚ƒ โŠ” oโ‚„) (โ„“โ‚ƒ โŠ” โ„“โ‚„)
If displayed categories are regarded as functors, then the product of displayed categories can be regarded as the usual product of functors.
  _ร—แต€แดฐ_ .Displayed.Ob[_] (pโ‚ , pโ‚‚) =
   EC.Ob[ pโ‚ ]  ร— ED.Ob[ pโ‚‚ ]
  _ร—แต€แดฐ_ .Displayed.Hom[_] (fโ‚ , fโ‚‚) (cโ‚ , cโ‚‚) (dโ‚ , dโ‚‚) =
    EC.Hom[ fโ‚ ] cโ‚ dโ‚ ร—
    ED.Hom[ fโ‚‚ ] cโ‚‚ dโ‚‚
  _ร—แต€แดฐ_ .Displayed.id' = (EC.id' , ED.id')

We establish that the hom sets of the product fibration are actually sets.

If (so and (so is then for any two morphisms lying over and any

  _ร—แต€แดฐ_ .Displayed.Hom[_]-set _ _ _ = hlevel 2
Composition is pairwise.
  _ร—แต€แดฐ_ .Displayed._โˆ˜'_ (fโ‚ , fโ‚‚) (gโ‚ , gโ‚‚) =
    EC._โˆ˜'_ fโ‚ gโ‚ , ED._โˆ˜'_ fโ‚‚ gโ‚‚

Associativity and left/right identity laws hold because they hold for the components of the ordered pairs.

  _ร—แต€แดฐ_ .Displayed.idr' (fโ‚ , fโ‚‚) = EC.idr' fโ‚ ,โ‚š ED.idr' fโ‚‚
  _ร—แต€แดฐ_ .Displayed.idl' (fโ‚ , fโ‚‚) = EC.idl' fโ‚ ,โ‚š ED.idl' fโ‚‚
  _ร—แต€แดฐ_ .Displayed.assoc' (fโ‚ , fโ‚‚) (gโ‚ , gโ‚‚) (hโ‚ , hโ‚‚) =
    EC.assoc' fโ‚ gโ‚ hโ‚ ,โ‚š ED.assoc' fโ‚‚ gโ‚‚ hโ‚‚