# 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 ```