# Negation ```agda module foundation.negation where open import foundation-core.negation public ``` <details><summary>Imports</summary> ```agda open import foundation.dependent-pair-types open import foundation.logical-equivalences open import foundation.universe-levels open import foundation-core.empty-types open import foundation-core.equivalences open import foundation-core.propositions ``` </details> ## Idea The Curry-Howard interpretation of negation in type theory is the interpretation of the proposition `P ⇒ ⊥` using propositions as types. Thus, the negation of a type `A` is the type `A → empty`. ## Properties ### The negation of a type is a proposition ```agda is-prop-neg : {l : Level} {A : UU l} → is-prop (¬ A) is-prop-neg {A = A} = is-prop-function-type is-prop-empty neg-type-Prop : {l1 : Level} → UU l1 → Prop l1 neg-type-Prop A = ¬ A , is-prop-neg neg-Prop : {l1 : Level} → Prop l1 → Prop l1 neg-Prop P = neg-type-Prop (type-Prop P) type-neg-Prop : {l1 : Level} → Prop l1 → UU l1 type-neg-Prop P = type-Prop (neg-Prop P) infix 25 ¬'_ ¬'_ : {l1 : Level} → Prop l1 → Prop l1 ¬'_ = neg-Prop ``` ### Reductio ad absurdum ```agda reductio-ad-absurdum : {l1 l2 : Level} {P : UU l1} {Q : UU l2} → P → ¬ P → Q reductio-ad-absurdum p np = ex-falso (np p) ``` ### Equivalent types have equivalent negations ```agda equiv-neg : {l1 l2 : Level} {X : UU l1} {Y : UU l2} → (X ≃ Y) → (¬ X ≃ ¬ Y) equiv-neg {l1} {l2} {X} {Y} e = equiv-iff' ( neg-type-Prop X) ( neg-type-Prop Y) ( pair (map-neg (map-inv-equiv e)) (map-neg (map-equiv e))) ``` ### Negation has no fixed points ```agda no-fixed-points-neg : {l : Level} (A : UU l) → ¬ (A ↔ ¬ A) no-fixed-points-neg A (f , g) = ( λ (h : ¬ A) → h (g h)) (λ (a : A) → f a a) abstract no-fixed-points-neg-Prop : {l : Level} (P : Prop l) → ¬ (type-Prop P ↔ ¬ (type-Prop P)) no-fixed-points-neg-Prop P = no-fixed-points-neg (type-Prop P) ``` ## 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 - [negation](https://ncatlab.org/nlab/show/negation) at $n$Lab - [Negation](https://en.wikipedia.org/wiki/Negation) at Wikipedia