# Uniquely eliminating modalities
```agda
module orthogonal-factorization-systems.uniquely-eliminating-modalities where
```
<details><summary>Imports</summary>
```agda
open import foundation.action-on-identifications-functions
open import foundation.contractible-maps
open import foundation.contractible-types
open import foundation.dependent-pair-types
open import foundation.equivalences
open import foundation.function-extensionality
open import foundation.function-types
open import foundation.homotopies
open import foundation.identity-types
open import foundation.propositions
open import foundation.univalence
open import foundation.universe-levels
open import orthogonal-factorization-systems.local-types
open import orthogonal-factorization-systems.modal-operators
```
</details>
## Idea
A **uniquely eliminating modality** is a _higher mode of logic_ defined in terms
of a monadic
[modal operator](orthogonal-factorization-systems.modal-operators.md) `○`
satisfying a certain [locality](orthogonal-factorization-systems.local-types.md)
condition. Namely, that dependent precomposition by the modal unit `unit-○` is
an equivalence for type families over types in the image of the operator:
```text
- ∘ unit-○ : Π (x : ○ X) (○ (P x)) ≃ Π (x : X) (○ (P (unit-○ x)))
```
## Definition
```agda
is-uniquely-eliminating-modality :
{l1 l2 : Level} {○ : operator-modality l1 l2} →
unit-modality ○ → UU (lsuc l1 ⊔ l2)
is-uniquely-eliminating-modality {l1} {l2} {○} unit-○ =
{X : UU l1} (P : ○ X → UU l1) → is-local-dependent-type (unit-○) (○ ∘ P)
uniquely-eliminating-modality : (l1 l2 : Level) → UU (lsuc l1 ⊔ lsuc l2)
uniquely-eliminating-modality l1 l2 =
Σ ( operator-modality l1 l2)
( λ ○ →
Σ ( unit-modality ○)
( is-uniquely-eliminating-modality))
```
### Components of a uniquely eliminating modality
```agda
module _
{l1 l2 : Level} {○ : operator-modality l1 l2} {unit-○ : unit-modality ○}
(is-uem-○ : is-uniquely-eliminating-modality unit-○)
where
ind-modality-is-uniquely-eliminating-modality :
{X : UU l1} (P : ○ X → UU l1) →
((x : X) → ○ (P (unit-○ x))) → (x' : ○ X) → ○ (P x')
ind-modality-is-uniquely-eliminating-modality P =
map-inv-is-equiv (is-uem-○ P)
compute-ind-modality-is-uniquely-eliminating-modality :
{X : UU l1} (P : ○ X → UU l1) (f : (x : X) → ○ (P (unit-○ x))) →
(pr1 (pr1 (is-uem-○ P)) f ∘ unit-○) ~ f
compute-ind-modality-is-uniquely-eliminating-modality P =
htpy-eq ∘ pr2 (pr1 (is-uem-○ P))
module _
{l1 l2 : Level}
((○ , unit-○ , is-uem-○) : uniquely-eliminating-modality l1 l2)
where
operator-modality-uniquely-eliminating-modality : operator-modality l1 l2
operator-modality-uniquely-eliminating-modality = ○
unit-modality-uniquely-eliminating-modality : unit-modality ○
unit-modality-uniquely-eliminating-modality = unit-○
is-uniquely-eliminating-modality-uniquely-eliminating-modality :
is-uniquely-eliminating-modality unit-○
is-uniquely-eliminating-modality-uniquely-eliminating-modality = is-uem-○
```
## Properties
### Being uniquely eliminating is a property
```agda
module _
{l1 l2 : Level} {○ : operator-modality l1 l2} (unit-○ : unit-modality ○)
where
is-prop-is-uniquely-eliminating-modality :
is-prop (is-uniquely-eliminating-modality unit-○)
is-prop-is-uniquely-eliminating-modality =
is-prop-implicit-Π
( λ X →
is-prop-Π
( λ P → is-property-is-local-dependent-type unit-○ (○ ∘ P)))
is-uniquely-eliminating-modality-Prop : Prop (lsuc l1 ⊔ l2)
pr1 is-uniquely-eliminating-modality-Prop =
is-uniquely-eliminating-modality unit-○
pr2 is-uniquely-eliminating-modality-Prop =
is-prop-is-uniquely-eliminating-modality
```
### `○ X` is modal
```agda
module _
{l : Level}
((○ , unit-○ , is-uem-○) : uniquely-eliminating-modality l l)
(X : UU l)
where
map-inv-unit-uniquely-eliminating-modality : ○ (○ X) → ○ X
map-inv-unit-uniquely-eliminating-modality =
ind-modality-is-uniquely-eliminating-modality is-uem-○ (λ _ → X) id
is-section-unit-uniquely-eliminating-modality :
(map-inv-unit-uniquely-eliminating-modality ∘ unit-○) ~ id
is-section-unit-uniquely-eliminating-modality =
compute-ind-modality-is-uniquely-eliminating-modality
( is-uem-○)
( λ _ → X)
( id)
is-retraction-unit-uniquely-eliminating-modality :
(unit-○ ∘ map-inv-unit-uniquely-eliminating-modality) ~ id
is-retraction-unit-uniquely-eliminating-modality =
htpy-eq
( ap pr1
( eq-is-contr'
( is-contr-map-is-equiv (is-uem-○ (λ _ → ○ X)) unit-○)
( unit-○ ∘ map-inv-unit-uniquely-eliminating-modality ,
eq-htpy
( ap unit-○ ∘ (is-section-unit-uniquely-eliminating-modality)))
( id , refl)))
is-modal-uniquely-eliminating-modality : is-modal unit-○ (○ X)
is-modal-uniquely-eliminating-modality =
is-equiv-is-invertible
map-inv-unit-uniquely-eliminating-modality
is-retraction-unit-uniquely-eliminating-modality
is-section-unit-uniquely-eliminating-modality
```
### Uniquely eliminating modalities are uniquely determined by their modal types
Uniquely eliminating modalities are uniquely determined by their modal types.
Equivalently, this can be phrazed as a characterization of the identity type of
uniquely eliminating modalities.
Suppose given two uniquely eliminating modalities `○` and `●`. They are equal if
and only if they have the same modal types.
```agda
module _
{l1 l2 : Level}
where
htpy-uniquely-eliminating-modality :
(○ ● : uniquely-eliminating-modality l1 l2) → UU (lsuc l1 ⊔ l2)
htpy-uniquely-eliminating-modality ○ ● =
equiv-fam
( is-modal (unit-modality-uniquely-eliminating-modality ○))
( is-modal (unit-modality-uniquely-eliminating-modality ●))
refl-htpy-uniquely-eliminating-modality :
(○ : uniquely-eliminating-modality l1 l2) →
htpy-uniquely-eliminating-modality ○ ○
refl-htpy-uniquely-eliminating-modality ○ X = id-equiv
htpy-eq-uniquely-eliminating-modality :
(○ ● : uniquely-eliminating-modality l1 l2) →
○ = ● → htpy-uniquely-eliminating-modality ○ ●
htpy-eq-uniquely-eliminating-modality ○ .○ refl =
refl-htpy-uniquely-eliminating-modality ○
```
It remains to show that `htpy-eq-uniquely-eliminating-modality` is an
equivalence.
## See also
The equivalent notions of
- [Higher modalities](orthogonal-factorization-systems.higher-modalities.md)
- [Σ-closed reflective modalities](orthogonal-factorization-systems.sigma-closed-reflective-modalities.md)
- [Σ-closed reflective subuniverses](orthogonal-factorization-systems.sigma-closed-reflective-subuniverses.md)
- [Stable orthogonal factorization systems](orthogonal-factorization-systems.stable-orthogonal-factorization-systems.md)
## References
{{#bibliography}} {{#reference RSS20}}