# Intersections of subtypes ```agda module foundation.intersections-subtypes where ``` <details><summary>Imports</summary> ```agda open import foundation.conjunction open import foundation.decidable-subtypes open import foundation.dependent-pair-types open import foundation.large-locale-of-subtypes open import foundation.powersets open import foundation.universe-levels open import foundation-core.decidable-propositions open import foundation-core.propositions open import foundation-core.subtypes open import order-theory.greatest-lower-bounds-large-posets ``` </details> ## Idea The intersection of two subtypes `A` and `B` is the subtype that contains the elements that are in `A` and in `B`. ## Definition ### The intersection of two subtypes ```agda module _ {l1 l2 l3 : Level} {X : UU l1} (P : subtype l2 X) (Q : subtype l3 X) where intersection-subtype : subtype (l2 ⊔ l3) X intersection-subtype = meet-powerset-Large-Locale P Q is-greatest-binary-lower-bound-intersection-subtype : is-greatest-binary-lower-bound-Large-Poset ( powerset-Large-Poset X) ( P) ( Q) ( intersection-subtype) pr1 ( pr1 ( is-greatest-binary-lower-bound-intersection-subtype R) ( p , q) x r) = p x r pr2 ( pr1 ( is-greatest-binary-lower-bound-intersection-subtype R) ( p , q) x r) = q x r pr1 (pr2 (is-greatest-binary-lower-bound-intersection-subtype R) p) x r = pr1 (p x r) pr2 (pr2 (is-greatest-binary-lower-bound-intersection-subtype R) p) x r = pr2 (p x r) ``` ### The intersection of two decidable subtypes ```agda module _ {l l1 l2 : Level} {X : UU l} where intersection-decidable-subtype : decidable-subtype l1 X → decidable-subtype l2 X → decidable-subtype (l1 ⊔ l2) X intersection-decidable-subtype P Q x = conjunction-Decidable-Prop (P x) (Q x) ``` ### The intersection of a family of subtypes ```agda module _ {l1 l2 l3 : Level} {X : UU l1} where intersection-family-of-subtypes : {I : UU l2} (P : I → subtype l3 X) → subtype (l2 ⊔ l3) X intersection-family-of-subtypes {I} P x = Π-Prop I (λ i → P i x) ```