Propositional maps

module foundation-core.propositional-maps where
Imports
open import foundation-core.contractible-types
open import foundation-core.dependent-pair-types
open import foundation-core.embeddings
open import foundation-core.fibers-of-maps
open import foundation-core.fundamental-theorem-of-identity-types
open import foundation-core.identity-types
open import foundation-core.propositions
open import foundation-core.universe-levels

Idea

A map is said to be propositional if its fibers are propositions. This condition is equivalent to being an embedding.

Definition

module _
  {l1 l2 : Level} {A : UU l1} {B : UU l2}
  where

  is-prop-map : (A  B)  UU (l1  l2)
  is-prop-map f = (b : B)  is-prop (fib f b)

Properties

The fibers of a map are propositions if and only if it is an embedding

module _
  {l1 l2 : Level} {A : UU l1} {B : UU l2} {f : A  B}
  where

  abstract
    is-emb-is-prop-map : is-prop-map f  is-emb f
    is-emb-is-prop-map is-prop-map-f x =
      fundamental-theorem-id
        ( is-contr-equiv'
          ( fib f (f x))
          ( equiv-fib f (f x))
          ( is-proof-irrelevant-is-prop (is-prop-map-f (f x)) (x , refl)))
        ( λ _  ap f)

  abstract
    is-prop-map-is-emb : is-emb f  is-prop-map f
    is-prop-map-is-emb is-emb-f y =
      is-prop-is-proof-irrelevant α
      where
      α : (t : fib f y)  is-contr (fib f y)
      α (x , refl) =
        is-contr-equiv
          ( fib' f (f x))
          ( equiv-fib f (f x))
          ( fundamental-theorem-id'  _  ap f) (is-emb-f x))

module _
  {l1 l2 : Level} {A : UU l1} {B : UU l2}
  where

  is-prop-map-emb : (f : A  B)  is-prop-map (map-emb f)
  is-prop-map-emb f = is-prop-map-is-emb (is-emb-map-emb f)

  is-prop-map-emb' : (f : A  B)  (b : B)  is-prop (fib' (map-emb f) b)
  is-prop-map-emb' f y =
    is-prop-equiv' (equiv-fib (map-emb f) y) (is-prop-map-emb f y)

  fib-emb-Prop : A  B  B  Prop (l1  l2)
  pr1 (fib-emb-Prop f y) = fib (map-emb f) y
  pr2 (fib-emb-Prop f y) = is-prop-map-emb f y

  fib-emb-Prop' : A  B  B  Prop (l1  l2)
  pr1 (fib-emb-Prop' f y) = fib' (map-emb f) y
  pr2 (fib-emb-Prop' f y) = is-prop-map-emb' f y