Subpreorders

module order-theory.subpreorders where
Imports
open import foundation.dependent-pair-types
open import foundation.functions
open import foundation.identity-types
open import foundation.propositions
open import foundation.subtypes
open import foundation.universe-levels

open import order-theory.preorders

Idea

A subpreorder of a preorder P is a subtype of P. By restriction of the ordering on P, the subpreorder inherits the structure of a preorder.

Definition

Subpreorders

Subpreorder :
  {l1 l2 : Level} (l3 : Level)  Preorder l1 l2  UU (l1  lsuc l3)
Subpreorder l3 P = subtype l3 (type-Preorder P)

module _
  {l1 l2 l3 : Level} (P : Preorder l1 l2) (S : Subpreorder l3 P)
  where

  type-Subpreorder : UU (l1  l3)
  type-Subpreorder = type-subtype S

  eq-type-Subpreorder :
    (x y : type-Subpreorder)  Id (pr1 x) (pr1 y)  Id x y
  eq-type-Subpreorder x y = eq-type-subtype S

  leq-Subpreorder-Prop : (x y : type-Subpreorder)  Prop l2
  leq-Subpreorder-Prop x y = leq-Preorder-Prop P (pr1 x) (pr1 y)

  leq-Subpreorder : (x y : type-Subpreorder)  UU l2
  leq-Subpreorder x y = type-Prop (leq-Subpreorder-Prop x y)

  is-prop-leq-Subpreorder :
    (x y : type-Subpreorder)  is-prop (leq-Subpreorder x y)
  is-prop-leq-Subpreorder x y =
    is-prop-type-Prop (leq-Subpreorder-Prop x y)

  refl-leq-Subpreorder : (x : type-Subpreorder)  leq-Subpreorder x x
  refl-leq-Subpreorder x = refl-leq-Preorder P (pr1 x)

  transitive-leq-Subpreorder :
    (x y z : type-Subpreorder) 
    leq-Subpreorder y z  leq-Subpreorder x y  leq-Subpreorder x z
  transitive-leq-Subpreorder x y z =
    transitive-leq-Preorder P (pr1 x) (pr1 y) (pr1 z)

  preorder-Subpreorder : Preorder (l1  l3) l2
  pr1 preorder-Subpreorder = type-Subpreorder
  pr1 (pr2 preorder-Subpreorder) = leq-Subpreorder-Prop
  pr1 (pr2 (pr2 preorder-Subpreorder)) = refl-leq-Subpreorder
  pr2 (pr2 (pr2 preorder-Subpreorder)) = transitive-leq-Subpreorder

Inclusions of subpreorders

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

  module _
    {l3 l4 : Level} (S : type-Preorder P  Prop l3)
    (T : type-Preorder P  Prop l4)
    where

    inclusion-Subpreorder-Prop : Prop (l1  l3  l4)
    inclusion-Subpreorder-Prop =
      Π-Prop (type-Preorder P)  x  hom-Prop (S x) (T x))

    inclusion-Subpreorder : UU (l1  l3  l4)
    inclusion-Subpreorder = type-Prop inclusion-Subpreorder-Prop

    is-prop-inclusion-Subpreorder : is-prop inclusion-Subpreorder
    is-prop-inclusion-Subpreorder =
      is-prop-type-Prop inclusion-Subpreorder-Prop

  refl-inclusion-Subpreorder :
    {l3 : Level} (S : type-Preorder P  Prop l3) 
    inclusion-Subpreorder S S
  refl-inclusion-Subpreorder S x = id

  transitive-inclusion-Subpreorder :
    {l3 l4 l5 : Level} (S : type-Preorder P  Prop l3)
    (T : type-Preorder P  Prop l4)
    (U : type-Preorder P  Prop l5) 
    inclusion-Subpreorder T U  inclusion-Subpreorder S T 
    inclusion-Subpreorder S U
  transitive-inclusion-Subpreorder S T U g f x = (g x)  (f x)

  Sub-Preorder : (l : Level)  Preorder (l1  lsuc l) (l1  l)
  pr1 (Sub-Preorder l) = type-Preorder P  Prop l
  pr1 (pr2 (Sub-Preorder l)) = inclusion-Subpreorder-Prop
  pr1 (pr2 (pr2 (Sub-Preorder l))) = refl-inclusion-Subpreorder
  pr2 (pr2 (pr2 (Sub-Preorder l))) = transitive-inclusion-Subpreorder