Martin Escardo, 2019
Powersets under resizing. More things are available at MGS.Size.
\begin{code}
{-# OPTIONS --safe --without-K #-}
open import UF.FunExt
open import UF.Size
module UF.Powerset-Resizing
(fe : Fun-Ext)
(ρ : Propositional-Resizing)
where
open import MLTT.Spartan
open import UF.Powerset
open import UF.PropTrunc
open import UF.Subsingletons
open import UF.Subsingletons-FunExt
open import UF.SubtypeClassifier
\end{code}
The powerset is closed under unions and intersections under the
assumption of propositional resizing and function extensionality:
\begin{code}
private
pt : propositional-truncations-exist
pt = resizing-truncation (λ _ _ → fe) ρ
open PropositionalTruncation pt
closure-under-unions : {X : 𝓤 ̇ } (𝓐 : (X → Ω 𝓥) → Ω 𝓦)
→ Σ B ꞉ (X → Ω 𝓥)
, ((x : X) → (x ∈ B)
↔ (∃ A ꞉ (X → Ω 𝓥) , (A ∈ 𝓐) × (x ∈ A)))
closure-under-unions {𝓤} {𝓥} {𝓦} {X} 𝓐 = B , (λ x → lr x , rl x)
where
β : X → 𝓤 ⊔ (𝓥 ⁺) ⊔ 𝓦 ̇
β x = ∃ A ꞉ (X → Ω 𝓥) , (A ∈ 𝓐) × (x ∈ A)
i : (x : X) → is-prop (β x)
i x = ∃-is-prop
B : X → Ω 𝓥
B x = resize ρ (β x) (i x) ,
resize-is-prop ρ (β x) (i x)
lr : (x : X) → x ∈ B → ∃ A ꞉ (X → Ω 𝓥) , (A ∈ 𝓐) × (x ∈ A)
lr x = from-resize ρ (β x) (i x)
rl : (x : X) → (∃ A ꞉ (X → Ω 𝓥) , (A ∈ 𝓐) × (x ∈ A)) → x ∈ B
rl x = to-resize ρ (β x) (i x)
⋃ : {X : 𝓤 ̇ } → ((X → Ω 𝓥) → Ω 𝓦) → (X → Ω 𝓥)
⋃ 𝓐 = pr₁ (closure-under-unions 𝓐)
from-⋃ : {X : 𝓤 ̇ } (𝓐 : ((X → Ω 𝓥) → Ω 𝓦)) (x : X)
→ x ∈ ⋃ 𝓐 → ∃ A ꞉ (X → Ω 𝓥) , (A ∈ 𝓐) × (x ∈ A)
from-⋃ 𝓐 x = lr-implication (pr₂ (closure-under-unions 𝓐) x)
to-⋃ : {X : 𝓤 ̇ } (𝓐 : ((X → Ω 𝓥) → Ω 𝓦)) (x : X)
→ (∃ A ꞉ (X → Ω 𝓥) , (A ∈ 𝓐) × (x ∈ A)) → x ∈ ⋃ 𝓐
to-⋃ 𝓐 x = rl-implication (pr₂ (closure-under-unions 𝓐) x)
closure-under-intersections : {X : 𝓤 ̇ } (𝓐 : (X → Ω 𝓥) → Ω 𝓦)
→ Σ B ꞉ (X → Ω 𝓥)
, ((x : X) → x ∈ B
↔ ((A : X → Ω 𝓥) → A ∈ 𝓐 → x ∈ A))
closure-under-intersections {𝓤} {𝓥} {𝓦} {X} 𝓐 = B , (λ x → lr x , rl x)
where
β : X → 𝓤 ⊔ (𝓥 ⁺) ⊔ 𝓦 ̇
β x = (A : X → Ω 𝓥) → A ∈ 𝓐 → x ∈ A
i : (x : X) → is-prop (β x)
i x = Π₂-is-prop fe (λ A _ → ∈-is-prop A x)
B : X → Ω 𝓥
B x = resize ρ (β x) (i x) ,
resize-is-prop ρ (β x) (i x)
lr : (x : X) → x ∈ B → (A : X → Ω 𝓥) → A ∈ 𝓐 → x ∈ A
lr x = from-resize ρ (β x) (i x)
rl : (x : X) → ((A : X → Ω 𝓥) → A ∈ 𝓐 → x ∈ A) → x ∈ B
rl x = to-resize ρ (β x) (i x)
⋂ : {X : 𝓤 ̇ } → ((X → Ω 𝓥) → Ω 𝓦) → (X → Ω 𝓥)
⋂ 𝓐 = pr₁ (closure-under-intersections 𝓐)
from-⋂ : {X : 𝓤 ̇ } (𝓐 : ((X → Ω 𝓥) → Ω 𝓦)) (x : X)
→ x ∈ ⋂ 𝓐 → (A : X → Ω 𝓥) → A ∈ 𝓐 → x ∈ A
from-⋂ 𝓐 x = lr-implication (pr₂ (closure-under-intersections 𝓐) x)
to-⋂ : {X : 𝓤 ̇ } (𝓐 : ((X → Ω 𝓥) → Ω 𝓦)) (x : X)
→ ((A : X → Ω 𝓥) → A ∈ 𝓐 → x ∈ A) → x ∈ ⋂ 𝓐
to-⋂ 𝓐 x = rl-implication (pr₂ (closure-under-intersections 𝓐) x)
\end{code}