# Propositions
```agda
module foundation.propositions where
open import foundation-core.propositions public
```
<details><summary>Imports</summary>
```agda
open import foundation.contractible-types
open import foundation.dependent-pair-types
open import foundation.logical-equivalences
open import foundation.retracts-of-types
open import foundation.universe-levels
open import foundation-core.embeddings
open import foundation-core.equivalences
open import foundation-core.truncated-types
open import foundation-core.truncation-levels
```
</details>
## Properties
### Propositions are `k+1`-truncated for any `k`
```agda
abstract
is-trunc-is-prop :
{l : Level} (k : 𝕋) {A : UU l} → is-prop A → is-trunc (succ-𝕋 k) A
is-trunc-is-prop k is-prop-A x y = is-trunc-is-contr k (is-prop-A x y)
truncated-type-Prop : {l : Level} (k : 𝕋) → Prop l → Truncated-Type l (succ-𝕋 k)
pr1 (truncated-type-Prop k P) = type-Prop P
pr2 (truncated-type-Prop k P) = is-trunc-is-prop k (is-prop-type-Prop P)
```
### Propositions are closed under retracts
```agda
module _
{l1 l2 : Level} {A : UU l1} (B : UU l2)
where
is-prop-retract-of : A retract-of B → is-prop B → is-prop A
is-prop-retract-of = is-trunc-retract-of
```
### If a type embeds into a proposition, then it is a proposition
```agda
abstract
is-prop-is-emb :
{l1 l2 : Level} {A : UU l1} {B : UU l2} (f : A → B) →
is-emb f → is-prop B → is-prop A
is-prop-is-emb = is-trunc-is-emb neg-two-𝕋
abstract
is-prop-emb :
{l1 l2 : Level} {A : UU l1} {B : UU l2} (f : A ↪ B) → is-prop B → is-prop A
is-prop-emb = is-trunc-emb neg-two-𝕋
```
### Two equivalent types are equivalently propositions
```agda
equiv-is-prop-equiv : {l1 l2 : Level} {A : UU l1} {B : UU l2} →
A ≃ B → is-prop A ≃ is-prop B
equiv-is-prop-equiv {A = A} {B = B} e =
equiv-iff-is-prop
( is-prop-is-prop A)
( is-prop-is-prop B)
( is-prop-equiv' e)
( is-prop-equiv e)
```
## See also
### Operations on propositions
There is a wide range of operations on propositions due to the rich structure of
intuitionistic logic. Below we give a structured overview of a notable selection
of such operations and their notation in the library.
The list is split into two sections, the first consists of operations that
generalize to arbitrary types and even sufficiently nice
[subuniverses](foundation.subuniverses.md), such as
$n$-[types](foundation-core.truncated-types.md).
| Name | Operator on types | Operator on propositions/subtypes |
| ----------------------------------------------------------- | ----------------- | --------------------------------- |
| [Dependent sum](foundation.dependent-pair-types.md) | `Σ` | `Σ-Prop` |
| [Dependent product](foundation.dependent-function-types.md) | `Π` | `Π-Prop` |
| [Functions](foundation-core.function-types.md) | `→` | `⇒` |
| [Logical equivalence](foundation.logical-equivalences.md) | `↔` | `⇔` |
| [Product](foundation-core.cartesian-product-types.md) | `×` | `product-Prop` |
| [Join](synthetic-homotopy-theory.joins-of-types.md) | `*` | `join-Prop` |
| [Exclusive sum](foundation.exclusive-sum.md) | `exclusive-sum` | `exclusive-sum-Prop` |
| [Coproduct](foundation-core.coproduct-types.md) | `+` | _N/A_ |
Note that for many operations in the second section, there is an equivalent
operation on propositions in the first.
| Name | Operator on types | Operator on propositions/subtypes |
| ---------------------------------------------------------------------------- | --------------------------- | ---------------------------------------- |
| [Initial object](foundation-core.empty-types.md) | `empty` | `empty-Prop` |
| [Terminal object](foundation.unit-type.md) | `unit` | `unit-Prop` |
| [Existential quantification](foundation.existential-quantification.md) | `exists-structure` | `∃` |
| [Unique existential quantification](foundation.uniqueness-quantification.md) | `uniquely-exists-structure` | `∃!` |
| [Universal quantification](foundation.universal-quantification.md) | | `∀'` (equivalent to `Π-Prop`) |
| [Conjunction](foundation.conjunction.md) | | `∧` (equivalent to `product-Prop`) |
| [Disjunction](foundation.disjunction.md) | `disjunction-type` | `∨` (equivalent to `join-Prop`) |
| [Exclusive disjunction](foundation.exclusive-disjunction.md) | `xor-type` | `⊻` (equivalent to `exclusive-sum-Prop`) |
| [Negation](foundation.negation.md) | `¬` | `¬'` |
| [Double negation](foundation.double-negation.md) | `¬¬` | `¬¬'` |
We can also organize these operations by indexed and binary variants, giving us
the following table:
| Name | Binary | Indexed |
| ---------------------- | ------ | ------- |
| Product | `×` | `Π` |
| Conjunction | `∧` | `∀'` |
| Constructive existence | `+` | `Σ` |
| Existence | `∨` | `∃` |
| Unique existence | `⊻` | `∃!` |
### 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}}