Decidable preorders

module order-theory.decidable-preorders where
Imports
open import foundation.decidable-propositions
open import foundation.dependent-pair-types
open import foundation.propositions
open import foundation.universe-levels

open import order-theory.preorders

Idea

A decidable preorder is a preorder of which the ordering relation is decidable.

Definition

module _
  {l1 l2 : Level} (X : Preorder l1 l2)
  where

  is-decidable-leq-Preorder-Prop : Prop (l1  l2)
  is-decidable-leq-Preorder-Prop =
    Π-Prop
      ( type-Preorder X)
      ( λ x 
        Π-Prop
          ( type-Preorder X)
          ( λ y  is-decidable-Prop (leq-Preorder-Prop X x y)))

  is-decidable-leq-Preorder : UU (l1  l2)
  is-decidable-leq-Preorder = type-Prop is-decidable-leq-Preorder-Prop

  is-prop-is-decidable-leq-Preorder : is-prop is-decidable-leq-Preorder
  is-prop-is-decidable-leq-Preorder =
    is-prop-type-Prop is-decidable-leq-Preorder-Prop

Decidable-Preorder : (l1 l2 : Level)  UU (lsuc l1  lsuc l2)
Decidable-Preorder l1 l2 = Σ (Preorder l1 l2) is-decidable-leq-Preorder

module _
  {l1 l2 : Level} (X : Decidable-Preorder l1 l2)
  where

  preorder-Decidable-Preorder : Preorder l1 l2
  preorder-Decidable-Preorder = pr1 X

  is-decidable-leq-Decidable-Preorder :
    is-decidable-leq-Preorder preorder-Decidable-Preorder
  is-decidable-leq-Decidable-Preorder = pr2 X

  type-Decidable-Preorder : UU l1
  type-Decidable-Preorder = type-Preorder preorder-Decidable-Preorder

  leq-Decidable-Preorder-Prop :
    (x y : type-Decidable-Preorder)  Prop l2
  leq-Decidable-Preorder-Prop =
    leq-Preorder-Prop preorder-Decidable-Preorder

  leq-Decidable-Preorder :
    (x y : type-Decidable-Preorder)  UU l2
  leq-Decidable-Preorder = leq-Preorder preorder-Decidable-Preorder

  is-prop-leq-Decidable-Preorder :
    (x y : type-Decidable-Preorder) 
    is-prop (leq-Decidable-Preorder x y)
  is-prop-leq-Decidable-Preorder =
    is-prop-leq-Preorder preorder-Decidable-Preorder

  leq-Decidable-Preorder-Decidable-Prop :
    (x y : type-Decidable-Preorder)  Decidable-Prop l2
  pr1 (leq-Decidable-Preorder-Decidable-Prop x y) =
    leq-Decidable-Preorder x y
  pr1 (pr2 (leq-Decidable-Preorder-Decidable-Prop x y)) =
    is-prop-leq-Decidable-Preorder x y
  pr2 (pr2 (leq-Decidable-Preorder-Decidable-Prop x y)) =
    is-decidable-leq-Decidable-Preorder x y

  refl-leq-Decidable-Preorder :
    (x : type-Decidable-Preorder)  leq-Decidable-Preorder x x
  refl-leq-Decidable-Preorder = refl-leq-Preorder preorder-Decidable-Preorder

  transitive-leq-Decidable-Preorder :
    (x y z : type-Decidable-Preorder) 
    leq-Decidable-Preorder y z 
    leq-Decidable-Preorder x y 
    leq-Decidable-Preorder x z
  transitive-leq-Decidable-Preorder =
    transitive-leq-Preorder preorder-Decidable-Preorder