# Large meet-semilattices ```agda module order-theory.large-meet-semilattices where ``` <details><summary>Imports</summary> ```agda open import foundation.action-on-identifications-binary-functions open import foundation.dependent-pair-types open import foundation.identity-types open import foundation.large-binary-relations open import foundation.sets open import foundation.universe-levels open import order-theory.greatest-lower-bounds-large-posets open import order-theory.large-posets open import order-theory.meet-semilattices open import order-theory.posets open import order-theory.top-elements-large-posets ``` </details> ## Idea A **large meet-semilattice** is a [large semigroup](group-theory.large-semigroups.md) which is commutative and idempotent. ## Definition ### The predicate that a large poset has meets ```agda record has-meets-Large-Poset { α : Level → Level} { β : Level → Level → Level} ( P : Large-Poset α β) : UUω where constructor make-has-meets-Large-Poset field meet-has-meets-Large-Poset : {l1 l2 : Level} (x : type-Large-Poset P l1) (y : type-Large-Poset P l2) → type-Large-Poset P (l1 ⊔ l2) is-greatest-binary-lower-bound-meet-has-meets-Large-Poset : {l1 l2 : Level} (x : type-Large-Poset P l1) (y : type-Large-Poset P l2) → is-greatest-binary-lower-bound-Large-Poset P x y ( meet-has-meets-Large-Poset x y) open has-meets-Large-Poset public ``` ### The predicate of being a large meet-semilattice ```agda record is-large-meet-semilattice-Large-Poset { α : Level → Level} { β : Level → Level → Level} ( P : Large-Poset α β) : UUω where field has-meets-is-large-meet-semilattice-Large-Poset : has-meets-Large-Poset P has-top-element-is-large-meet-semilattice-Large-Poset : has-top-element-Large-Poset P open is-large-meet-semilattice-Large-Poset public module _ {α : Level → Level} {β : Level → Level → Level} (P : Large-Poset α β) (H : is-large-meet-semilattice-Large-Poset P) where meet-is-large-meet-semilattice-Large-Poset : {l1 l2 : Level} (x : type-Large-Poset P l1) (y : type-Large-Poset P l2) → type-Large-Poset P (l1 ⊔ l2) meet-is-large-meet-semilattice-Large-Poset = meet-has-meets-Large-Poset ( has-meets-is-large-meet-semilattice-Large-Poset H) is-greatest-binary-lower-bound-meet-is-large-meet-semilattice-Large-Poset : {l1 l2 : Level} (x : type-Large-Poset P l1) (y : type-Large-Poset P l2) → is-greatest-binary-lower-bound-Large-Poset P x y ( meet-is-large-meet-semilattice-Large-Poset x y) is-greatest-binary-lower-bound-meet-is-large-meet-semilattice-Large-Poset = is-greatest-binary-lower-bound-meet-has-meets-Large-Poset ( has-meets-is-large-meet-semilattice-Large-Poset H) top-is-large-meet-semilattice-Large-Poset : type-Large-Poset P lzero top-is-large-meet-semilattice-Large-Poset = top-has-top-element-Large-Poset ( has-top-element-is-large-meet-semilattice-Large-Poset H) is-top-element-top-is-large-meet-semilattice-Large-Poset : {l1 : Level} (x : type-Large-Poset P l1) → leq-Large-Poset P x top-is-large-meet-semilattice-Large-Poset is-top-element-top-is-large-meet-semilattice-Large-Poset = is-top-element-top-has-top-element-Large-Poset ( has-top-element-is-large-meet-semilattice-Large-Poset H) ``` ### Large meet-semilattices ```agda record Large-Meet-Semilattice ( α : Level → Level) ( β : Level → Level → Level) : UUω where constructor make-Large-Meet-Semilattice field large-poset-Large-Meet-Semilattice : Large-Poset α β is-large-meet-semilattice-Large-Meet-Semilattice : is-large-meet-semilattice-Large-Poset large-poset-Large-Meet-Semilattice open Large-Meet-Semilattice public module _ {α : Level → Level} {β : Level → Level → Level} (L : Large-Meet-Semilattice α β) where type-Large-Meet-Semilattice : (l : Level) → UU (α l) type-Large-Meet-Semilattice = type-Large-Poset (large-poset-Large-Meet-Semilattice L) set-Large-Meet-Semilattice : (l : Level) → Set (α l) set-Large-Meet-Semilattice = set-Large-Poset (large-poset-Large-Meet-Semilattice L) is-set-type-Large-Meet-Semilattice : {l : Level} → is-set (type-Large-Meet-Semilattice l) is-set-type-Large-Meet-Semilattice = is-set-type-Large-Poset (large-poset-Large-Meet-Semilattice L) leq-Large-Meet-Semilattice : Large-Relation β type-Large-Meet-Semilattice leq-Large-Meet-Semilattice = leq-Large-Poset (large-poset-Large-Meet-Semilattice L) refl-leq-Large-Meet-Semilattice : is-reflexive-Large-Relation ( type-Large-Meet-Semilattice) ( leq-Large-Meet-Semilattice) refl-leq-Large-Meet-Semilattice = refl-leq-Large-Poset (large-poset-Large-Meet-Semilattice L) antisymmetric-leq-Large-Meet-Semilattice : is-antisymmetric-Large-Relation ( type-Large-Meet-Semilattice) ( leq-Large-Meet-Semilattice) antisymmetric-leq-Large-Meet-Semilattice = antisymmetric-leq-Large-Poset (large-poset-Large-Meet-Semilattice L) transitive-leq-Large-Meet-Semilattice : is-transitive-Large-Relation ( type-Large-Meet-Semilattice) ( leq-Large-Meet-Semilattice) transitive-leq-Large-Meet-Semilattice = transitive-leq-Large-Poset (large-poset-Large-Meet-Semilattice L) has-meets-Large-Meet-Semilattice : has-meets-Large-Poset (large-poset-Large-Meet-Semilattice L) has-meets-Large-Meet-Semilattice = has-meets-is-large-meet-semilattice-Large-Poset ( is-large-meet-semilattice-Large-Meet-Semilattice L) meet-Large-Meet-Semilattice : {l1 l2 : Level} (x : type-Large-Meet-Semilattice l1) (y : type-Large-Meet-Semilattice l2) → type-Large-Meet-Semilattice (l1 ⊔ l2) meet-Large-Meet-Semilattice = meet-is-large-meet-semilattice-Large-Poset ( large-poset-Large-Meet-Semilattice L) ( is-large-meet-semilattice-Large-Meet-Semilattice L) is-greatest-binary-lower-bound-meet-Large-Meet-Semilattice : {l1 l2 : Level} (x : type-Large-Meet-Semilattice l1) (y : type-Large-Meet-Semilattice l2) → is-greatest-binary-lower-bound-Large-Poset ( large-poset-Large-Meet-Semilattice L) ( x) ( y) ( meet-Large-Meet-Semilattice x y) is-greatest-binary-lower-bound-meet-Large-Meet-Semilattice = is-greatest-binary-lower-bound-meet-is-large-meet-semilattice-Large-Poset ( large-poset-Large-Meet-Semilattice L) ( is-large-meet-semilattice-Large-Meet-Semilattice L) ap-meet-Large-Meet-Semilattice : {l1 l2 : Level} {x x' : type-Large-Meet-Semilattice l1} {y y' : type-Large-Meet-Semilattice l2} → (x = x') → (y = y') → meet-Large-Meet-Semilattice x y = meet-Large-Meet-Semilattice x' y' ap-meet-Large-Meet-Semilattice p q = ap-binary meet-Large-Meet-Semilattice p q has-top-element-Large-Meet-Semilattice : has-top-element-Large-Poset (large-poset-Large-Meet-Semilattice L) has-top-element-Large-Meet-Semilattice = has-top-element-is-large-meet-semilattice-Large-Poset ( is-large-meet-semilattice-Large-Meet-Semilattice L) top-Large-Meet-Semilattice : type-Large-Meet-Semilattice lzero top-Large-Meet-Semilattice = top-is-large-meet-semilattice-Large-Poset ( large-poset-Large-Meet-Semilattice L) ( is-large-meet-semilattice-Large-Meet-Semilattice L) is-top-element-top-Large-Meet-Semilattice : {l1 : Level} (x : type-Large-Meet-Semilattice l1) → leq-Large-Meet-Semilattice x top-Large-Meet-Semilattice is-top-element-top-Large-Meet-Semilattice = is-top-element-top-is-large-meet-semilattice-Large-Poset ( large-poset-Large-Meet-Semilattice L) ( is-large-meet-semilattice-Large-Meet-Semilattice L) ``` ### Small meet semilattices from large meet semilattices ```agda module _ {α : Level → Level} {β : Level → Level → Level} (L : Large-Meet-Semilattice α β) where poset-Large-Meet-Semilattice : (l : Level) → Poset (α l) (β l l) poset-Large-Meet-Semilattice = poset-Large-Poset (large-poset-Large-Meet-Semilattice L) is-meet-semilattice-poset-Large-Meet-Semilattice : {l : Level} → is-meet-semilattice-Poset (poset-Large-Meet-Semilattice l) pr1 (is-meet-semilattice-poset-Large-Meet-Semilattice x y) = meet-Large-Meet-Semilattice L x y pr2 (is-meet-semilattice-poset-Large-Meet-Semilattice x y) = is-greatest-binary-lower-bound-meet-Large-Meet-Semilattice L x y order-theoretic-meet-semilattice-Large-Meet-Semilattice : (l : Level) → Order-Theoretic-Meet-Semilattice (α l) (β l l) pr1 (order-theoretic-meet-semilattice-Large-Meet-Semilattice l) = poset-Large-Meet-Semilattice l pr2 (order-theoretic-meet-semilattice-Large-Meet-Semilattice l) = is-meet-semilattice-poset-Large-Meet-Semilattice meet-semilattice-Large-Meet-Semilattice : (l : Level) → Meet-Semilattice (α l) meet-semilattice-Large-Meet-Semilattice l = meet-semilattice-Order-Theoretic-Meet-Semilattice ( order-theoretic-meet-semilattice-Large-Meet-Semilattice l) ```