Alice Laroche, 14th June 2024
This file answers the question asked in Iterative.Multisets-Addendum
That is : Is there a function Πᴹ of the above type that satisfies the
following equation?
Σ Πᴹ ꞉ ((X → 𝕄) → 𝕄)
, ((A : X → 𝕄) → Πᴹ A = ssup
(Π x ꞉ X , 𝕄-root (A x))
(λ g → Πᴹ (λ x → 𝕄-forest (A x) (g x))))
We prove that it isn't the case in general, as the existence of function for
the empty type would allow infinite recursion.
We then prove that the function exists up to equivalence for pointed types,
and, admitting function extensionality, for inhabited types.
\begin{code}
{-# OPTIONS --safe --without-K --exact-split #-}
open import MLTT.Spartan
open import UF.Base
open import UF.Equiv
open import UF.FunExt
open import UF.PropTrunc
open import UF.Univalence
open import W.Type
module gist.multiset-addendum-question
(ua : Univalence)
(𝓤 : Universe)
where
open import Iterative.Multisets 𝓤
open import Iterative.Multisets-Addendum ua 𝓤
swap-Idtofun : {X Y : 𝓤 ̇ } {Z : 𝓥 ̇ } → {f : X → Z} {g : Y → Z}
→ (p : Y = X)
→ f ∘ Idtofun p = g
→ f = g ∘ Idtofun⁻¹ p
swap-Idtofun refl refl = refl
Question𝟘 :
¬ (Σ Πᴹ ꞉ ((𝟘 {𝓤} → 𝕄) → 𝕄)
, ((A : 𝟘 → 𝕄) → Πᴹ A = ssup
(Π x ꞉ 𝟘 , 𝕄-root (A x))
(λ g → Πᴹ (λ x → 𝕄-forest (A x) (g x)))))
Question𝟘 (Πᴹ , eq) = recurs A (Πᴹ A) (eq A)
where
A : 𝟘 → 𝕄
A x = 𝟘-elim x
recurs : (A : 𝟘 → 𝕄) → (x : 𝕄)
→ ¬(x = ssup
(Π x ꞉ 𝟘 , 𝕄-root (A x))
(λ g → Πᴹ (λ x → 𝕄-forest (A x) (g x))))
recurs A (ssup X φ) eq' = recurs A' (φ I) II
where
I : X
I = transport⁻¹ 𝕄-root eq' (λ x → 𝟘-elim x)
A' : 𝟘 → 𝕄
A' x = 𝕄-forest (A x) (Idtofun (pr₁ (from-𝕄-= eq')) I x)
II : φ I = ssup
(Π x ꞉ 𝟘 , 𝕄-root (A' x))
(λ g → Πᴹ (λ x → 𝕄-forest (A' x) (g x)))
II = happly (pr₂ (from-𝕄-= eq')) I
∙ (eq A')
Question-is-false : ¬ Question
Question-is-false Q = Question𝟘 (Q {𝟘})
module _ {X : 𝓤 ̇ } where
data _<_ : (X → 𝕄) → (X → 𝕄) → (𝓤 ⁺) ̇ where
smaller : {f g : X → 𝕄} → ((x : X) → f x ⁅ g x) → f < g
open import Ordinals.Notions _<_
<-is-well-founded : X → is-well-founded
<-is-well-founded x f = acc (rec' x f (f x) refl)
where
rec' : (x : X) (f : X → 𝕄) (m : 𝕄) → m = f x
→ (g : X → 𝕄) → g < f
→ is-accessible g
rec' x f (ssup Y φ) eq g (smaller p) =
acc (rec' x g (φ II) (III ∙ pr₂ (p x)))
where
I : Σ p ꞉ Y = 𝕄-root (f x) , φ = (𝕄-forest (f x)) ∘ Idtofun p
I = from-𝕄-= (eq ∙ 𝕄-η (f x) ⁻¹)
II : Y
II = Idtofun⁻¹ (pr₁ I) (pr₁ (p x))
III : φ II = 𝕄-forest (f x) (pr₁ (p x))
III = happly'
(φ ∘ Idtofun⁻¹ (pr₁ I))
(𝕄-forest (f x))
(swap-Idtofun (pr₁ I) (pr₂ I ⁻¹) ⁻¹)
(pr₁ (p x))
module without-funext where
QuestionX :
X → Σ Πᴹ ꞉ ((X → 𝕄) → 𝕄)
, ((A : X → 𝕄) → Πᴹ A ≃ᴹ ssup
(Π x ꞉ X , 𝕄-root (A x))
(λ g → Πᴹ (λ x → 𝕄-forest (A x) (g x))))
QuestionX x = Πᴹ'' , eqv
where
I : (A : X → 𝕄) → ((g : X → 𝕄) → g < A → 𝕄) → 𝕄
I A rec = ssup
(Π x ꞉ X , 𝕄-root (A x))
(λ g → rec (λ x → 𝕄-forest (A x) (g x))
(smaller λ y → (g y) , refl))
Πᴹ' : (A : X → 𝕄) → is-accessible A → 𝕄
Πᴹ' A = transfinite-induction'
(λ - → 𝕄)
I
A
Πᴹ'' : (A : X → 𝕄) → 𝕄
Πᴹ'' A = Πᴹ' A (<-is-well-founded x A)
II : (A : X → 𝕄) (acc₁ : is-accessible A) → Πᴹ' A acc₁ = _
II A acc₁ = transfinite-induction'-behaviour (λ - → 𝕄) I A acc₁
III : (A : X → 𝕄)
→ ( (g : X → 𝕄)
→ g < A
→ (acc₁ acc₂ : is-accessible g)
→ Πᴹ' g acc₁ ≃ᴹ Πᴹ' g acc₂)
→ (acc₁ acc₂ : is-accessible A) → Πᴹ' A acc₁ ≃ᴹ Πᴹ' A acc₂
III A rec acc₁ acc₂ = transport₂ _≃ᴹ_ (II A acc₁ ⁻¹) (II A acc₂ ⁻¹)
((≃-refl _)
, λ g → rec (λ x → 𝕄-forest (A x) (g x))
(smaller λ y → (g y) , refl)
(prev acc₁ _ _)
(prev acc₂ _ _))
IV : (A : X → 𝕄) → (acc₁ acc₂ : is-accessible A)
→ Πᴹ' A acc₁ ≃ᴹ Πᴹ' A acc₂
IV A = transfinite-induction'
(λ A → (acc₁ acc₂ : is-accessible A) → Πᴹ' A acc₁ ≃ᴹ Πᴹ' A acc₂)
III
A
(<-is-well-founded x A)
eqv : (A : X → 𝕄)
→ Πᴹ'' A ≃ᴹ ssup
(Π x ꞉ X , 𝕄-root (A x))
(λ g → Πᴹ'' (λ x → 𝕄-forest (A x) (g x)))
eqv A =
transport⁻¹
(_≃ᴹ ssup
(Π x ꞉ X , 𝕄-root (A x))
(λ g → Πᴹ'' (λ x → 𝕄-forest (A x) (g x))))
(transfinite-induction'-behaviour (λ - → 𝕄) I A (<-is-well-founded x A))
((≃-refl _) , λ g → IV
(λ x → 𝕄-forest (A x) (g x))
(prev (<-is-well-founded x A) _ _)
(<-is-well-founded x _))
module with-funext (pt : propositional-truncations-exist) (fe : FunExt) where
open PropositionalTruncation pt
<-is-well-founded' : ∥ X ∥ → is-well-founded
<-is-well-founded' x f = ∥∥-rec
(accessibility-is-prop fe f)
(λ x → <-is-well-founded x f)
x
QuestionX :
∥ X ∥ → Σ Πᴹ ꞉ ((X → 𝕄) → 𝕄)
, ((A : X → 𝕄) → Πᴹ A = ssup
(Π x ꞉ X , 𝕄-root (A x))
(λ g → Πᴹ (λ x → 𝕄-forest (A x) (g x))))
QuestionX x = Πᴹ' , eq
where
I : (A : X → 𝕄) → ((g : X → 𝕄) → g < A → 𝕄) → 𝕄
I A rec = ssup
(Π x ꞉ X , 𝕄-root (A x))
(λ g → rec (λ x → 𝕄-forest (A x) (g x))
(smaller λ y → (g y) , refl))
Πᴹ' : (X → 𝕄) → 𝕄
Πᴹ' A = transfinite-recursion
(<-is-well-founded' x)
I
A
eq : (A : X → 𝕄)
→ Πᴹ' A = ssup
(Π x ꞉ X , 𝕄-root (A x))
(λ g → Πᴹ' (λ x → 𝕄-forest (A x) (g x)))
eq A = transfinite-recursion-behaviour fe (<-is-well-founded' x) I A
\end{code}