Irrefutable propositions
Content created by Fredrik Bakke.
Created on 2024-10-15.
Last modified on 2024-10-15.
module foundation.irrefutable-propositions where
Imports
open import foundation.coproduct-types open import foundation.decidable-propositions open import foundation.decidable-types open import foundation.dependent-pair-types open import foundation.double-negation open import foundation.function-types open import foundation.negation open import foundation.subuniverses open import foundation.unit-type open import foundation.universe-levels open import foundation-core.propositions
Idea
The subuniverse of
irrefutable propositions¶ consists of
propositions P
for which the
double negation ¬¬P
is true.
Definitions
The predicate on a proposition of being irrefutable
is-irrefutable : {l : Level} → Prop l → UU l is-irrefutable P = ¬¬ (type-Prop P) is-prop-is-irrefutable : {l : Level} (P : Prop l) → is-prop (is-irrefutable P) is-prop-is-irrefutable P = is-prop-double-negation is-irrefutable-Prop : {l : Level} → Prop l → Prop l is-irrefutable-Prop = double-negation-Prop
The subuniverse of irrefutable propositions
subuniverse-Irrefutable-Prop : (l : Level) → subuniverse l l subuniverse-Irrefutable-Prop l A = product-Prop (is-prop-Prop A) (double-negation-type-Prop A) Irrefutable-Prop : (l : Level) → UU (lsuc l) Irrefutable-Prop l = type-subuniverse (subuniverse-Irrefutable-Prop l) make-Irrefutable-Prop : {l : Level} (P : Prop l) → is-irrefutable P → Irrefutable-Prop l make-Irrefutable-Prop P is-irrefutable-P = ( type-Prop P , is-prop-type-Prop P , is-irrefutable-P) module _ {l : Level} (P : Irrefutable-Prop l) where type-Irrefutable-Prop : UU l type-Irrefutable-Prop = pr1 P is-prop-type-Irrefutable-Prop : is-prop type-Irrefutable-Prop is-prop-type-Irrefutable-Prop = pr1 (pr2 P) prop-Irrefutable-Prop : Prop l prop-Irrefutable-Prop = type-Irrefutable-Prop , is-prop-type-Irrefutable-Prop is-irrefutable-Irrefutable-Prop : is-irrefutable prop-Irrefutable-Prop is-irrefutable-Irrefutable-Prop = pr2 (pr2 P)
Properties
If it is irrefutable that a proposition is irrefutable, then the proposition is irrefutable
module _ {l : Level} (P : Prop l) where is-irrefutable-is-irrefutable-is-irrefutable : is-irrefutable (is-irrefutable-Prop P) → is-irrefutable P is-irrefutable-is-irrefutable-is-irrefutable = double-negation-elim-neg (¬ (type-Prop P))
The decidability of a proposition is irrefutable
is-irrefutable-is-decidable : {l : Level} {A : UU l} → ¬¬ (is-decidable A) is-irrefutable-is-decidable H = H (inr (H ∘ inl)) module _ {l : Level} (P : Prop l) where is-irrefutable-is-decidable-Prop : is-irrefutable (is-decidable-Prop P) is-irrefutable-is-decidable-Prop = is-irrefutable-is-decidable is-decidable-prop-Irrefutable-Prop : Irrefutable-Prop l is-decidable-prop-Irrefutable-Prop = make-Irrefutable-Prop (is-decidable-Prop P) is-irrefutable-is-decidable-Prop
Provable propositions are irrefutable
module _ {l : Level} (P : Prop l) where is-irrefutable-is-inhabited : type-Prop P → is-irrefutable P is-irrefutable-is-inhabited = intro-double-negation is-irrefutable-unit : is-irrefutable unit-Prop is-irrefutable-unit = is-irrefutable-is-inhabited unit-Prop star
Recent changes
- 2024-10-15. Fredrik Bakke. Define double negation sheaves (#1198).