aboutsummaryrefslogtreecommitdiff
path: root/Lattice/Structure/IsBoundedDistributive.agda
blob: dfd67d892a4fd2e29f9a8ab6159a733d1fad1474 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
{-# OPTIONS --without-K --safe #-}

open import Relation.Binary using (Rel)

module Lattice.Structure.IsBoundedDistributive
   {a ℓ₁ ℓ₂} {A : Set a}
   (_≈_ : Rel A ℓ₁) -- The underlying equality.
   (_≤_ : Rel A ℓ₂) -- The partial order.
  where

open import Algebra using (Op₂)
open import Algebra.Definitions using (_DistributesOverˡ_)
open import Level using (suc; _⊔_)
open import Relation.Binary.Definitions using (Minimum; Maximum)
open import Relation.Binary.Lattice.Structures _≈_ _≤_ using (IsLattice; IsDistributiveLattice; IsBoundedLattice)

record IsBoundedDistributiveLattice
    (_∨_ : Op₂ A)    -- The join operation.
    (_∧_ : Op₂ A)    -- The meet operation.
    (   : A)        -- The maximum.
    (   : A)        -- The minimum.
  : Set (a  ℓ₁  ℓ₂) where

  field
    isLattice     : IsLattice _∨_ _∧_
    maximum       : Maximum _≤_     minimum       : Minimum _≤_     ∧-distribˡ-∨  : _DistributesOverˡ_ _≈_ _∧_ _∨_

  open IsLattice isLattice public

  isBoundedLattice : IsBoundedLattice _∨_ _∧_    isBoundedLattice = record
      { isLattice = isLattice
      ; maximum = maximum
      ; minimum = minimum
      }

  isDistributiveLattice : IsDistributiveLattice _∨_ _∧_
  isDistributiveLattice = record
      { isLattice = isLattice
      ; ∧-distribˡ-∨ = ∧-distribˡ-∨
      }