Provide a definition of partial congruence
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
This commit is contained in:
parent
d3bac2fe60
commit
14f1494fc3
@ -3,6 +3,7 @@ module Lattice.Builder where
|
||||
open import Lattice
|
||||
open import Equivalence
|
||||
open import Data.Maybe as Maybe using (Maybe; just; nothing; _>>=_; maybe)
|
||||
open import Data.Maybe.Properties using (just-injective)
|
||||
open import Data.Unit using (⊤; tt)
|
||||
open import Data.List.NonEmpty using (List⁺; tail; toList) renaming (_∷_ to _∷⁺_)
|
||||
open import Data.List using (List; _∷_; [])
|
||||
@ -42,6 +43,9 @@ instance
|
||||
}
|
||||
}
|
||||
|
||||
PartialCong : ∀ {a} {A : Set a} (_≈_ : A → A → Set a) (_⊗_ : A → A → Maybe A) → Set a
|
||||
PartialCong {a} {A} _≈_ _⊗_ = ∀ {a₁ a₂ a₃ a₄} → a₁ ≈ a₂ → a₃ ≈ a₄ → lift-≈ _≈_ (a₁ ⊗ a₃) (a₂ ⊗ a₄)
|
||||
|
||||
PartialAssoc : ∀ {a} {A : Set a} (_≈_ : A → A → Set a) (_⊗_ : A → A → Maybe A) → Set a
|
||||
PartialAssoc {a} {A} _≈_ _⊗_ = ∀ (x y z : A) → lift-≈ _≈_ ((x ⊗ y) >>= (_⊗ z)) ((y ⊗ z) >>= (x ⊗_))
|
||||
|
||||
@ -69,7 +73,7 @@ record IsPartialSemilattice {a} {A : Set a}
|
||||
|
||||
field
|
||||
≈-equiv : IsEquivalence A _≈_
|
||||
≈-⊔-cong : ∀ {a₁ a₂ a₃ a₄} → a₁ ≈ a₂ → a₃ ≈ a₄ → (a₁ ⊔? a₃) ≈? (a₂ ⊔? a₄)
|
||||
≈-⊔-cong : PartialCong _≈_ _⊔?_
|
||||
|
||||
⊔-assoc : PartialAssoc _≈_ _⊔?_
|
||||
⊔-comm : PartialComm _≈_ _⊔?_
|
||||
|
Loading…
Reference in New Issue
Block a user