# Dubuc-Penon compact types ```agda module foundation.dubuc-penon-compact-types where ``` <details><summary>Imports</summary> ```agda open import foundation.disjunction open import foundation.universal-quantification open import foundation.universe-levels open import foundation-core.propositions open import foundation-core.subtypes ``` </details> ## Idea A type is said to be {{#concept "Dubuc-Penon compact" Agda=is-dubuc-penon-compact}} if for every [proposition](foundation-core.propositions.md) `P` and every [subtype](foundation-core.subtypes.md) `Q` of `X` such that the [disjunction](foundation.disjunction.md) `P ∨ Q x` holds for all `x`, then either `P` is true or `Q` contains every element of `X`. ## Definition ```agda is-dubuc-penon-compact-Prop : {l : Level} (l1 l2 : Level) → UU l → Prop (l ⊔ lsuc l1 ⊔ lsuc l2) is-dubuc-penon-compact-Prop l1 l2 X = ∀' ( Prop l1) ( λ P → ∀' ( subtype l2 X) ( λ Q → (∀' X (λ x → P ∨ Q x)) ⇒ (P ∨ (∀' X Q)))) is-dubuc-penon-compact : {l : Level} (l1 l2 : Level) → UU l → UU (l ⊔ lsuc l1 ⊔ lsuc l2) is-dubuc-penon-compact l1 l2 X = type-Prop (is-dubuc-penon-compact-Prop l1 l2 X) ```