12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849-------------------------------------------------------------------------- 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.Consequencesopen import Relation.Binary.Definitionsopen 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ᶜ)