1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950-------------------------------------------------------------------------- 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 using (Rel) 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 using (tri⇒irr; tri⇒asym; trans∧tri⇒resp)open import Relation.Binary.Definitions using (Transitive; Trichotomous) 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ᶜ)