# Dependent products of large frames ```agda module order-theory.dependent-products-large-frames where ``` <details><summary>Imports</summary> ```agda open import foundation.function-extensionality open import foundation.identity-types open import foundation.large-binary-relations open import foundation.sets open import foundation.universe-levels open import order-theory.dependent-products-large-meet-semilattices open import order-theory.dependent-products-large-posets open import order-theory.dependent-products-large-suplattices open import order-theory.greatest-lower-bounds-large-posets open import order-theory.large-frames open import order-theory.large-meet-semilattices open import order-theory.large-posets open import order-theory.large-suplattices open import order-theory.least-upper-bounds-large-posets open import order-theory.top-elements-large-posets ``` </details> Given a family `L : I → Large-Frame α β` of large frames indexed by a type `I : UU l`, the product of the large frame `L i` is again a large frame. ```agda module _ {α : Level → Level} {β : Level → Level → Level} {γ : Level} {l1 : Level} {I : UU l1} (L : I → Large-Frame α β γ) where large-poset-Π-Large-Frame : Large-Poset (λ l2 → α l2 ⊔ l1) (λ l2 l3 → β l2 l3 ⊔ l1) large-poset-Π-Large-Frame = Π-Large-Poset (λ i → large-poset-Large-Frame (L i)) large-meet-semilattice-Π-Large-Frame : Large-Meet-Semilattice (λ l2 → α l2 ⊔ l1) (λ l2 l3 → β l2 l3 ⊔ l1) large-meet-semilattice-Π-Large-Frame = Π-Large-Meet-Semilattice (λ i → large-meet-semilattice-Large-Frame (L i)) has-meets-Π-Large-Frame : has-meets-Large-Poset large-poset-Π-Large-Frame has-meets-Π-Large-Frame = has-meets-Π-Large-Poset ( λ i → large-poset-Large-Frame (L i)) ( λ i → has-meets-Large-Frame (L i)) large-suplattice-Π-Large-Frame : Large-Suplattice (λ l2 → α l2 ⊔ l1) (λ l2 l3 → β l2 l3 ⊔ l1) γ large-suplattice-Π-Large-Frame = Π-Large-Suplattice (λ i → large-suplattice-Large-Frame (L i)) is-large-suplattice-Π-Large-Frame : is-large-suplattice-Large-Poset γ large-poset-Π-Large-Frame is-large-suplattice-Π-Large-Frame = is-large-suplattice-Π-Large-Suplattice ( λ i → large-suplattice-Large-Frame (L i)) set-Π-Large-Frame : (l : Level) → Set (α l ⊔ l1) set-Π-Large-Frame = set-Large-Poset large-poset-Π-Large-Frame type-Π-Large-Frame : (l : Level) → UU (α l ⊔ l1) type-Π-Large-Frame = type-Large-Poset large-poset-Π-Large-Frame 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 leq-prop-Π-Large-Frame : Large-Relation-Prop ( λ l2 l3 → β l2 l3 ⊔ l1) ( type-Π-Large-Frame) leq-prop-Π-Large-Frame = leq-prop-Large-Poset large-poset-Π-Large-Frame leq-Π-Large-Frame : Large-Relation ( λ l2 l3 → β l2 l3 ⊔ l1) ( type-Π-Large-Frame) leq-Π-Large-Frame = leq-Large-Poset large-poset-Π-Large-Frame 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 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 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 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 meet-Π-Large-Frame : {l2 l3 : Level} → type-Π-Large-Frame l2 → type-Π-Large-Frame l3 → type-Π-Large-Frame (l2 ⊔ l3) meet-Π-Large-Frame = meet-has-meets-Large-Poset has-meets-Π-Large-Frame is-greatest-binary-lower-bound-meet-Π-Large-Frame : {l2 l3 : Level} (x : type-Π-Large-Frame l2) (y : type-Π-Large-Frame l3) → is-greatest-binary-lower-bound-Large-Poset ( large-poset-Π-Large-Frame) ( x) ( y) ( meet-Π-Large-Frame x y) is-greatest-binary-lower-bound-meet-Π-Large-Frame = is-greatest-binary-lower-bound-meet-has-meets-Large-Poset has-meets-Π-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 has-top-element-Π-Large-Frame : has-top-element-Large-Poset large-poset-Π-Large-Frame has-top-element-Π-Large-Frame = has-top-element-Large-Meet-Semilattice large-meet-semilattice-Π-Large-Frame is-large-meet-semilattice-Π-Large-Frame : is-large-meet-semilattice-Large-Poset large-poset-Π-Large-Frame is-large-meet-semilattice-Π-Large-Frame = is-large-meet-semilattice-Large-Meet-Semilattice large-meet-semilattice-Π-Large-Frame sup-Π-Large-Frame : {l2 l3 : Level} {J : UU l2} (x : J → type-Π-Large-Frame l3) → type-Π-Large-Frame (γ ⊔ l2 ⊔ l3) sup-Π-Large-Frame = sup-is-large-suplattice-Large-Poset γ ( large-poset-Π-Large-Frame) ( is-large-suplattice-Π-Large-Frame) is-least-upper-bound-sup-Π-Large-Frame : {l2 l3 : Level} {J : UU l2} (x : J → type-Π-Large-Frame l3) → is-least-upper-bound-family-of-elements-Large-Poset ( large-poset-Π-Large-Frame) ( 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) ( is-large-suplattice-Π-Large-Frame) distributive-meet-sup-Π-Large-Frame : {l2 l3 l4 : Level} (x : type-Π-Large-Frame l2) {J : UU l3} (y : J → type-Π-Large-Frame l4) → meet-Π-Large-Frame x (sup-Π-Large-Frame y) = sup-Π-Large-Frame (λ j → meet-Π-Large-Frame x (y j)) distributive-meet-sup-Π-Large-Frame x y = eq-htpy ( λ i → distributive-meet-sup-Large-Frame (L i) (x i) (λ j → y j i)) Π-Large-Frame : Large-Frame (λ l2 → α l2 ⊔ l1) (λ l2 l3 → β l2 l3 ⊔ l1) γ large-poset-Large-Frame Π-Large-Frame = large-poset-Π-Large-Frame is-large-meet-semilattice-Large-Frame Π-Large-Frame = is-large-meet-semilattice-Π-Large-Frame is-large-suplattice-Large-Frame Π-Large-Frame = is-large-suplattice-Π-Large-Frame distributive-meet-sup-Large-Frame Π-Large-Frame = distributive-meet-sup-Π-Large-Frame ```