# The principle of omniscience
```agda
module foundation.principle-of-omniscience where
```
<details><summary>Imports</summary>
```agda
open import foundation.decidable-subtypes
open import foundation.propositional-truncations
open import foundation.universe-levels
open import foundation-core.decidable-propositions
open import foundation-core.propositions
```
</details>
## Idea
A type `X` is said to satisfy the **principle of omniscience** if every
[decidable subtype](foundation.decidable-subtypes.md) of `X` is either
[inhabited](foundation.inhabited-types.md) or
[empty](foundation-core.empty-types.md).
## Definition
```agda
is-omniscient-Prop : {l : Level} → UU l → Prop (lsuc lzero ⊔ l)
is-omniscient-Prop X =
Π-Prop
( decidable-subtype lzero X)
( λ P → is-decidable-Prop (trunc-Prop (type-decidable-subtype P)))
is-omniscient : {l : Level} → UU l → UU (lsuc lzero ⊔ l)
is-omniscient X = type-Prop (is-omniscient-Prop X)
```
## See also
- [The limited principle of omniscience](foundation.limited-principle-of-omniscience.md)
- [The lesser limited principle of omniscience](foundation.lesser-limited-principle-of-omniscience.md)
- [The weak limited principle of omniscience](foundation.weak-limited-principle-of-omniscience.md)