123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354-------------------------------------------------------------------------- The Agda standard library---- Properties satisfied by bounded join semilattices------------------------------------------------------------------------ {-# OPTIONS --cubical-compatible --safe #-} open import Relation.Binary.Lattice module Relation.Binary.Lattice.Properties.BoundedJoinSemilattice {c ℓ₁ ℓ₂} (J : BoundedJoinSemilattice c ℓ₁ ℓ₂) where open BoundedJoinSemilattice J open import Algebra.Definitions _≈_open import Data.Product.Base using (_,_)open import Function.Base using (_∘_; flip)open import Relation.Binary.Properties.Poset posetopen import Relation.Binary.Lattice.Properties.JoinSemilattice joinSemilattice using (∨-comm) -- Bottom is an identity of the meet operation. identityˡ : LeftIdentity ⊥ _∨_identityˡ x = let _ , x≤⊥∨x , least = supremum ⊥ x in antisym (least x (minimum x) refl) x≤⊥∨x identityʳ : RightIdentity ⊥ _∨_identityʳ x = let x≤x∨⊥ , _ , least = supremum x ⊥ in antisym (least x refl (minimum x)) x≤x∨⊥ identity : Identity ⊥ _∨_identity = identityˡ , identityʳ -- The dual construction is a bounded meet semilattice. dualIsBoundedMeetSemilattice : IsBoundedMeetSemilattice _≈_ (flip _≤_) _∨_ ⊥dualIsBoundedMeetSemilattice = record { isMeetSemilattice = record { isPartialOrder = ≥-isPartialOrder ; infimum = supremum } ; maximum = minimum } dualBoundedMeetSemilattice : BoundedMeetSemilattice c ℓ₁ ℓ₂dualBoundedMeetSemilattice = record { ⊤ = ⊥ ; isBoundedMeetSemilattice = dualIsBoundedMeetSemilattice }