Large subpreorders

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

open import order-theory.large-preorders

Idea

A large subpreorder of a large preorder P consists of a subtype

  S : type-Large-Preorder P l → Prop (γ l)

for each universe level l, where γ : Level → Level is a universe level reindexing function.

Definition

module _
  {α : Level  Level} {β : Level  Level  Level} (γ : Level  Level)
  (P : Large-Preorder α β)
  where

  Large-Subpreorder : UUω
  Large-Subpreorder = {l : Level}  type-Large-Preorder P l  Prop (γ l)

module _
  {α : Level  Level} {β : Level  Level  Level} {γ : Level  Level}
  (P : Large-Preorder α β) (S : Large-Subpreorder γ P)
  where

  is-in-Large-Subpreorder :
    {l1 : Level}  type-Large-Preorder P l1  UU (γ l1)
  is-in-Large-Subpreorder {l1} = is-in-subtype (S {l1})

  is-prop-is-in-Large-Subpreorder :
    {l1 : Level} (x : type-Large-Preorder P l1) 
    is-prop (is-in-Large-Subpreorder x)
  is-prop-is-in-Large-Subpreorder {l1} =
    is-prop-is-in-subtype (S {l1})

  type-Large-Subpreorder : (l1 : Level)  UU (α l1  γ l1)
  type-Large-Subpreorder l1 = type-subtype (S {l1})

  leq-Large-Subpreorder-Prop :
    {l1 l2 : Level} 
    type-Large-Subpreorder l1  type-Large-Subpreorder l2  Prop (β l1 l2)
  leq-Large-Subpreorder-Prop x y =
    leq-Large-Preorder-Prop P (pr1 x) (pr1 y)

  leq-Large-Subpreorder :
    {l1 l2 : Level} 
    type-Large-Subpreorder l1  type-Large-Subpreorder l2  UU (β l1 l2)
  leq-Large-Subpreorder x y = type-Prop (leq-Large-Subpreorder-Prop x y)

  is-prop-leq-Large-Subpreorder :
    {l1 l2 : Level} 
    (x : type-Large-Subpreorder l1) (y : type-Large-Subpreorder l2) 
    is-prop (leq-Large-Subpreorder x y)
  is-prop-leq-Large-Subpreorder x y =
    is-prop-type-Prop (leq-Large-Subpreorder-Prop x y)

  refl-leq-Large-Subpreorder :
    {l1 : Level} (x : type-Large-Subpreorder l1) 
    leq-Large-Subpreorder x x
  refl-leq-Large-Subpreorder (x , p) = refl-leq-Large-Preorder P x

  transitive-leq-Large-Subpreorder :
    {l1 l2 l3 : Level}
    (x : type-Large-Subpreorder l1)
    (y : type-Large-Subpreorder l2)
    (z : type-Large-Subpreorder l3) 
    leq-Large-Subpreorder y z  leq-Large-Subpreorder x y 
    leq-Large-Subpreorder x z
  transitive-leq-Large-Subpreorder (x , p) (y , q) (z , r) =
    transitive-leq-Large-Preorder P x y z

  large-preorder-Large-Subpreorder :
    Large-Preorder  l  α l  γ l)  l1 l2  β l1 l2)
  type-Large-Preorder
    large-preorder-Large-Subpreorder =
    type-Large-Subpreorder
  leq-Large-Preorder-Prop
    large-preorder-Large-Subpreorder =
    leq-Large-Subpreorder-Prop
  refl-leq-Large-Preorder
    large-preorder-Large-Subpreorder =
    refl-leq-Large-Subpreorder
  transitive-leq-Large-Preorder
    large-preorder-Large-Subpreorder =
    transitive-leq-Large-Subpreorder