{-# OPTIONS --without-K --safe #-} open import Categories.Category open import Categories.Category.Cartesian open import Categories.Category.BinaryProducts open import Categories.Category.Cocartesian import Categories.Morphism as M module Distributive.Core {o ā„“ e} (š’ž : Category o ā„“ e) where open import Level open Category š’ž open M š’ž record Distributive : Set (levelOfTerm š’ž) where field cartesian : Cartesian š’ž cocartesian : Cocartesian š’ž open Cartesian cartesian open BinaryProducts products open Cocartesian cocartesian distribute : āˆ€ {A B C} ā†’ (A Ɨ B + A Ɨ C) ā‡’ (A Ɨ (B + C)) distribute = [ id ā‚ iā‚ , id ā‚ iā‚‚ ] field iso : āˆ€ {A B C} ā†’ IsIso (distribute {A} {B} {C})