Source code on Githubmodule Prelude.Separated where
open import Prelude.Init; open SetAsType
open import Prelude.General
open import Prelude.Setoid
open import Prelude.Setoid.Maybe
open import Prelude.PartialSemigroup
open import Prelude.PartialMonoid
record Separated (Σ : Type ℓ) ⦃ _ : LawfulSetoid Σ ⦄ : Type (ℓ ⊔ₗ relℓ {A = Σ}) where
field
⦃ ps ⦄ : PartialSemigroup Σ
⦃ ps-laws ⦄ : PartialSemigroupLaws Σ
⦃ pm ⦄ : PartialMonoid Σ
⦃ pm-laws ⦄ : PartialMonoidLaws Σ
cancellative : ∀ (x : Σ) → Injective _≈_ _≈_ (x ◆_)
_#_ : Rel Σ _
x # y = Is-just (x ◆ y )
_≼_ : Rel Σ _
x ≼ z = ∃ λ y → (x ◆ y) ≈ just z
ℙ : Type _
ℙ = Pred Σ _
emp : ℙ
emp = _≈ ε
open Unary
_∗_ : ℙ → ℙ → Pred Σ _
(p ∗ q) σ = ∃ λ (σ₀ : Σ) → ∃ λ (σ₁ : Σ)
→ (σ₀ # σ₁)
× (σ₀ ∈ p)
× (σ₁ ∈ q)
Prec : Pred ℙ _
Prec p = ∀ σ → Irrelevant¹ (λ σₚ → (σₚ ∈ p) × (σₚ ≼ σ))
Singleton : Pred ℙ _
Singleton p = (_∈ p) ⊣⊢ (λ σ → ∃ (σ ≈_))
private variable p : ℙ
postulate Singleton⇒Prec : Singleton ⊆¹ Prec
open Separated ⦃...⦄ public