------------------------------------------------------------------------------
-- Distributive laws base
------------------------------------------------------------------------------

{-# OPTIONS --exact-split              #-}
{-# OPTIONS --no-sized-types           #-}
{-# OPTIONS --no-universe-polymorphism #-}
{-# OPTIONS --without-K                #-}

module DistributiveLaws.Base where

infixl 7 _·_

------------------------------------------------------------------------------
-- First-order logic with equality.
--
-- NB. This is an equational theory, so we do not import the logical
-- constants.
open import Common.FOL.FOL-Eq public using ( _≡_ ; D ; refl ; subst ; sym )

-- Distributive laws axioms

postulate
  _·_ : D  D  D  -- The binary operation.

  leftDistributive  :  x y z  x · (y · z)  (x · y) · (x · z)
  rightDistributive :  x y z  (x · y) · z  (x · z) · (y · z)
{-# ATP axioms leftDistributive rightDistributive #-}