------------------------------------------------------------------------
-- Properties of the modality semiring.
------------------------------------------------------------------------

import Graded.Modality

module Graded.Modality.Properties
  {a} {M : Set a}
  (open Graded.Modality M)
  (๐•„ : Modality)
  where

open Modality ๐•„

open import Graded.Modality.Properties.Addition semiring-with-meet public
open import Graded.Modality.Properties.Division semiring-with-meet
  public
open import Graded.Modality.Properties.Equivalence semiring-with-meet
  public
open import Graded.Modality.Properties.Meet semiring-with-meet public
open import Graded.Modality.Properties.Multiplication semiring-with-meet public
open import Graded.Modality.Properties.PartialOrder semiring-with-meet public
open import Graded.Modality.Properties.Star semiring-with-meet public

open import Tools.Bool

-- Export properties that hold if ๐Ÿ˜ is well behaved
-- under the assumption that ๐Ÿ˜แต is allowed.

module _ (ok : T ๐Ÿ˜แต-allowed) where
  open import Graded.Modality.Properties.Has-well-behaved-zero
    semiring-with-meet (๐Ÿ˜-well-behaved ok) public
    renaming (๐Ÿ™โ‰ข๐Ÿ˜ to ๐Ÿ˜แตโ†’๐Ÿ™โ‰ข๐Ÿ˜)