Dependent products large preorders

module order-theory.dependent-products-large-preorders where
Imports
open import foundation.propositions
open import foundation.universe-levels

open import order-theory.large-preorders

Idea

Given a family P : I → Large-Preorder α β of large preorders indexed by a type I : UU l, the dependent prodcut of the large preorders P i is again a large preorder.

Definition

module _
  {α : Level  Level} {β : Level  Level  Level}
  {l : Level} {I : UU l} (P : I  Large-Preorder α β)
  where

  type-Π-Large-Preorder : (l1 : Level)  UU (α l1  l)
  type-Π-Large-Preorder l1 = (i : I)  type-Large-Preorder (P i) l1

  leq-Π-Large-Preorder-Prop :
    {l1 l2 : Level} 
    type-Π-Large-Preorder l1  type-Π-Large-Preorder l2  Prop (β l1 l2  l)
  leq-Π-Large-Preorder-Prop x y =
    Π-Prop I  i  leq-Large-Preorder-Prop (P i) (x i) (y i))

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

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

  refl-leq-Π-Large-Preorder :
    {l1 : Level} (x : type-Π-Large-Preorder l1) 
    leq-Π-Large-Preorder x x
  refl-leq-Π-Large-Preorder x i = refl-leq-Large-Preorder (P i) (x i)

  transitive-leq-Π-Large-Preorder :
    {l1 l2 l3 : Level}
    (x : type-Π-Large-Preorder l1) (y : type-Π-Large-Preorder l2)
    (z : type-Π-Large-Preorder l3) 
    leq-Π-Large-Preorder y z  leq-Π-Large-Preorder x y 
    leq-Π-Large-Preorder x z
  transitive-leq-Π-Large-Preorder x y z H K i =
    transitive-leq-Large-Preorder (P i) (x i) (y i) (z i) (H i) (K i)

  Π-Large-Preorder : Large-Preorder  l1  α l1  l)  l1 l2  β l1 l2  l)
  type-Large-Preorder Π-Large-Preorder =
    type-Π-Large-Preorder
  leq-Large-Preorder-Prop Π-Large-Preorder =
    leq-Π-Large-Preorder-Prop
  refl-leq-Large-Preorder Π-Large-Preorder =
    refl-leq-Π-Large-Preorder
  transitive-leq-Large-Preorder Π-Large-Preorder =
    transitive-leq-Π-Large-Preorder