# Large suplattices
```agda
module order-theory.large-suplattices where
```
<detail><summary>Imports</summary>
```agda
open import foundation.dependent-pair-types
open import foundation.large-binary-relations
open import foundation.binary-relations
open import foundation.identity-types
open import foundation.logical-equivalences
open import foundation.propositions
open import foundation.sets
open import foundation.universe-levels
open import order-theory.large-posets
open import order-theory.posets
open import order-theory.suplattices
open import order-theory.least-upper-bounds-large-posets
open import order-theory.upper-bounds-large-posets
```
</details>
## Idea
A **large suplattice** is a [large poset](order-theory.large-posets.md) `P` such
that for every family
```text
x : I → type-Large-Poset P l1
```
indexed by `I : UU l2` there is an element `⋁ x : type-Large-Poset P (l1 ⊔ l2)`
such that the logical equivalence
```text
(∀ᵢ xᵢ ≤ y) ↔ ((⋁ x) ≤ y)
```
holds for every element `y : type-Large-Poset P l3`.
## Definitions
### The predicate on large posets of having least upper bounds of families of elements
```agda
module _
{α : Level → Level} {β : Level → Level → Level} (γ : Level)
(P : Large-Poset α β)
where
is-large-suplattice-Large-Poset : UUω
is-large-suplattice-Large-Poset =
{l1 l2 : Level} {I : UU l1} (x : I → type-Large-Poset P l2) →
has-least-upper-bound-family-of-elements-Large-Poset γ P x
module _
(H : is-large-suplattice-Large-Poset)
{l1 l2 : Level} {I : UU l1} (x : I → type-Large-Poset P l2)
where
sup-is-large-suplattice-Large-Poset : type-Large-Poset P (γ ⊔ l1 ⊔ l2)
sup-is-large-suplattice-Large-Poset =
sup-has-least-upper-bound-family-of-elements-Large-Poset (H x)
is-least-upper-bound-sup-is-large-suplattice-Large-Poset :
is-least-upper-bound-family-of-elements-Large-Poset P x
sup-is-large-suplattice-Large-Poset
is-least-upper-bound-sup-is-large-suplattice-Large-Poset =
is-least-upper-bound-sup-has-least-upper-bound-family-of-elements-Large-Poset
( H x)
```
### Large suplattices
```agda
record
Large-Suplattice
(α : Level → Level) (β : Level → Level → Level) (γ : Level) : UUω
where
constructor
make-Large-Suplattice
field
large-poset-Large-Suplattice : Large-Poset α β
is-large-suplattice-Large-Suplattice :
is-large-suplattice-Large-Poset γ large-poset-Large-Suplattice
open Large-Suplattice public
module _
{α : Level → Level} {β : Level → Level → Level} {γ : Level}
(L : Large-Suplattice α β γ)
where
set-Large-Suplattice : (l : Level) → Set (α l)
set-Large-Suplattice = set-Large-Poset (large-poset-Large-Suplattice L)
type-Large-Suplattice : (l : Level) → UU (α l)
type-Large-Suplattice = type-Large-Poset (large-poset-Large-Suplattice L)
is-set-type-Large-Suplattice : {l : Level} → is-set (type-Large-Suplattice l)
is-set-type-Large-Suplattice =
is-set-type-Large-Poset (large-poset-Large-Suplattice L)
leq-prop-Large-Suplattice :
Large-Relation-Prop β type-Large-Suplattice
leq-prop-Large-Suplattice =
leq-prop-Large-Poset (large-poset-Large-Suplattice L)
leq-Large-Suplattice :
Large-Relation β type-Large-Suplattice
leq-Large-Suplattice = leq-Large-Poset (large-poset-Large-Suplattice L)
is-prop-leq-Large-Suplattice :
is-prop-Large-Relation type-Large-Suplattice leq-Large-Suplattice
is-prop-leq-Large-Suplattice =
is-prop-leq-Large-Poset (large-poset-Large-Suplattice L)
refl-leq-Large-Suplattice :
is-reflexive-Large-Relation type-Large-Suplattice leq-Large-Suplattice
refl-leq-Large-Suplattice =
refl-leq-Large-Poset (large-poset-Large-Suplattice L)
antisymmetric-leq-Large-Suplattice :
is-antisymmetric-Large-Relation type-Large-Suplattice leq-Large-Suplattice
antisymmetric-leq-Large-Suplattice =
antisymmetric-leq-Large-Poset (large-poset-Large-Suplattice L)
transitive-leq-Large-Suplattice :
is-transitive-Large-Relation type-Large-Suplattice leq-Large-Suplattice
transitive-leq-Large-Suplattice =
transitive-leq-Large-Poset (large-poset-Large-Suplattice L)
sup-Large-Suplattice :
{l1 l2 : Level} {I : UU l1} (x : I → type-Large-Suplattice l2) →
type-Large-Suplattice (γ ⊔ l1 ⊔ l2)
sup-Large-Suplattice x =
sup-has-least-upper-bound-family-of-elements-Large-Poset
( is-large-suplattice-Large-Suplattice L x)
is-upper-bound-family-of-elements-Large-Suplattice :
{l1 l2 l3 : Level} {I : UU l1} (x : I → type-Large-Suplattice l2)
(y : type-Large-Suplattice l3) → UU (β l2 l3 ⊔ l1)
is-upper-bound-family-of-elements-Large-Suplattice x y =
is-upper-bound-family-of-elements-Large-Poset
( large-poset-Large-Suplattice L)
( x)
( y)
is-least-upper-bound-family-of-elements-Large-Suplattice :
{l1 l2 l3 : Level} {I : UU l1} (x : I → type-Large-Suplattice l2) →
type-Large-Suplattice l3 → UUω
is-least-upper-bound-family-of-elements-Large-Suplattice =
is-least-upper-bound-family-of-elements-Large-Poset
( large-poset-Large-Suplattice L)
is-least-upper-bound-sup-Large-Suplattice :
{l1 l2 : Level} {I : UU l1} (x : I → type-Large-Suplattice l2) →
is-least-upper-bound-family-of-elements-Large-Suplattice x
( sup-Large-Suplattice x)
is-least-upper-bound-sup-Large-Suplattice x =
is-least-upper-bound-sup-has-least-upper-bound-family-of-elements-Large-Poset
( is-large-suplattice-Large-Suplattice L x)
is-upper-bound-sup-Large-Suplattice :
{l1 l2 : Level} {I : UU l1} (x : I → type-Large-Suplattice l2) →
is-upper-bound-family-of-elements-Large-Suplattice x
( sup-Large-Suplattice x)
is-upper-bound-sup-Large-Suplattice x =
backward-implication
( is-least-upper-bound-sup-Large-Suplattice x (sup-Large-Suplattice x))
( refl-leq-Large-Suplattice (sup-Large-Suplattice x))
```
## Properties
### The operation `sup` is order preserving
```agda
module _
{α : Level → Level} {β : Level → Level → Level} {γ : Level}
(L : Large-Suplattice α β γ)
where
preserves-order-sup-Large-Suplattice :
{l1 l2 l3 : Level} {I : UU l1}
{x : I → type-Large-Suplattice L l2}
{y : I → type-Large-Suplattice L l3} →
((i : I) → leq-Large-Suplattice L (x i) (y i)) →
leq-Large-Suplattice L
( sup-Large-Suplattice L x)
( sup-Large-Suplattice L y)
preserves-order-sup-Large-Suplattice {x = x} {y} H =
forward-implication
( is-least-upper-bound-sup-Large-Suplattice L x
( sup-Large-Suplattice L y))
( λ i →
transitive-leq-Large-Suplattice L
( x i)
( y i)
( sup-Large-Suplattice L y)
( is-upper-bound-sup-Large-Suplattice L y i)
( H i))
```
### Small suplattices from large suplattices
```agda
module _
{α : Level → Level} {β : Level → Level → Level} {γ : Level}
(L : Large-Suplattice α β γ)
where
poset-Large-Suplattice : (l : Level) → Poset (α l) (β l l)
poset-Large-Suplattice = poset-Large-Poset (large-poset-Large-Suplattice L)
is-suplattice-poset-Large-Suplattice :
(l1 l2 : Level) →
is-suplattice-Poset l1 (poset-Large-Suplattice (γ ⊔ l1 ⊔ l2))
pr1 (is-suplattice-poset-Large-Suplattice l1 l2 I f) =
sup-Large-Suplattice L f
pr2 (is-suplattice-poset-Large-Suplattice l1 l2 I f) =
is-least-upper-bound-sup-Large-Suplattice L f
suplattice-Large-Suplattice :
(l1 l2 : Level) →
Suplattice (α (γ ⊔ l1 ⊔ l2)) (β (γ ⊔ l1 ⊔ l2) (γ ⊔ l1 ⊔ l2)) (l1)
pr1 (suplattice-Large-Suplattice l1 l2) =
poset-Large-Suplattice (γ ⊔ l1 ⊔ l2)
pr2 (suplattice-Large-Suplattice l1 l2) =
is-suplattice-poset-Large-Suplattice l1 l2
```