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}