------------------------------------------------------------------------ -- The Agda standard library -- -- Ways to give instances of certain structures where some fields can -- be given in terms of others ------------------------------------------------------------------------ -- The contents of this module should be accessed via `Relation.Binary`. {-# OPTIONS --cubical-compatible --safe #-} open import Relation.Binary.Core module Relation.Binary.Structures.Biased {a ℓ} {A : Set a} -- The underlying set (_≈_ : Rel A ℓ) -- The underlying equality relation where open import Level using (Level; _⊔_) open import Relation.Binary.Consequences open import Relation.Binary.Definitions open import Relation.Binary.Structures _≈_ private variable ℓ₂ : Level -- To construct a StrictTotalOrder you only need to prove transitivity and -- trichotomy as the current implementation of `Trichotomous` subsumes -- irreflexivity and asymmetry. record IsStrictTotalOrderᶜ (_<_ : Rel A ℓ₂) : Set (a ⊔ ℓ ⊔ ℓ₂) where field isEquivalence : IsEquivalence trans : Transitive _<_ compare : Trichotomous _≈_ _<_ isStrictTotalOrderᶜ : IsStrictTotalOrder _<_ isStrictTotalOrderᶜ = record { isStrictPartialOrder = record { isEquivalence = isEquivalence ; irrefl = tri⇒irr compare ; trans = trans ; <-resp-≈ = trans∧tri⇒resp Eq.sym Eq.trans trans compare } ; compare = compare } where module Eq = IsEquivalence isEquivalence open IsStrictTotalOrderᶜ public using (isStrictTotalOrderᶜ)