Null types

module orthogonal-factorization-systems.null-types where
Imports
open import foundation.constant-maps
open import foundation.equivalences
open import foundation.functions
open import foundation.propositions
open import foundation.type-arithmetic-unit-type
open import foundation.unit-type
open import foundation.universe-levels

open import orthogonal-factorization-systems.local-types

Idea

A type A is said to be null at Y, or Y-null, if the constant map

  const : A → (Y → A)

is an equivalence.

The idea is that A observes the type Y to be contractible.

Definition

module _
  {l1 l2 : Level} (Y : UU l1) (A : UU l2)
  where

  is-null : UU (l1  l2)
  is-null = is-equiv (const Y A)

Properties

A type is Y-null if and only if it is local at the terminal projection Y → unit

module _
  {l1 l2 : Level} (Y : UU l1) (A : UU l2)
  where

  is-local-is-null : is-null Y A  is-local-type  y  star) A
  is-local-is-null =
    is-equiv-comp
      ( const Y A)
      ( map-left-unit-law-function-type A)
      ( is-equiv-map-left-unit-law-function-type A)

  is-null-is-local : is-local-type  y  star) A  is-null Y A
  is-null-is-local =
    is-equiv-comp
      ( precomp  y  star) A)
      ( map-inv-left-unit-law-function-type A)
      ( is-equiv-map-inv-left-unit-law-function-type A)

  equiv-is-local-is-null : is-null Y A  is-local-type  y  star) A
  equiv-is-local-is-null =
    equiv-prop
      ( is-property-is-equiv (const Y A))
      ( is-property-is-equiv (precomp  y  star) A))
      ( is-local-is-null)
      ( is-null-is-local)

  equiv-is-null-is-local : is-local-type  y  star) A  is-null Y A
  equiv-is-null-is-local = inv-equiv equiv-is-local-is-null