123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- module PartialOrder where
- open import Prelude
- record PartialOrder (A : Set) : Set1 where
- field
- _==_ : A -> A -> Set
- _≤_ : A -> A -> Set
- ==-def : forall {x y} -> (x == y) ⇐⇒ (x ≤ y) ∧ (y ≤ x)
- ≤-refl : forall {x} -> x ≤ x
- ≤-trans : forall {x y z} -> x ≤ y -> y ≤ z -> x ≤ z
- module POrder {A : Set}(ord : PartialOrder A) where
- private module POrd = PartialOrder ord
- open POrd public
- infix 60 _≤_ _==_
- Monotone : (A -> A) -> Set
- Monotone f = forall {x y} -> x ≤ y -> f x ≤ f y
- Antitone : (A -> A) -> Set
- Antitone f = forall {x y} -> x ≤ y -> f y ≤ f x
- ≤-antisym : forall {x y} -> x ≤ y -> y ≤ x -> x == y
- ≤-antisym p q = snd ==-def (p , q)
- ==≤-L : forall {x y} -> x == y -> x ≤ y
- ==≤-L x=y = fst (fst ==-def x=y)
- ==≤-R : forall {x y} -> x == y -> y ≤ x
- ==≤-R x=y = snd (fst ==-def x=y)
- ==-refl : forall {x} -> x == x
- ==-refl = ≤-antisym ≤-refl ≤-refl
- ==-sym : forall {x y} -> x == y -> y == x
- ==-sym xy = snd ==-def (swap (fst ==-def xy))
- ==-trans : forall {x y z} -> x == y -> y == z -> x == z
- ==-trans xy yz = ≤-antisym
- (≤-trans x≤y y≤z)
- (≤-trans z≤y y≤x)
- where
- x≤y = ==≤-L xy
- y≤z = ==≤-L yz
- y≤x = ==≤-R xy
- z≤y = ==≤-R yz
- Dual : PartialOrder A
- Dual = record
- { _==_ = _==_
- ; _≤_ = \x y -> y ≤ x
- ; ==-def = (swap ∘ fst ==-def , snd ==-def ∘ swap)
- ; ≤-refl = ≤-refl
- ; ≤-trans = \yx zy -> ≤-trans zy yx
- }
|