Identity systems

Content created by Egbert Rijke, Fredrik Bakke, Jonathan Prieto-Cubides and Raymond Baker.

Created on 2022-01-26.
Last modified on 2024-04-25.

module foundation.identity-systems where
open import foundation.action-on-identifications-functions
open import foundation.dependent-pair-types
open import foundation.function-extensionality
open import foundation.fundamental-theorem-of-identity-types
open import foundation.universe-levels

open import foundation-core.contractible-types
open import foundation-core.families-of-equivalences
open import foundation-core.function-types
open import foundation-core.functoriality-dependent-pair-types
open import foundation-core.identity-types
open import foundation-core.propositions
open import foundation-core.retractions
open import foundation-core.sections
open import foundation-core.torsorial-type-families
open import foundation-core.transport-along-identifications


A (unary) identity system on a type A equipped with a point a : A consists of a type family B over A equipped with a point b : B a that satisfies an induction principle analogous to the induction principle of the identity type at a. The dependent universal property of identity types also follows for identity systems.


Evaluating at the base point

ev-refl-identity-system :
  {l1 l2 l3 : Level} {A : UU l1} {B : A  UU l2} {a : A} (b : B a)
  {P : (x : A) (y : B x)  UU l3} 
  ((x : A) (y : B x)  P x y)  P a b
ev-refl-identity-system {a = a} b f = f a b

The predicate of being an identity system with respect to a universe level

module _
  {l1 l2 : Level} (l : Level) {A : UU l1} (B : A  UU l2) (a : A) (b : B a)

  is-identity-system-Level : UU (l1  l2  lsuc l)
  is-identity-system-Level =
    (P : (x : A) (y : B x)  UU l)  section (ev-refl-identity-system b {P})

The predicate of being an identity system

module _
  {l1 l2 : Level} {A : UU l1} (B : A  UU l2) (a : A) (b : B a)

  is-identity-system : UUω
  is-identity-system = {l : Level}  is-identity-system-Level l B a b


A type family over A is an identity system if and only if its total space is contractible

In foundation.torsorial-type-families we will start calling type families with contractible total space torsorial.

module _
  {l1 l2 : Level} {A : UU l1} {B : A  UU l2} (a : A) (b : B a)

  map-section-is-identity-system-is-torsorial :
    is-torsorial B 
    {l3 : Level} (P : (x : A) (y : B x)  UU l3) 
    P a b  (x : A) (y : B x)  P x y
  map-section-is-identity-system-is-torsorial H P p x y =
    tr (fam-Σ P) (eq-is-contr H) p

  is-section-map-section-is-identity-system-is-torsorial :
    (H : is-torsorial B) 
    {l3 : Level} (P : (x : A) (y : B x)  UU l3) 
      ( ev-refl-identity-system b)
      ( map-section-is-identity-system-is-torsorial H P)
  is-section-map-section-is-identity-system-is-torsorial H P p =
      ( λ t  tr (fam-Σ P) t p)
      ( eq-is-contr'
        ( is-prop-is-contr H (a , b) (a , b))
        ( eq-is-contr H)
        ( refl))

    is-identity-system-is-torsorial :
      is-torsorial B  is-identity-system B a b
    is-identity-system-is-torsorial H P =
      ( map-section-is-identity-system-is-torsorial H P ,
        is-section-map-section-is-identity-system-is-torsorial H P)

    is-torsorial-is-identity-system :
      is-identity-system B a b  is-torsorial B
    pr1 (is-torsorial-is-identity-system H) = (a , b)
    pr2 (is-torsorial-is-identity-system H) (x , y) =
      pr1 (H  x' y'  (a , b)  (x' , y'))) refl x y

    fundamental-theorem-id-is-identity-system :
      is-identity-system B a b 
      (f : (x : A)  a  x  B x)  is-fiberwise-equiv f
    fundamental-theorem-id-is-identity-system H =
      fundamental-theorem-id (is-torsorial-is-identity-system H)

Recent changes