Martin Escardo 11th September 2024.
Markov's principle and the well-known fact that it and WLPO together
imply LPO.
\begin{code}
{-# OPTIONS --safe --without-K --lossy-unification #-}
module Taboos.MarkovsPrinciple where
open import MLTT.Spartan
open import MLTT.Two-Properties
open import NotionsOfDecidability.Complemented
open import Taboos.LPO
open import Taboos.WLPO
open import TypeTopology.CompactTypes
open import UF.DiscreteAndSeparated
open import UF.FunExt
MP : (𝓤 : Universe) → 𝓤 ⁺ ̇
MP 𝓤 = (A : ℕ → 𝓤 ̇ )
→ is-complemented A
→ ¬¬ (Σ n ꞉ ℕ , A n)
→ Σ n ꞉ ℕ , A n
MP-and-WLPO-give-LPO
: funext 𝓤₀ 𝓤₀
→ MP 𝓤₀
→ WLPO → LPO
MP-and-WLPO-give-LPO fe mp wlpo = III
where
I : WLPO-traditional
I = WLPO-gives-WLPO-traditional fe wlpo
II : WLPO-traditional → is-compact ℕ
II wlpot p = II₄
where
II₀ : ¬ (Σ n ꞉ ℕ , p n = ₀) → (n : ℕ) → p n = ₁
II₀ ν n = Lemma[b≠₀→b=₁] (λ (e : p n = ₀) → ν (n , e))
II₁ : ¬ ((n : ℕ) → p n = ₁) → ¬¬ (Σ n ꞉ ℕ , p n = ₀)
II₁ = contrapositive II₀
II₂ : ¬ ((n : ℕ) → p n = ₁) → Σ n ꞉ ℕ , p n = ₀
II₂ ν = mp (λ n → p n = ₀)
(λ n → 𝟚-is-discrete (p n) ₀)
(II₁ ν)
II₃ : is-decidable ((n : ℕ) → p n = ₁)
→ (Σ n ꞉ ℕ , p n = ₀) + ((n : ℕ) → p n = ₁)
II₃ (inl a) = inr a
II₃ (inr ν) = inl (II₂ ν)
II₄ : (Σ n ꞉ ℕ , p n = ₀) + ((n : ℕ) → p n = ₁)
II₄ = II₃ (wlpot p)
III : LPO
III = compact-ℕ-gives-LPO fe (II I)
\end{code}
TODO. It doesn't matter if we formulated MP with Σ or ∃, or for
𝟚-valued functions, so that we get four logically equivalent
formulations.