{-# OPTIONS --cubical-compatible --safe #-}
open import Relation.Binary.Core
module Relation.Binary.Structures.Biased
  {a ℓ} {A : Set a} 
  (_≈_ : Rel A ℓ)   
  where
open import Level using (Level; _⊔_)
open import Relation.Binary.Consequences
open import Relation.Binary.Definitions
open import Relation.Binary.Structures _≈_
private
  variable
    ℓ₂ : Level
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ᶜ)