# Large frames ```agda module order-theory.large-frames where ``` <details><summary>Imports</summary> ```agda 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-meet-semilattices open import order-theory.large-posets open import order-theory.large-preorders open import order-theory.large-suplattices open import order-theory.least-upper-bounds-large-posets open import order-theory.meet-semilattices open import order-theory.posets open import order-theory.preorders open import order-theory.suplattices open import order-theory.top-elements-large-posets open import order-theory.upper-bounds-large-posets ``` </details> ## Idea A **large frame** is a large [meet-suplattice](order-theory.meet-suplattices.md) satisfying the distributive law for meets over suprema. ## Definitions ### Large frames ```agda record Large-Frame (α : Level → Level) (β : Level → Level → Level) (γ : Level) : UUω where constructor make-Large-Frame field large-poset-Large-Frame : Large-Poset α β is-large-meet-semilattice-Large-Frame : is-large-meet-semilattice-Large-Poset large-poset-Large-Frame is-large-suplattice-Large-Frame : is-large-suplattice-Large-Poset γ large-poset-Large-Frame distributive-meet-sup-Large-Frame : {l1 l2 l3 : Level} (x : type-Large-Poset large-poset-Large-Frame l1) {I : UU l2} (y : I → type-Large-Poset large-poset-Large-Frame l3) → meet-is-large-meet-semilattice-Large-Poset ( large-poset-Large-Frame) ( is-large-meet-semilattice-Large-Frame) ( x) ( sup-has-least-upper-bound-family-of-elements-Large-Poset ( is-large-suplattice-Large-Frame y)) = sup-has-least-upper-bound-family-of-elements-Large-Poset ( is-large-suplattice-Large-Frame ( λ i → meet-is-large-meet-semilattice-Large-Poset ( large-poset-Large-Frame) ( is-large-meet-semilattice-Large-Frame) ( x) ( y i))) open Large-Frame public module _ {α : Level → Level} {β : Level → Level → Level} {γ : Level} (L : Large-Frame α β γ) where large-preorder-Large-Frame : Large-Preorder α β large-preorder-Large-Frame = large-preorder-Large-Poset (large-poset-Large-Frame L) set-Large-Frame : (l : Level) → Set (α l) set-Large-Frame = set-Large-Poset (large-poset-Large-Frame L) type-Large-Frame : (l : Level) → UU (α l) type-Large-Frame = type-Large-Poset (large-poset-Large-Frame L) is-set-type-Large-Frame : {l : Level} → is-set (type-Large-Frame l) is-set-type-Large-Frame = is-set-type-Large-Poset (large-poset-Large-Frame L) leq-prop-Large-Frame : Large-Relation-Prop β type-Large-Frame leq-prop-Large-Frame = leq-prop-Large-Poset (large-poset-Large-Frame L) leq-Large-Frame : Large-Relation β type-Large-Frame leq-Large-Frame = leq-Large-Poset (large-poset-Large-Frame L) is-prop-leq-Large-Frame : is-prop-Large-Relation type-Large-Frame leq-Large-Frame is-prop-leq-Large-Frame = is-prop-leq-Large-Poset (large-poset-Large-Frame L) leq-eq-Large-Frame : {l1 : Level} {x y : type-Large-Frame l1} → (x = y) → leq-Large-Frame x y leq-eq-Large-Frame = leq-eq-Large-Poset (large-poset-Large-Frame L) refl-leq-Large-Frame : is-reflexive-Large-Relation type-Large-Frame leq-Large-Frame refl-leq-Large-Frame = refl-leq-Large-Poset (large-poset-Large-Frame L) antisymmetric-leq-Large-Frame : is-antisymmetric-Large-Relation type-Large-Frame leq-Large-Frame antisymmetric-leq-Large-Frame = antisymmetric-leq-Large-Poset (large-poset-Large-Frame L) transitive-leq-Large-Frame : is-transitive-Large-Relation type-Large-Frame leq-Large-Frame transitive-leq-Large-Frame = transitive-leq-Large-Poset (large-poset-Large-Frame L) large-meet-semilattice-Large-Frame : Large-Meet-Semilattice α β large-poset-Large-Meet-Semilattice large-meet-semilattice-Large-Frame = large-poset-Large-Frame L is-large-meet-semilattice-Large-Meet-Semilattice large-meet-semilattice-Large-Frame = is-large-meet-semilattice-Large-Frame L has-meets-Large-Frame : has-meets-Large-Poset (large-poset-Large-Frame L) has-meets-Large-Frame = has-meets-Large-Meet-Semilattice large-meet-semilattice-Large-Frame meet-Large-Frame : {l1 l2 : Level} → type-Large-Frame l1 → type-Large-Frame l2 → type-Large-Frame (l1 ⊔ l2) meet-Large-Frame = meet-is-large-meet-semilattice-Large-Poset ( large-poset-Large-Frame L) ( is-large-meet-semilattice-Large-Frame L) is-greatest-binary-lower-bound-meet-Large-Frame : {l1 l2 : Level} → (x : type-Large-Frame l1) (y : type-Large-Frame l2) → is-greatest-binary-lower-bound-Large-Poset ( large-poset-Large-Frame L) ( x) ( y) ( meet-Large-Frame x y) is-greatest-binary-lower-bound-meet-Large-Frame = is-greatest-binary-lower-bound-meet-is-large-meet-semilattice-Large-Poset ( large-poset-Large-Frame L) ( is-large-meet-semilattice-Large-Frame L) ap-meet-Large-Frame : {l1 l2 : Level} {x x' : type-Large-Frame l1} {y y' : type-Large-Frame l2} → (x = x') → (y = y') → (meet-Large-Frame x y = meet-Large-Frame x' y') ap-meet-Large-Frame = ap-meet-Large-Meet-Semilattice large-meet-semilattice-Large-Frame has-top-element-Large-Frame : has-top-element-Large-Poset (large-poset-Large-Frame L) has-top-element-Large-Frame = has-top-element-Large-Meet-Semilattice large-meet-semilattice-Large-Frame top-Large-Frame : type-Large-Frame lzero top-Large-Frame = top-Large-Meet-Semilattice large-meet-semilattice-Large-Frame is-top-element-top-Large-Frame : {l1 : Level} (x : type-Large-Frame l1) → leq-Large-Frame x top-Large-Frame is-top-element-top-Large-Frame = is-top-element-top-Large-Meet-Semilattice large-meet-semilattice-Large-Frame sup-Large-Frame : {l1 l2 : Level} {I : UU l1} → (I → type-Large-Frame l2) → type-Large-Frame (γ ⊔ l1 ⊔ l2) sup-Large-Frame = sup-is-large-suplattice-Large-Poset γ ( large-poset-Large-Frame L) ( is-large-suplattice-Large-Frame L) is-least-upper-bound-sup-Large-Frame : {l1 l2 : Level} {I : UU l1} (x : I → type-Large-Frame l2) → is-least-upper-bound-family-of-elements-Large-Poset ( large-poset-Large-Frame L) ( x) ( sup-Large-Frame x) is-least-upper-bound-sup-Large-Frame = is-least-upper-bound-sup-is-large-suplattice-Large-Poset γ ( large-poset-Large-Frame L) ( is-large-suplattice-Large-Frame L) large-suplattice-Large-Frame : Large-Suplattice α β γ large-poset-Large-Suplattice large-suplattice-Large-Frame = large-poset-Large-Frame L is-large-suplattice-Large-Suplattice large-suplattice-Large-Frame = is-large-suplattice-Large-Frame L is-upper-bound-sup-Large-Frame : {l1 l2 : Level} {I : UU l1} (x : I → type-Large-Frame l2) → is-upper-bound-family-of-elements-Large-Poset ( large-poset-Large-Frame L) ( x) ( sup-Large-Frame x) is-upper-bound-sup-Large-Frame = is-upper-bound-sup-Large-Suplattice large-suplattice-Large-Frame ``` ## Properties ### Small constructions from large frames ```agda module _ {α : Level → Level} {β : Level → Level → Level} {γ : Level} (L : Large-Frame α β γ) where preorder-Large-Frame : (l : Level) → Preorder (α l) (β l l) preorder-Large-Frame = preorder-Large-Preorder (large-preorder-Large-Frame L) poset-Large-Frame : (l : Level) → Poset (α l) (β l l) poset-Large-Frame = poset-Large-Poset (large-poset-Large-Frame L) is-suplattice-poset-Large-Frame : (l1 l2 : Level) → is-suplattice-Poset l1 (poset-Large-Frame (γ ⊔ l1 ⊔ l2)) pr1 (is-suplattice-poset-Large-Frame l1 l2 I y) = sup-Large-Frame L y pr2 (is-suplattice-poset-Large-Frame l1 l2 I y) = is-least-upper-bound-sup-Large-Frame L y suplattice-Large-Frame : (l1 l2 : Level) → Suplattice (α (γ ⊔ l1 ⊔ l2)) (β (γ ⊔ l1 ⊔ l2) (γ ⊔ l1 ⊔ l2)) l1 pr1 (suplattice-Large-Frame l1 l2) = poset-Large-Frame (γ ⊔ l1 ⊔ l2) pr2 (suplattice-Large-Frame l1 l2) = is-suplattice-poset-Large-Frame l1 l2 is-meet-semilattice-poset-Large-Frame : (l : Level) → is-meet-semilattice-Poset (poset-Large-Frame l) pr1 (is-meet-semilattice-poset-Large-Frame l x y) = meet-Large-Frame L x y pr2 (is-meet-semilattice-poset-Large-Frame l x y) = is-greatest-binary-lower-bound-meet-Large-Frame L x y order-theoretic-meet-semilattice-Large-Frame : (l : Level) → Order-Theoretic-Meet-Semilattice (α l) (β l l) pr1 (order-theoretic-meet-semilattice-Large-Frame l) = poset-Large-Frame l pr2 (order-theoretic-meet-semilattice-Large-Frame l) = is-meet-semilattice-poset-Large-Frame l meet-semilattice-Large-Frame : (l : Level) → Meet-Semilattice (α l) meet-semilattice-Large-Frame = meet-semilattice-Large-Meet-Semilattice ( large-meet-semilattice-Large-Frame L) ```