Dependent products of large suplattices

module order-theory.dependent-products-large-suplattices where
Imports
open import foundation.identity-types
open import foundation.propositions
open import foundation.sets
open import foundation.universe-levels

open import order-theory.dependent-products-large-posets
open import order-theory.large-posets
open import order-theory.large-suplattices
open import order-theory.least-upper-bounds-large-posets

Idea

Families of least upper bounds of families of elements in dependent products of large posets are again least upper bounds. Therefore it follows that dependent products of large suplattices are again large suplattices.

Definitions

module _
  {α : Level  Level} {β : Level  Level  Level}
  {l1 : Level} {I : UU l1} (L : I  Large-Suplattice α β)
  where

  large-poset-Π-Large-Suplattice :
    Large-Poset  l2  α l2  l1)  l2 l3  β l2 l3  l1)
  large-poset-Π-Large-Suplattice =
    Π-Large-Poset  i  large-poset-Large-Suplattice (L i))

  is-large-suplattice-Π-Large-Suplattice :
    is-large-suplattice-Large-Poset large-poset-Π-Large-Suplattice
  sup-has-least-upper-bound-family-of-elements-Large-Poset
    ( is-large-suplattice-Π-Large-Suplattice {l2} {l3} {J} a) i =
    sup-Large-Suplattice (L i)  j  a j i)
  is-least-upper-bound-sup-has-least-upper-bound-family-of-elements-Large-Poset
    ( is-large-suplattice-Π-Large-Suplattice {l2} {l3} {J} a) =
    is-least-upper-bound-Π-Large-Poset
      ( λ i  large-poset-Large-Suplattice (L i))
      ( a)
      ( λ i  sup-Large-Suplattice (L i)  j  a j i))
      ( λ i 
        is-least-upper-bound-sup-Large-Suplattice (L i)  j  a j i))

  Π-Large-Suplattice :
    Large-Suplattice  l2  α l2  l1)  l2 l3  β l2 l3  l1)
  large-poset-Large-Suplattice Π-Large-Suplattice =
    large-poset-Π-Large-Suplattice
  is-large-suplattice-Large-Suplattice Π-Large-Suplattice =
    is-large-suplattice-Π-Large-Suplattice

  set-Π-Large-Suplattice : (l : Level)  Set (α l  l1)
  set-Π-Large-Suplattice =
    set-Large-Suplattice Π-Large-Suplattice

  type-Π-Large-Suplattice : (l : Level)  UU (α l  l1)
  type-Π-Large-Suplattice =
    type-Large-Suplattice Π-Large-Suplattice

  is-set-type-Π-Large-Suplattice :
    {l : Level}  is-set (type-Π-Large-Suplattice l)
  is-set-type-Π-Large-Suplattice =
    is-set-type-Large-Suplattice Π-Large-Suplattice

  leq-Π-Large-Suplattice-Prop :
    {l2 l3 : Level}
    (x : type-Π-Large-Suplattice l2) (y : type-Π-Large-Suplattice l3) 
    Prop (β l2 l3  l1)
  leq-Π-Large-Suplattice-Prop =
    leq-Large-Suplattice-Prop Π-Large-Suplattice

  leq-Π-Large-Suplattice :
    {l2 l3 : Level}
    (x : type-Π-Large-Suplattice l2) (y : type-Π-Large-Suplattice l3) 
    UU (β l2 l3  l1)
  leq-Π-Large-Suplattice =
    leq-Large-Suplattice Π-Large-Suplattice

  is-prop-leq-Π-Large-Suplattice :
    {l2 l3 : Level}
    (x : type-Π-Large-Suplattice l2) (y : type-Π-Large-Suplattice l3) 
    is-prop (leq-Π-Large-Suplattice x y)
  is-prop-leq-Π-Large-Suplattice =
    is-prop-leq-Large-Suplattice Π-Large-Suplattice

  refl-leq-Π-Large-Suplattice :
    {l2 : Level} (x : type-Π-Large-Suplattice l2) 
    leq-Π-Large-Suplattice x x
  refl-leq-Π-Large-Suplattice =
    refl-leq-Large-Suplattice Π-Large-Suplattice

  antisymmetric-leq-Π-Large-Suplattice :
    {l2 : Level}
    (x : type-Π-Large-Suplattice l2) (y : type-Π-Large-Suplattice l2) 
    leq-Π-Large-Suplattice x y  leq-Π-Large-Suplattice y x  x  y
  antisymmetric-leq-Π-Large-Suplattice =
    antisymmetric-leq-Large-Suplattice Π-Large-Suplattice

  transitive-leq-Π-Large-Suplattice :
    {l2 l3 l4 : Level}
    (x : type-Π-Large-Suplattice l2)
    (y : type-Π-Large-Suplattice l3)
    (z : type-Π-Large-Suplattice l4) 
    leq-Π-Large-Suplattice y z  leq-Π-Large-Suplattice x y 
    leq-Π-Large-Suplattice x z
  transitive-leq-Π-Large-Suplattice =
    transitive-leq-Large-Suplattice Π-Large-Suplattice

  sup-Π-Large-Suplattice :
    {l2 l3 : Level} {J : UU l2} (x : J  type-Π-Large-Suplattice l3) 
    type-Π-Large-Suplattice (l2  l3)
  sup-Π-Large-Suplattice =
    sup-Large-Suplattice Π-Large-Suplattice

  is-upper-bound-family-of-elements-Π-Large-Suplattice :
    {l2 l3 l4 : Level} {J : UU l2} (x : J  type-Π-Large-Suplattice l3)
    (y : type-Π-Large-Suplattice l4)  UU (β l3 l4  l1  l2)
  is-upper-bound-family-of-elements-Π-Large-Suplattice =
    is-upper-bound-family-of-elements-Large-Suplattice Π-Large-Suplattice

  is-least-upper-bound-family-of-elements-Π-Large-Suplattice :
    {l2 l3 l4 : Level} {J : UU l2} (x : J  type-Π-Large-Suplattice l3) 
    type-Π-Large-Suplattice l4  UUω
  is-least-upper-bound-family-of-elements-Π-Large-Suplattice =
    is-least-upper-bound-family-of-elements-Large-Suplattice Π-Large-Suplattice

  is-least-upper-bound-sup-Π-Large-Suplattice :
    {l2 l3 : Level} {J : UU l2} (x : J  type-Π-Large-Suplattice l3) 
    is-least-upper-bound-family-of-elements-Π-Large-Suplattice x
      ( sup-Π-Large-Suplattice x)
  is-least-upper-bound-sup-Π-Large-Suplattice =
    is-least-upper-bound-sup-Large-Suplattice Π-Large-Suplattice