Chuangjie Xu, 2012. This is an Agda formalization of Theorem 8.2 of the extended version of [1]. The theorem says that, for any p : ββ β π, the proposition (n : β) β p (ΞΉ n) οΌ β is decidable where ΞΉ : β β β is the inclusion. [1] Martin Escardo. Infinite sets that satisfy the principle of omniscience in all varieties of constructive mathematics, Journal of Symbolic Logic, volume 78, number 3, September 2013, pages 764-784. https://doi.org/10.2178/jsl.7803040 \begin{code} {-# OPTIONS --safe --without-K #-} open import MLTT.Spartan open import UF.FunExt module TypeTopology.ADecidableQuantificationOverTheNaturals (fe : funext π€β π€β) where open import CoNaturals.Type open import MLTT.Two-Properties open import Notation.CanonicalMap open import NotionsOfDecidability.Complemented open import NotionsOfDecidability.Decidable open import TypeTopology.GenericConvergentSequenceCompactness fe open import UF.DiscreteAndSeparated Lemma-8Β·1 : (p : ββ β π) β (Ξ£ x κ ββ , (x β β) Γ (p x οΌ β)) + ((n : β) β p (ΞΉ n) οΌ β) Lemma-8Β·1 p = cases claimβ claimβ claimβ where claimβ : (Ξ£ y κ ββ , p y β p (Succ y)) β (Ξ£ x κ ββ , (x β β) Γ (p x οΌ β)) + ((n : β) β p (ΞΉ n) οΌ β) claimβ e = inl (π-equality-cases caseβ caseβ) where x : ββ x = prβ e ne : p x β p (Succ x) ne = prβ e caseβ : p x οΌ β β Ξ£ x κ ββ , (x β β) Γ (p x οΌ β) caseβ r = x , (s , r) where s : x β β s t = ne (ap p (t β (Succ-β-is-β fe)β»ΒΉ β (ap Succ t)β»ΒΉ)) caseβ : p x οΌ β β Ξ£ x κ ββ , (x β β) Γ (p x οΌ β) caseβ r = (Succ x) , (s , s') where s : Succ x β β s t = ne (ap p (Succ-lc (t β (Succ-β-is-β fe)β»ΒΉ) β t β»ΒΉ)) s' : p (Succ x) οΌ β s' = different-from-β-equal-β (Ξ» t β ne (r β t β»ΒΉ)) claimβ : ((y : ββ) β p y οΌ p (Succ y)) β (Ξ£ x κ ββ , (x β β) Γ (p x οΌ β)) + ((n : β) β p (ΞΉ n) οΌ β) claimβ f = π-equality-cases caseβ caseβ where caseβ : p Zero οΌ β β (Ξ£ x κ ββ , (x β β) Γ (p x οΌ β)) + ((n : β) β p (ΞΉ n) οΌ β) caseβ r = inl (Zero , (s , r)) where s : Zero β β s t = β-is-not-finite 0 (t β»ΒΉ) caseβ : p Zero οΌ β β (Ξ£ x κ ββ , (x β β) Γ (p x οΌ β)) + ((n : β) β p (ΞΉ n) οΌ β) caseβ r = inr by-induction where by-induction : (n : β) β p (ΞΉ n) οΌ β by-induction 0 = r by-induction (succ n) = (f (ΞΉ n))β»ΒΉ β by-induction n claimβ : (Ξ£ y κ ββ , p y β p (Succ y)) + ((y : ββ) β p y οΌ p (Succ y)) claimβ = g (ββ-compact q) where fact : (y : ββ) β (p y β p (Succ y)) + Β¬ (p y β p (Succ y)) fact y = Β¬-preserves-decidability (π-is-discrete (p y) (p (Succ y))) f : Ξ£ q κ (ββ β π), ((y : ββ) β (q y οΌ β β p y β p (Succ y)) Γ (q y οΌ β β Β¬ (p y β p (Succ y)))) f = characteristic-function fact q : ββ β π q = prβ f g : (Ξ£ y κ ββ , q y οΌ β) + ((y : ββ) β q y οΌ β) β (Ξ£ y κ ββ , p y β p (Succ y)) + ((y : ββ) β p y οΌ p (Succ y)) g (inl (y , r)) = inl (y , (prβ (prβ f y) r)) g (inr h ) = inr (Ξ» y β discrete-is-¬¬-separated π-is-discrete (p y) (p (Succ y)) (prβ (prβ f y) (h y))) \end{code} TODO. The name of the following fact is that of the reference [1] above. It deserves a better name, or at least a better synonym. \begin{code} abstract Theorem-8Β·2 : (p : ββ β π) β is-decidable ((n : β) β p (ΞΉ n) οΌ β) Theorem-8Β·2 p = cases claimβ claimβ (Lemma-8Β·1 p) where claimβ : (Ξ£ x κ ββ , (x β β) Γ (p x οΌ β)) β is-decidable ((n : β) β p (ΞΉ n) οΌ β) claimβ e = inr cβ where x : ββ x = prβ e cβ : Β¬ ((n : β) β x β ΞΉ n) cβ = Ξ» g β prβ (prβ e) (not-finite-is-β fe g) cβ : Β¬ ((n : β) β p (ΞΉ n) οΌ β) cβ g = cβ d where d : (n : β) β x β ΞΉ n d n r = equal-β-different-from-β (prβ (prβ e)) (ap p r β g n) claimβ : ((n : β) β p (ΞΉ n) οΌ β) β is-decidable ((n : β) β p (ΞΉ n) οΌ β) claimβ f = inl f \end{code} Some examples: \begin{code} module examples where to-β : {A : π€ Μ } β is-decidable A β β to-β (inl _) = 0 to-β (inr _) = 1 \end{code} 0 means that (n : β) β p (ΞΉ n) οΌ β 1 means that Β¬ ((n : β) β p (ΞΉ n) οΌ β) \begin{code} eval : (ββ β π) β β eval p = to-β (Theorem-8Β·2 p) pβ : ββ β π pβ _ = β pβ : ββ β π pβ _ = β \end{code} If the first boolean is less than or equal to the second then it has value β; otherwise, it has value β. \begin{code} _<=_ : π β π β π β <= y = β β <= β = β β <= β = β \end{code} If the two booleans are equal then it has value β; otherwise, it has value β. \begin{code} _==_ : π β π β π β == β = β β == β = β β == β = β β == β = β pβ : ββ β π pβ (Ξ± , _) = Ξ± 10 <= Ξ± 1 pβ : ββ β π pβ (Ξ± , _) = Ξ± 0 <= Ξ± 1 pβ : ββ β π pβ (Ξ± , _) = Ξ± 5 == Ξ± 100 to-something : (p : ββ β π) β is-decidable ((n : β) β p (ΞΉ n) οΌ β) β (p (ΞΉ 17) οΌ β) + β to-something p (inl f) = inl (f 17) to-something p (inr _) = inr 1070 eval1 : (p : ββ β π) β (p (ΞΉ 17) οΌ β) + β eval1 p = to-something p (Theorem-8Β·2 p) \end{code} Despite the fact that we use function extensionality, eval pi evaluates to a numeral for i=0,...,4. Added by Martin Escardo 5th September 2024. The following version is more convenient in practice. \begin{code} abstract Theorem-8Β·2' : (A : ββ β π€ Μ ) β is-complemented A β is-decidable ((n : β) β A (ΞΉ n)) Theorem-8Β·2' {π€} A Ξ΄ = IV where p : ββ β π p = complement β characteristic-map A Ξ΄ I : is-decidable ((n : β) β p (ΞΉ n) οΌ β) I = Theorem-8Β·2 p II : ((n : β) β p (ΞΉ n) οΌ β) β (n : β) β A (ΞΉ n) II b n = characteristic-map-propertyβ A Ξ΄ (ΞΉ n) (complementβ (b n)) III : ((n : β) β A (ΞΉ n)) β (n : β) β p (ΞΉ n) οΌ β III a n = complementβ-back (characteristic-map-propertyβ-back A Ξ΄ (ΞΉ n) (a n)) IV : is-decidable ((n : β) β A (ΞΉ n)) IV = map-decidable II III I \end{code}