# The double negation modality ```agda module foundation.double-negation-modality where ``` <details><summary>Imports</summary> ```agda open import foundation.double-negation open import foundation.universe-levels open import foundation-core.function-types open import foundation-core.propositions open import foundation-core.transport-along-identifications open import orthogonal-factorization-systems.local-types open import orthogonal-factorization-systems.modal-operators open import orthogonal-factorization-systems.uniquely-eliminating-modalities ``` </details> ## Idea The [double negation](foundation.double-negation.md) operation `¬¬` is a [modality](orthogonal-factorization-systems.higher-modalities.md). ## Definition ### The double negation modality ```agda operator-double-negation-modality : (l : Level) → operator-modality l l operator-double-negation-modality _ = ¬¬_ unit-double-negation-modality : {l : Level} → unit-modality (operator-double-negation-modality l) unit-double-negation-modality = intro-double-negation ``` ## Properties ### The double negation modality is a uniquely eliminating modality ```agda is-uniquely-eliminating-modality-double-negation-modality : {l : Level} → is-uniquely-eliminating-modality (unit-double-negation-modality {l}) is-uniquely-eliminating-modality-double-negation-modality {l} {A} P = is-local-dependent-type-is-prop ( unit-double-negation-modality) ( operator-double-negation-modality l ∘ P) ( λ _ → is-prop-double-negation) ( λ f z → double-negation-extend ( λ (a : A) → tr ( ¬¬_ ∘ P) ( eq-is-prop is-prop-double-negation) ( f a)) ( z)) ``` This proof follows Example 1.9 in {{#cite RSS20}}. ## References {{#bibliography}}