Moved the Nat lattice instance into an actual file
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
This commit is contained in:
parent
5d54e62c3a
commit
dce21b3696
83
Lattice.agda
83
Lattice.agda
|
@ -140,44 +140,6 @@ record Lattice {a} (A : Set a) : Set (lsuc a) where
|
||||||
open IsLattice isLattice public
|
open IsLattice isLattice public
|
||||||
|
|
||||||
module IsSemilatticeInstances where
|
module IsSemilatticeInstances where
|
||||||
module ForNat where
|
|
||||||
open Nat
|
|
||||||
open NatProps
|
|
||||||
open Eq
|
|
||||||
|
|
||||||
private
|
|
||||||
≡-⊔-cong : ∀ {a₁ a₂ a₃ a₄} → a₁ ≡ a₂ → a₃ ≡ a₄ → (a₁ ⊔ a₃) ≡ (a₂ ⊔ a₄)
|
|
||||||
≡-⊔-cong a₁≡a₂ a₃≡a₄ rewrite a₁≡a₂ rewrite a₃≡a₄ = refl
|
|
||||||
|
|
||||||
≡-⊓-cong : ∀ {a₁ a₂ a₃ a₄} → a₁ ≡ a₂ → a₃ ≡ a₄ → (a₁ ⊓ a₃) ≡ (a₂ ⊓ a₄)
|
|
||||||
≡-⊓-cong a₁≡a₂ a₃≡a₄ rewrite a₁≡a₂ rewrite a₃≡a₄ = refl
|
|
||||||
|
|
||||||
NatIsMaxSemilattice : IsSemilattice ℕ _≡_ _⊔_
|
|
||||||
NatIsMaxSemilattice = record
|
|
||||||
{ ≈-equiv = record
|
|
||||||
{ ≈-refl = refl
|
|
||||||
; ≈-sym = sym
|
|
||||||
; ≈-trans = trans
|
|
||||||
}
|
|
||||||
; ≈-⊔-cong = ≡-⊔-cong
|
|
||||||
; ⊔-assoc = ⊔-assoc
|
|
||||||
; ⊔-comm = ⊔-comm
|
|
||||||
; ⊔-idemp = ⊔-idem
|
|
||||||
}
|
|
||||||
|
|
||||||
NatIsMinSemilattice : IsSemilattice ℕ _≡_ _⊓_
|
|
||||||
NatIsMinSemilattice = record
|
|
||||||
{ ≈-equiv = record
|
|
||||||
{ ≈-refl = refl
|
|
||||||
; ≈-sym = sym
|
|
||||||
; ≈-trans = trans
|
|
||||||
}
|
|
||||||
; ≈-⊔-cong = ≡-⊓-cong
|
|
||||||
; ⊔-assoc = ⊓-assoc
|
|
||||||
; ⊔-comm = ⊓-comm
|
|
||||||
; ⊔-idemp = ⊓-idem
|
|
||||||
}
|
|
||||||
|
|
||||||
module ForProd {a} {A B : Set a}
|
module ForProd {a} {A B : Set a}
|
||||||
(_≈₁_ : A → A → Set a) (_≈₂_ : B → B → Set a)
|
(_≈₁_ : A → A → Set a) (_≈₂_ : B → B → Set a)
|
||||||
(_⊔₁_ : A → A → A) (_⊔₂_ : B → B → B)
|
(_⊔₁_ : A → A → A) (_⊔₂_ : B → B → B)
|
||||||
|
@ -216,51 +178,6 @@ module IsSemilatticeInstances where
|
||||||
}
|
}
|
||||||
|
|
||||||
module IsLatticeInstances where
|
module IsLatticeInstances where
|
||||||
module ForNat where
|
|
||||||
open Nat
|
|
||||||
open NatProps
|
|
||||||
open Eq
|
|
||||||
open IsSemilatticeInstances.ForNat
|
|
||||||
open Data.Product
|
|
||||||
|
|
||||||
private
|
|
||||||
max-bound₁ : {x y z : ℕ} → x ⊔ y ≡ z → x ≤ z
|
|
||||||
max-bound₁ {x} {y} {z} x⊔y≡z
|
|
||||||
rewrite sym x⊔y≡z
|
|
||||||
rewrite ⊔-comm x y = m≤n⇒m≤o⊔n y (≤-refl)
|
|
||||||
|
|
||||||
min-bound₁ : {x y z : ℕ} → x ⊓ y ≡ z → z ≤ x
|
|
||||||
min-bound₁ {x} {y} {z} x⊓y≡z
|
|
||||||
rewrite sym x⊓y≡z = m≤n⇒m⊓o≤n y (≤-refl)
|
|
||||||
|
|
||||||
minmax-absorb : {x y : ℕ} → x ⊓ (x ⊔ y) ≡ x
|
|
||||||
minmax-absorb {x} {y} = ≤-antisym x⊓x⊔y≤x (helper x⊓x≤x⊓x⊔y (⊓-idem x))
|
|
||||||
where
|
|
||||||
x⊓x⊔y≤x = min-bound₁ {x} {x ⊔ y} {x ⊓ (x ⊔ y)} refl
|
|
||||||
x⊓x≤x⊓x⊔y = ⊓-mono-≤ {x} {x} ≤-refl (max-bound₁ {x} {y} {x ⊔ y} refl)
|
|
||||||
|
|
||||||
-- >:(
|
|
||||||
helper : x ⊓ x ≤ x ⊓ (x ⊔ y) → x ⊓ x ≡ x → x ≤ x ⊓ (x ⊔ y)
|
|
||||||
helper x⊓x≤x⊓x⊔y x⊓x≡x rewrite x⊓x≡x = x⊓x≤x⊓x⊔y
|
|
||||||
|
|
||||||
maxmin-absorb : {x y : ℕ} → x ⊔ (x ⊓ y) ≡ x
|
|
||||||
maxmin-absorb {x} {y} = ≤-antisym (helper x⊔x⊓y≤x⊔x (⊔-idem x)) x≤x⊔x⊓y
|
|
||||||
where
|
|
||||||
x≤x⊔x⊓y = max-bound₁ {x} {x ⊓ y} {x ⊔ (x ⊓ y)} refl
|
|
||||||
x⊔x⊓y≤x⊔x = ⊔-mono-≤ {x} {x} ≤-refl (min-bound₁ {x} {y} {x ⊓ y} refl)
|
|
||||||
|
|
||||||
-- >:(
|
|
||||||
helper : x ⊔ (x ⊓ y) ≤ x ⊔ x → x ⊔ x ≡ x → x ⊔ (x ⊓ y) ≤ x
|
|
||||||
helper x⊔x⊓y≤x⊔x x⊔x≡x rewrite x⊔x≡x = x⊔x⊓y≤x⊔x
|
|
||||||
|
|
||||||
NatIsLattice : IsLattice ℕ _≡_ _⊔_ _⊓_
|
|
||||||
NatIsLattice = record
|
|
||||||
{ joinSemilattice = NatIsMaxSemilattice
|
|
||||||
; meetSemilattice = NatIsMinSemilattice
|
|
||||||
; absorb-⊔-⊓ = λ x y → maxmin-absorb {x} {y}
|
|
||||||
; absorb-⊓-⊔ = λ x y → minmax-absorb {x} {y}
|
|
||||||
}
|
|
||||||
|
|
||||||
module ForProd {a} {A B : Set a}
|
module ForProd {a} {A B : Set a}
|
||||||
(_≈₁_ : A → A → Set a) (_≈₂_ : B → B → Set a)
|
(_≈₁_ : A → A → Set a) (_≈₂_ : B → B → Set a)
|
||||||
(_⊔₁_ : A → A → A) (_⊓₁_ : A → A → A)
|
(_⊔₁_ : A → A → A) (_⊓₁_ : A → A → A)
|
||||||
|
|
83
Lattice/Nat.agda
Normal file
83
Lattice/Nat.agda
Normal file
|
@ -0,0 +1,83 @@
|
||||||
|
module Lattice.Nat where
|
||||||
|
|
||||||
|
open import Equivalence
|
||||||
|
open import Lattice
|
||||||
|
open import Relation.Binary.PropositionalEquality using (_≡_; refl; sym; trans)
|
||||||
|
open import Data.Nat using (ℕ; _⊔_; _⊓_; _≤_)
|
||||||
|
open import Data.Nat.Properties using
|
||||||
|
( ⊔-assoc; ⊔-comm; ⊔-idem
|
||||||
|
; ⊓-assoc; ⊓-comm; ⊓-idem
|
||||||
|
; ⊓-mono-≤; ⊔-mono-≤
|
||||||
|
; m≤n⇒m≤o⊔n; m≤n⇒m⊓o≤n; ≤-refl; ≤-antisym
|
||||||
|
)
|
||||||
|
|
||||||
|
private
|
||||||
|
≡-⊔-cong : ∀ {a₁ a₂ a₃ a₄} → a₁ ≡ a₂ → a₃ ≡ a₄ → (a₁ ⊔ a₃) ≡ (a₂ ⊔ a₄)
|
||||||
|
≡-⊔-cong a₁≡a₂ a₃≡a₄ rewrite a₁≡a₂ rewrite a₃≡a₄ = refl
|
||||||
|
|
||||||
|
≡-⊓-cong : ∀ {a₁ a₂ a₃ a₄} → a₁ ≡ a₂ → a₃ ≡ a₄ → (a₁ ⊓ a₃) ≡ (a₂ ⊓ a₄)
|
||||||
|
≡-⊓-cong a₁≡a₂ a₃≡a₄ rewrite a₁≡a₂ rewrite a₃≡a₄ = refl
|
||||||
|
|
||||||
|
NatIsMaxSemilattice : IsSemilattice ℕ _≡_ _⊔_
|
||||||
|
NatIsMaxSemilattice = record
|
||||||
|
{ ≈-equiv = record
|
||||||
|
{ ≈-refl = refl
|
||||||
|
; ≈-sym = sym
|
||||||
|
; ≈-trans = trans
|
||||||
|
}
|
||||||
|
; ≈-⊔-cong = ≡-⊔-cong
|
||||||
|
; ⊔-assoc = ⊔-assoc
|
||||||
|
; ⊔-comm = ⊔-comm
|
||||||
|
; ⊔-idemp = ⊔-idem
|
||||||
|
}
|
||||||
|
|
||||||
|
NatIsMinSemilattice : IsSemilattice ℕ _≡_ _⊓_
|
||||||
|
NatIsMinSemilattice = record
|
||||||
|
{ ≈-equiv = record
|
||||||
|
{ ≈-refl = refl
|
||||||
|
; ≈-sym = sym
|
||||||
|
; ≈-trans = trans
|
||||||
|
}
|
||||||
|
; ≈-⊔-cong = ≡-⊓-cong
|
||||||
|
; ⊔-assoc = ⊓-assoc
|
||||||
|
; ⊔-comm = ⊓-comm
|
||||||
|
; ⊔-idemp = ⊓-idem
|
||||||
|
}
|
||||||
|
|
||||||
|
private
|
||||||
|
max-bound₁ : {x y z : ℕ} → x ⊔ y ≡ z → x ≤ z
|
||||||
|
max-bound₁ {x} {y} {z} x⊔y≡z
|
||||||
|
rewrite sym x⊔y≡z
|
||||||
|
rewrite ⊔-comm x y = m≤n⇒m≤o⊔n y (≤-refl)
|
||||||
|
|
||||||
|
min-bound₁ : {x y z : ℕ} → x ⊓ y ≡ z → z ≤ x
|
||||||
|
min-bound₁ {x} {y} {z} x⊓y≡z
|
||||||
|
rewrite sym x⊓y≡z = m≤n⇒m⊓o≤n y (≤-refl)
|
||||||
|
|
||||||
|
minmax-absorb : {x y : ℕ} → x ⊓ (x ⊔ y) ≡ x
|
||||||
|
minmax-absorb {x} {y} = ≤-antisym x⊓x⊔y≤x (helper x⊓x≤x⊓x⊔y (⊓-idem x))
|
||||||
|
where
|
||||||
|
x⊓x⊔y≤x = min-bound₁ {x} {x ⊔ y} {x ⊓ (x ⊔ y)} refl
|
||||||
|
x⊓x≤x⊓x⊔y = ⊓-mono-≤ {x} {x} ≤-refl (max-bound₁ {x} {y} {x ⊔ y} refl)
|
||||||
|
|
||||||
|
-- >:(
|
||||||
|
helper : x ⊓ x ≤ x ⊓ (x ⊔ y) → x ⊓ x ≡ x → x ≤ x ⊓ (x ⊔ y)
|
||||||
|
helper x⊓x≤x⊓x⊔y x⊓x≡x rewrite x⊓x≡x = x⊓x≤x⊓x⊔y
|
||||||
|
|
||||||
|
maxmin-absorb : {x y : ℕ} → x ⊔ (x ⊓ y) ≡ x
|
||||||
|
maxmin-absorb {x} {y} = ≤-antisym (helper x⊔x⊓y≤x⊔x (⊔-idem x)) x≤x⊔x⊓y
|
||||||
|
where
|
||||||
|
x≤x⊔x⊓y = max-bound₁ {x} {x ⊓ y} {x ⊔ (x ⊓ y)} refl
|
||||||
|
x⊔x⊓y≤x⊔x = ⊔-mono-≤ {x} {x} ≤-refl (min-bound₁ {x} {y} {x ⊓ y} refl)
|
||||||
|
|
||||||
|
-- >:(
|
||||||
|
helper : x ⊔ (x ⊓ y) ≤ x ⊔ x → x ⊔ x ≡ x → x ⊔ (x ⊓ y) ≤ x
|
||||||
|
helper x⊔x⊓y≤x⊔x x⊔x≡x rewrite x⊔x≡x = x⊔x⊓y≤x⊔x
|
||||||
|
|
||||||
|
NatIsLattice : IsLattice ℕ _≡_ _⊔_ _⊓_
|
||||||
|
NatIsLattice = record
|
||||||
|
{ joinSemilattice = NatIsMaxSemilattice
|
||||||
|
; meetSemilattice = NatIsMinSemilattice
|
||||||
|
; absorb-⊔-⊓ = λ x y → maxmin-absorb {x} {y}
|
||||||
|
; absorb-⊓-⊔ = λ x y → minmax-absorb {x} {y}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user