Martin Escardo, 17th August 2024 and 18th September 2024.
A develop and generalize a result from 2013/03/13 first advertised in
the IAS Univalent Foundations mailing list in response to a question
by Andrej Bauer [1]:
If A : ℕ → 𝓤 is a family of decidable types,
then
∥ Σ n ꞉ ℕ , A n ∥ → Σ n : ℕ , A n.
This may seem surprising at first sight. The original proof in [1]
uses function extensionality and the assumption that A is
proposition-valued to show that the type
A m × ((k : ℕ) → A k → m ≤ k
is a proposition for any m. But, using the results of [2] (or its
extended version [3]), we can remove both assumptions.
Moreover, in [4] we show that, more generally, if A : ℕ → 𝓤 is a
family of propositions such that A (n + 1) implies that A n is
decidable, then
∥ Σ n ꞉ ℕ , A n ∥ → Σ n : ℕ , A n,
again with a proof that assumes function extensionality. Here, using
[2], we are able to remove the assumption of function extensionlity,
but not that assumption that A is proposition-valued.
Moreover, we can construct the propositional truncation of the type
Σ n ꞉ ℕ , A n in pure Spartan MLTT without assuming that propositional
truncations exist in general, by considering the type of fixed points
of a minimization endomap of Σ n ꞉ ℕ , A n. See the module UF.ExitPropTrunc.
1. Martin Escardo. 2013/03/13 message to the IAS Univalent Foundations
mailing list.
https://groups.google.com/g/univalent-foundations/c/SA0dzenV1G4/m/d5iIGdKKNxMJ
2. Nicolai Kraus, Martín Escardó, Thierry Coquand & Thorsten Altenkirch.
Generalizations of Hedberg’s Theorem.
TLCA 2013
https://doi.org/10.1007/978-3-642-38946-7_14
3. Nicolai Kraus, Martín Escardó, Thierry Coquand & Thorsten Altenkirch.
Notions of Anonymous Existence in Martin-Löf Type Theory.
Logical Methods in Computer Science, March 24, 2017, Volume 13, Issue 1.
https://doi.org/10.23638/LMCS-13(1:15)2017
4. Martín H. Escardó and Chuangjie Xu. The inconsistency of a
Brouwerian continuity principle with the Curry-Howard
interpretation. 13th International Conference on Typed Lambda
Calculi and Applications (TLCA 2015).
https://drops.dagstuhl.de/opus/portals/lipics/index.php?semnr=15006
https://doi.org/10.4230/LIPIcs.TLCA.2015.153
Although it was presented with a different proof that assumes function
extensionlity.
\begin{code}
{-# OPTIONS --safe --without-K #-}
module Naturals.ExitTruncation where
open import MLTT.Spartan
open import Naturals.Order
open import Notation.Order
open import NotionsOfDecidability.Complemented
open import NotionsOfDecidability.Decidable
open import UF.DiscreteAndSeparated
open import UF.Hedberg
open import UF.KrausLemma
open import UF.ExitPropTrunc
open import UF.PropTrunc
open import UF.Subsingletons
module _ (A : ℕ → 𝓤 ̇ )
(δ : (n : ℕ) → A n → (k : ℕ) → k < n → is-decidable (A k))
where
minimal-witness⁺ : (Σ n ꞉ ℕ , A n)
→ Σ k ꞉ ℕ , (A k × ((i : ℕ) → A i → k ≤ i))
minimal-witness⁺ = uncurry (μ A δ)
where
μ : (A : ℕ → 𝓤 ̇ )
→ ((n : ℕ) → A n → (k : ℕ) → k < n → is-decidable (A k))
→ (n : ℕ)
→ A n
→ Σ k ꞉ ℕ , (A k × ((i : ℕ) → A i → k ≤ i))
μ A δ 0 a₀ = 0 , a₀ , (λ i aᵢ → zero-least i)
μ A δ (succ n) aₙ₊₁ = II
where
IH : Σ j ꞉ ℕ , ((A (succ j) × ((i : ℕ) → A (succ i) → j ≤ i)))
IH = μ (A ∘ succ) (λ n aₙ₊₁ j → δ (succ n) aₙ₊₁ (succ j)) n aₙ₊₁
I : type-of IH
→ Σ k ꞉ ℕ , A k × ((i : ℕ) → A i → k ≤ i)
I (j , aⱼ₊₁ , b) =
Cases (δ (succ n) aₙ₊₁ 0 (zero-least j))
(λ (a₀ : A 0) → (0 , a₀ , (λ i aᵢ → zero-least i)))
(λ (ν₀ : ¬ A 0) → (succ j , aⱼ₊₁ , I₀ ν₀))
where
I₀ : ¬ A 0 → (i : ℕ) (aᵢ : A i) → j < i
I₀ ν₀ 0 a₀ = 𝟘-elim (ν₀ a₀)
I₀ ν₀ (succ i) aᵢ₊₁ = b i aᵢ₊₁
II : Σ k ꞉ ℕ , (A k × ((i : ℕ) → A i → k ≤ i))
II = I IH
\end{code}
We name the projections for convenience.
\begin{code}
minimal-number : Σ A → ℕ
minimal-number σ = pr₁ (minimal-witness⁺ σ)
minimal-number-requirement : (σ : Σ A) → A (minimal-number σ)
minimal-number-requirement σ = pr₁ (pr₂ (minimal-witness⁺ σ))
minimality : (σ : Σ A) → (i : ℕ) → A i → minimal-number σ ≤ i
minimality σ = pr₂ (pr₂ (minimal-witness⁺ σ))
minimal-pair : Σ A → Σ A
minimal-pair σ = minimal-number σ , minimal-number-requirement σ
minimal-pair-wconstant : is-prop-valued-family A → wconstant minimal-pair
minimal-pair-wconstant A-prop-valued σ σ' =
to-subtype-= A-prop-valued
(need
minimal-number σ = minimal-number σ'
which-is-given-by
≤-anti _ _
(minimality σ (minimal-number σ') (minimal-number-requirement σ'))
(minimality σ' (minimal-number σ) (minimal-number-requirement σ)))
\end{code}
A particular case.
\begin{code}
minimal-witness : (A : ℕ → 𝓤 ̇ )
→ ((n : ℕ) → is-decidable (A n))
→ (Σ n ꞉ ℕ , A n)
→ Σ m ꞉ ℕ , (A m × ((k : ℕ) → A k → m ≤ k))
minimal-witness A δ = minimal-witness⁺ A (λ n aₙ k l → δ k)
\end{code}
We apply the above to exit truncations.
\begin{code}
module exit-truncations (pt : propositional-truncations-exist) where
open PropositionalTruncation pt
open split-support-and-collapsibility pt
module _ (A : ℕ → 𝓤 ̇ )
(A-is-prop-valued : is-prop-valued-family A)
(δ : (n : ℕ) → A n → (k : ℕ) → k < n → is-decidable (A k))
where
exit-truncation⁺ : ∥ Σ A ∥ → Σ A
exit-truncation⁺ = collapsible-gives-split-support
(minimal-pair A δ ,
minimal-pair-wconstant A δ A-is-prop-valued)
\end{code}
Not only can be exit the truncation, but also we can say that the
result is minimal.
\begin{code}
exit-truncation⁺-minimality
: (s : ∥ Σ A ∥) (i : ℕ) → A i → pr₁ (exit-truncation⁺ s) ≤ i
exit-truncation⁺-minimality s = IV
where
I : minimal-pair A δ (exit-truncation⁺ s) = exit-truncation⁺ s
I = exit-prop-trunc-is-fixed
(minimal-pair A δ)
(minimal-pair-wconstant A δ A-is-prop-valued)
s
II : minimal-number A δ (exit-truncation⁺ s) = pr₁ (exit-truncation⁺ s)
II = ap pr₁ I
III : (i : ℕ) → A i → minimal-number A δ (exit-truncation⁺ s) ≤ i
III = minimality A δ (exit-truncation⁺ s)
IV : (i : ℕ) → A i → pr₁ (exit-truncation⁺ s) ≤ i
IV = transport (λ - → (i : ℕ) → A i → - ≤ i) II III
\end{code}
In the following particular case of interest, the prop-valuedness
assumption can be removed.
\begin{code}
module _ (A : ℕ → 𝓤 ̇ )
(d : (n : ℕ) → is-decidable (A n))
where
private
B : ℕ → 𝓤₀ ̇
B n = ∥ A n ∥⟨ d n ⟩
B-is-prop-valued : is-prop-valued-family B
B-is-prop-valued n = ∥∥⟨ d n ⟩-is-prop
δ : (n : ℕ) → B n → (k : ℕ) → k < n → is-decidable (B k)
δ n bₙ k l = ∥∥⟨ d k ⟩-is-decidable
f : Σ A → Σ B
f (n , aₙ) = n , ∣ aₙ ∣⟨ d n ⟩
g : Σ B → Σ A
g (n , bₙ) = (n , ∣∣⟨ d n ⟩-exit bₙ)
exit-truncation : ∥ Σ A ∥ → Σ A
exit-truncation t = g (exit-truncation⁺ B B-is-prop-valued δ (∥∥-functor f t))
exit-truncation-minimality
: (t : ∥ Σ A ∥) (i : ℕ) → A i → pr₁ (exit-truncation t) ≤ i
exit-truncation-minimality t i a =
exit-truncation⁺-minimality
B
B-is-prop-valued
δ
(∥∥-functor f t)
i
∣ a ∣⟨ d i ⟩
\end{code}
TODO. Can we remove the prop-valuedness assumption in general?
Added 19th September 2024.
The following is useful in practice to fulfill a hypothesis of
exit-truncation⁺.
\begin{code}
regression-lemma₀
: (A : ℕ → 𝓤 ̇ )
→ ((n : ℕ) → A (succ n) → is-decidable (A n))
→ ((n : ℕ) → A n → A (succ n))
→ (n : ℕ) → A (succ n) → is-decidable (A 0)
regression-lemma₀ A f g 0 = f 0
regression-lemma₀ A f g (succ n) = I
where
IH : A (succ (succ n)) → is-decidable (A 1)
IH = regression-lemma₀ (A ∘ succ) (f ∘ succ) (g ∘ succ) n
I : A (succ (succ n)) → is-decidable (A 0)
I a = Cases (IH a)
(λ (a₁ : A 1) → f 0 a₁)
(λ (ν : ¬ A 1) → inr (contrapositive (g 0) ν))
regression-lemma
: (A : ℕ → 𝓤 ̇ )
→ ((n : ℕ) → A (succ n) → is-decidable (A n))
→ ((n : ℕ) → A n → A (succ n))
→ (n : ℕ) → A n → (k : ℕ) → k < n → is-decidable (A k)
regression-lemma A f g 0 a k l = 𝟘-elim l
regression-lemma A f g (succ n) a 0 l = regression-lemma₀ A f g n a
regression-lemma A f g (succ n) a (succ k) l = regression-lemma
(A ∘ succ)
(f ∘ succ)
(g ∘ succ)
n a k l
\end{code}
Notice that these functions don't actually use the full force of the
assumption
(n : ℕ) → A n → A (succ n)
but only its contrapositive. So there is a more general result that
assumes
(n : ℕ) → ¬ A (succ n) → ¬ A n
instead, although I don't think this will ever be needed. If it is, we
can come back here and do a little bit of refactoring.