# Large preorders

```agda
module order-theory.large-preorders where
```

<details><summary>Imports</summary>

```agda
open import category-theory.large-precategories

open import foundation.dependent-pair-types
open import foundation.identity-types
open import foundation.large-binary-relations
open import foundation.propositions
open import foundation.sets
open import foundation.strictly-involutive-identity-types
open import foundation.universe-levels

open import order-theory.preorders
```

</details>

## Idea

A **large preorder** consists of types indexed by a universe levels, and an
ordering relation comparing objects of arbitrary universe levels. This level of
generality therefore accommodates the inclusion relation on subtypes of
different universe levels. Many [preorders](order-theory.preorders.md) in
agda-unimath naturally arise as large preorders.

## Definitions

### Large preorders

```agda
record
  Large-Preorder (α : Level  Level) (β : Level  Level  Level) : UUω where
  constructor
    make-Large-Preorder
  field
    type-Large-Preorder : (l : Level)  UU (α l)
    leq-prop-Large-Preorder : Large-Relation-Prop β type-Large-Preorder
    refl-leq-Large-Preorder :
      is-reflexive-Large-Relation-Prop
        ( type-Large-Preorder)
        ( leq-prop-Large-Preorder)
    transitive-leq-Large-Preorder :
      is-transitive-Large-Relation-Prop
        ( type-Large-Preorder)
        ( leq-prop-Large-Preorder)

open Large-Preorder public

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

  leq-Large-Preorder : Large-Relation β (type-Large-Preorder X)
  leq-Large-Preorder =
    large-relation-Large-Relation-Prop
      ( type-Large-Preorder X)
      ( leq-prop-Large-Preorder X)

  is-prop-leq-Large-Preorder :
    is-prop-Large-Relation (type-Large-Preorder X) (leq-Large-Preorder)
  is-prop-leq-Large-Preorder =
    is-prop-large-relation-Large-Relation-Prop
      ( type-Large-Preorder X)
      ( leq-prop-Large-Preorder X)

  leq-eq-Large-Preorder :
    {l1 : Level}
    {x y : type-Large-Preorder X l1} 
    (x  y)  leq-Large-Preorder x y
  leq-eq-Large-Preorder {x = x} refl = refl-leq-Large-Preorder X x
```

### The predicate on large precategories to be a large preorder

```agda
module _
  {α : Level  Level} {β : Level  Level  Level}
  (C : Large-Precategory α β)
  where

  is-large-preorder-Large-Precategory : UUω
  is-large-preorder-Large-Precategory =
    {l1 l2 : Level}
    (X : obj-Large-Precategory C l1) (Y : obj-Large-Precategory C l2) 
    is-prop (hom-Large-Precategory C X Y)

  large-preorder-Large-Precategory :
    is-large-preorder-Large-Precategory  Large-Preorder α β
  type-Large-Preorder
    ( large-preorder-Large-Precategory H) =
    obj-Large-Precategory C
  pr1 (leq-prop-Large-Preorder (large-preorder-Large-Precategory H) X Y) =
    hom-Large-Precategory C X Y
  pr2 (leq-prop-Large-Preorder (large-preorder-Large-Precategory H) X Y) =
    H X Y
  refl-leq-Large-Preorder
    ( large-preorder-Large-Precategory H)
    ( X) =
    id-hom-Large-Precategory C
  transitive-leq-Large-Preorder
    ( large-preorder-Large-Precategory H)
    ( X)
    ( Y)
    ( Z) =
    comp-hom-Large-Precategory C
```

## Properties

### Small preorders from large preorders

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

  preorder-Large-Preorder : (l : Level)  Preorder (α l) (β l l)
  pr1 (preorder-Large-Preorder l) = type-Large-Preorder P l
  pr1 (pr2 (preorder-Large-Preorder l)) = leq-prop-Large-Preorder P
  pr1 (pr2 (pr2 (preorder-Large-Preorder l))) = refl-leq-Large-Preorder P
  pr2 (pr2 (pr2 (preorder-Large-Preorder l))) = transitive-leq-Large-Preorder P
```

### Large preorders are large precategories

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

  large-precategory-Large-Preorder : Large-Precategory α β
  obj-Large-Precategory large-precategory-Large-Preorder = type-Large-Preorder P
  hom-set-Large-Precategory large-precategory-Large-Preorder x y =
    set-Prop (leq-prop-Large-Preorder P x y)
  comp-hom-Large-Precategory large-precategory-Large-Preorder {X = x} {y} {z} =
    transitive-leq-Large-Preorder P x y z
  id-hom-Large-Precategory large-precategory-Large-Preorder {X = x} =
    refl-leq-Large-Preorder P x
  involutive-eq-associative-comp-hom-Large-Precategory
    large-precategory-Large-Preorder
    {X = x} {W = w} h g f =
    involutive-eq-eq (eq-is-prop (is-prop-leq-Large-Preorder P x w))
  left-unit-law-comp-hom-Large-Precategory large-precategory-Large-Preorder
    {X = x} {y} f =
    eq-is-prop (is-prop-leq-Large-Preorder P x y)
  right-unit-law-comp-hom-Large-Precategory large-precategory-Large-Preorder
    {X = x} {y} f =
    eq-is-prop (is-prop-leq-Large-Preorder P x y)
```