# Suplattices
```agda
module order-theory.suplattices where
```
<details><summary>Imports</summary>
```agda
open import foundation.binary-relations
open import foundation.dependent-pair-types
open import foundation.propositions
open import foundation.sets
open import foundation.universe-levels
open import order-theory.least-upper-bounds-posets
open import order-theory.posets
```
</details>
## Idea
An **`l`-suplattice** is a poset which has all least upper bounds of families of
elements indexed by a type of universe level `l`.
## Definitions
### The predicate on posets of being an `l`-suplattice
```agda
module _
{l1 l2 : Level} (l3 : Level) (P : Poset l1 l2)
where
is-suplattice-Poset-Prop : Prop (l1 ⊔ l2 ⊔ lsuc l3)
is-suplattice-Poset-Prop =
Π-Prop
(UU l3)
(λ I →
Π-Prop
( I → type-Poset P)
( λ f → has-least-upper-bound-family-of-elements-Poset-Prop P f))
is-suplattice-Poset : UU (l1 ⊔ l2 ⊔ lsuc l3)
is-suplattice-Poset = type-Prop is-suplattice-Poset-Prop
is-prop-suplattice-Poset : is-prop is-suplattice-Poset
is-prop-suplattice-Poset = is-prop-type-Prop is-suplattice-Poset-Prop
module _
{l1 l2 l3 : Level} (P : Poset l1 l2) (H : is-suplattice-Poset l3 P)
where
sup-is-suplattice-Poset :
{I : UU l3} → (I → type-Poset P) → type-Poset P
sup-is-suplattice-Poset {I} x = pr1 (H I x)
is-least-upper-bound-sup-is-suplattice-Poset :
{I : UU l3} (x : I → type-Poset P) →
is-least-upper-bound-family-of-elements-Poset P x
( sup-is-suplattice-Poset x)
is-least-upper-bound-sup-is-suplattice-Poset {I} x = pr2 (H I x)
```
### `l`-Suplattices
```agda
Suplattice : (l1 l2 l3 : Level) → UU (lsuc l1 ⊔ lsuc l2 ⊔ lsuc l3)
Suplattice l1 l2 l3 = Σ (Poset l1 l2) (λ P → is-suplattice-Poset l3 P)
module _
{l1 l2 l3 : Level} (A : Suplattice l1 l2 l3)
where
poset-Suplattice : Poset l1 l2
poset-Suplattice = pr1 A
type-Suplattice : UU l1
type-Suplattice = type-Poset poset-Suplattice
leq-Suplattice-Prop : (x y : type-Suplattice) → Prop l2
leq-Suplattice-Prop = leq-Poset-Prop poset-Suplattice
leq-Suplattice : (x y : type-Suplattice) → UU l2
leq-Suplattice = leq-Poset poset-Suplattice
is-prop-leq-Suplattice :
(x y : type-Suplattice) → is-prop (leq-Suplattice x y)
is-prop-leq-Suplattice = is-prop-leq-Poset poset-Suplattice
refl-leq-Suplattice :
(x : type-Suplattice) → leq-Suplattice x x
refl-leq-Suplattice = refl-leq-Poset poset-Suplattice
antisymmetric-leq-Suplattice : is-antisymmetric leq-Suplattice
antisymmetric-leq-Suplattice =
antisymmetric-leq-Poset poset-Suplattice
transitive-leq-Suplattice : is-transitive leq-Suplattice
transitive-leq-Suplattice = transitive-leq-Poset poset-Suplattice
is-set-type-Suplattice : is-set type-Suplattice
is-set-type-Suplattice = is-set-type-Poset poset-Suplattice
set-Suplattice : Set l1
set-Suplattice = set-Poset poset-Suplattice
is-suplattice-Suplattice :
is-suplattice-Poset l3 poset-Suplattice
is-suplattice-Suplattice = pr2 A
sup-Suplattice :
{I : UU l3} → (I → type-Suplattice) → type-Suplattice
sup-Suplattice =
sup-is-suplattice-Poset
( poset-Suplattice)
( is-suplattice-Suplattice)
is-least-upper-bound-sup-Suplattice :
{I : UU l3} (x : I → type-Suplattice) →
is-least-upper-bound-family-of-elements-Poset poset-Suplattice x
( sup-Suplattice x)
is-least-upper-bound-sup-Suplattice =
is-least-upper-bound-sup-is-suplattice-Poset
( poset-Suplattice)
( is-suplattice-Suplattice)
```