# Universal quantification
```agda
module foundation.universal-quantification where
```
<details><summary>Imports</summary>
```agda
open import foundation.dependent-pair-types
open import foundation.evaluation-functions
open import foundation.logical-equivalences
open import foundation.propositional-truncations
open import foundation.universe-levels
open import foundation-core.equivalences
open import foundation-core.function-types
open import foundation-core.propositions
```
</details>
## Idea
Given a type `A` and a [subtype](foundation-core.subtypes.md) `P : A → Prop`,
the
{{#concept "universal quantification" Disambiguation="on a subtype" WDID=Q126695 WD="universal quantification"}}
```text
∀ (x : A), (P x)
```
is the [proposition](foundation-core.propositions.md) that there exists a proof
of `P x` for every `x` in `A`.
The
{{#concept "universal property" Disambiguation="of universal quantification" Agda=universal-property-for-all}}
of universal quantification states that it is the
[greatest lower bound](order-theory.greatest-lower-bounds-large-posets.md) on
the family of propositions `P` in the
[locale of propositions](foundation.large-locale-of-propositions.md), by which
we mean that for every proposition `Q` we have the
[logical equivalence](foundation.logical-equivalences.md)
```text
(∀ (a : A), (R → P a)) ↔ (R → ∀ (a : A), (P a))
```
**Notation.** Because of syntactic limitations of the Agda language, we cannot
use `∀` for the universal quantification in formalizations, and instead use
`∀'`.
## Definitions
### Universal quantification
```agda
module _
{l1 l2 : Level} (A : UU l1) (P : A → Prop l2)
where
for-all-Prop : Prop (l1 ⊔ l2)
for-all-Prop = Π-Prop A P
type-for-all-Prop : UU (l1 ⊔ l2)
type-for-all-Prop = type-Prop for-all-Prop
is-prop-for-all-Prop : is-prop type-for-all-Prop
is-prop-for-all-Prop = is-prop-type-Prop for-all-Prop
for-all : UU (l1 ⊔ l2)
for-all = type-for-all-Prop
∀' : Prop (l1 ⊔ l2)
∀' = for-all-Prop
```
### The universal property of universal quantification
The
{{#concept "universal property" Disambiguation="of universal quantification" Agda=universal-property-for-all}}
of the universal quantification `∀ (a : A), (P a)` states that for every
proposition `R`, the canonical map
```text
(∀ (a : A), (R → P a)) → (R → ∀ (a : A), (P a))
```
is a [logical equivalence](foundation.logical-equivalences.md). Indeed, this
holds for any type `R`.
```agda
module _
{l1 l2 : Level} (A : UU l1) (P : A → Prop l2)
where
universal-property-for-all : {l3 : Level} (S : Prop l3) → UUω
universal-property-for-all S =
{l : Level} (R : Prop l) →
type-Prop ((∀' A (λ a → R ⇒ P a)) ⇔ (R ⇒ S))
ev-for-all :
{l : Level} {B : UU l} →
for-all A (λ a → function-Prop B (P a)) → B → for-all A P
ev-for-all f r a = f a r
```
## Properties
### Universal quantification satisfies its universal property
```agda
module _
{l1 l2 : Level} (A : UU l1) (P : A → Prop l2)
where
map-up-for-all :
{l : Level} {B : UU l} →
(B → for-all A P) → for-all A (λ a → function-Prop B (P a))
map-up-for-all f a r = f r a
is-equiv-ev-for-all :
{l : Level} {B : UU l} → is-equiv (ev-for-all A P {B = B})
is-equiv-ev-for-all {B = B} =
is-equiv-has-converse
( ∀' A (λ a → function-Prop B (P a)))
( function-Prop B (∀' A P))
( map-up-for-all)
up-for-all : universal-property-for-all A P (∀' A P)
up-for-all R = (ev-for-all A P , map-up-for-all)
```
## See also
- Universal quantification is the indexed counterpart to
[conjunction](foundation.conjunction.md).
## Table of files about propositional logic
The following table gives an overview of basic constructions in propositional
logic and related considerations.
{{#include tables/propositional-logic.md}}
## External links
- [universal quantifier](https://ncatlab.org/nlab/show/universal+quantifier) at
$n$Lab
- [Universal quantification](https://en.wikipedia.org/wiki/Universal_quantification)
at Wikipedia