Epimorphisms with respect to truncated types

module foundation.epimorphisms-with-respect-to-truncated-types where
Imports
open import foundation.commuting-squares-of-maps
open import foundation.embeddings
open import foundation.functoriality-truncation
open import foundation.truncation-equivalences
open import foundation.truncations

open import foundation-core.equivalences
open import foundation-core.functions
open import foundation-core.homotopies
open import foundation-core.propositions
open import foundation-core.truncated-types
open import foundation-core.truncation-levels
open import foundation-core.universe-levels

Idea

A map f : A → B is said to be a k-epimorphism if the precomposition function

  - ∘ f : (B → X) → (A → X)

is an embedding for every k-truncated type X.

Definitions

k-epimorphisms

is-epimorphism-Truncated-Type :
  {l1 l2 : Level} (l : Level) (k : 𝕋) {A : UU l1} {B : UU l2} 
  (A  B)  UU (l1  l2  lsuc l)
is-epimorphism-Truncated-Type l k f =
  (X : Truncated-Type l k)  is-emb (precomp f (type-Truncated-Type X))

Properties

Every k+1-epimorphism is a k-epimorphism

is-epimorphism-is-epimorphism-succ-Truncated-Type :
  {l1 l2 : Level} (l : Level) (k : 𝕋) {A : UU l1} {B : UU l2} (f : A  B) 
  is-epimorphism-Truncated-Type l (succ-𝕋 k) f 
  is-epimorphism-Truncated-Type l k f
is-epimorphism-is-epimorphism-succ-Truncated-Type l k f H X =
  H (truncated-type-succ-Truncated-Type k X)

Every map is a -1-epimorphism

is-neg-one-epimorphism :
  {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} (f : A  B) 
  is-epimorphism-Truncated-Type l3 neg-one-𝕋 f
is-neg-one-epimorphism f P =
  is-emb-is-prop
    ( is-prop-function-type (is-prop-type-Prop P))
    ( is-prop-function-type (is-prop-type-Prop P))

Every k-equivalence is a k-epimorphism

is-epimorphism-is-truncation-equivalence-Truncated-Type :
  {l1 l2 : Level} (l : Level) (k : 𝕋) {A : UU l1} {B : UU l2} (f : A  B) 
  is-truncation-equivalence k f 
  is-epimorphism-Truncated-Type l k f
is-epimorphism-is-truncation-equivalence-Truncated-Type l k f H X =
  is-emb-is-equiv (is-equiv-precomp-is-truncation-equivalence k f H X)

A map is a k-epimorphism if and only if its k-truncation is a k-epimorphism

module _
  {l1 l2 l3 : Level} (k : 𝕋) {A : UU l1} {B : UU l2} (f : A  B)
  where

  is-epimorphism-is-epimorphism-map-trunc-Truncated-Type :
    is-epimorphism-Truncated-Type l3 k (map-trunc k f) 
    is-epimorphism-Truncated-Type l3 k f
  is-epimorphism-is-epimorphism-map-trunc-Truncated-Type H X =
    is-emb-bottom-is-emb-top-is-equiv-coherence-square-maps
      ( precomp (map-trunc k f) (type-Truncated-Type X))
      ( precomp unit-trunc (type-Truncated-Type X))
      ( precomp unit-trunc (type-Truncated-Type X))
      ( precomp f (type-Truncated-Type X))
      ( precomp-coherence-square-maps
        ( unit-trunc)
        ( f)
        ( map-trunc k f)
        ( unit-trunc)
        ( inv-htpy (coherence-square-map-trunc k f))
        ( type-Truncated-Type X))
      ( is-truncation-trunc X)
      ( is-truncation-trunc X)
      ( H X)