# 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)
```