Crisp identity types
Content created by Fredrik Bakke.
Created on 2023-11-24.
Last modified on 2024-09-06.
{-# OPTIONS --cohesion --flat-split #-} module modal-type-theory.crisp-identity-types where
Imports
open import foundation.dependent-pair-types open import foundation.equivalences open import foundation.identity-types open import foundation.injective-maps open import foundation.retractions open import foundation.retracts-of-types open import foundation.sections open import foundation.universe-levels open import modal-type-theory.flat-modality
Idea
We record here some basic facts about identity types in crisp contexts.
Definitions
Weak crisp identification induction
weak-crisp-based-ind-Id : {@♭ l1 : Level} {l2 : Level} {@♭ A : UU l1} {@♭ a : A} → (C : (@♭ y : A) → (a = y) → UU l2) → C a refl → (@♭ y : A) (@♭ p : a = y) → C y p weak-crisp-based-ind-Id C b _ refl = b
Based crisp identification induction
Below we postulate the
crisp identity induction principle¶ as
introduced in [Shu18]. Note that this principle should follow from the
flat modality’s relation to the
sharp modality, and the stronger
pointwise-sharp
construction as considered in [Mey].
module _ {@♭ l1 l2 : Level} {@♭ A : UU l1} {@♭ x : A} (@♭ C : (@♭ y : A) → @♭ (x = y) → UU l2) (@♭ d : (C x refl)) where postulate crisp-based-ind-Id : {@♭ y : A} (@♭ p : x = y) → C y p compute-crisp-based-ind-Id : crisp-based-ind-Id {x} refl = d
module _ {@♭ l1 l2 : Level} {@♭ A : UU l1} (@♭ C : (@♭ x y : A) → @♭ (x = y) → UU l2) (@♭ d : ((@♭ x : A) → C x x refl)) where crisp-ind-Id : {@♭ x y : A} (@♭ p : x = y) → C x y p crisp-ind-Id {x} {y} p = crisp-based-ind-Id (λ y p → C x y p) (d x) {y} p compute-crisp-ind-Id : (@♭ x : A) → crisp-ind-Id {x} refl = d x compute-crisp-ind-Id x = compute-crisp-based-ind-Id (λ y p → C x y p) (d x)
Properties
Characterizing equality in the image of the flat modality
module _ {@♭ l : Level} {@♭ A : UU l} where Eq-flat : ♭ A → ♭ A → UU l Eq-flat (intro-flat x) (intro-flat y) = ♭ (x = y) refl-Eq-flat : (u : ♭ A) → Eq-flat u u refl-Eq-flat (intro-flat x) = intro-flat refl Eq-eq-flat : (u v : ♭ A) → u = v → Eq-flat u v Eq-eq-flat u .u refl = refl-Eq-flat u eq-Eq-flat : (u v : ♭ A) → Eq-flat u v → u = v eq-Eq-flat (intro-flat x) (intro-flat .x) (intro-flat refl) = refl
The retraction part is easy:
is-retraction-eq-Eq-flat : (u v : ♭ A) → is-retraction (Eq-eq-flat u v) (eq-Eq-flat u v) is-retraction-eq-Eq-flat (intro-flat x) (intro-flat .x) refl = refl retraction-Eq-eq-flat : (u v : ♭ A) → retraction (Eq-eq-flat u v) pr1 (retraction-Eq-eq-flat u v) = eq-Eq-flat u v pr2 (retraction-Eq-eq-flat u v) = is-retraction-eq-Eq-flat u v retract-Eq-flat : (u v : ♭ A) → (u = v) retract-of (Eq-flat u v) pr1 (retract-Eq-flat u v) = Eq-eq-flat u v pr1 (pr2 (retract-Eq-flat u v)) = eq-Eq-flat u v pr2 (pr2 (retract-Eq-flat u v)) = is-retraction-eq-Eq-flat u v is-injective-Eq-eq-flat : (u v : ♭ A) → is-injective (Eq-eq-flat u v) is-injective-Eq-eq-flat u v = is-injective-retraction (Eq-eq-flat u v) (retraction-Eq-eq-flat u v)
To show it is also a section, however, we need the stronger crisp identity induction principle, which we have only postulated so far.
is-section-eq-Eq-flat : (u v : ♭ A) → is-section (Eq-eq-flat u v) (eq-Eq-flat u v) is-section-eq-Eq-flat (intro-flat x) (intro-flat y) (intro-flat p) = crisp-ind-Id ( λ x y p → ( Eq-eq-flat ( intro-flat x) ( intro-flat y) ( eq-Eq-flat (intro-flat x) (intro-flat y) (intro-flat p))) = ( intro-flat p)) ( λ _ → refl) ( p)
is-equiv-Eq-eq-flat : (u v : ♭ A) → is-equiv (Eq-eq-flat u v) is-equiv-Eq-eq-flat u v = is-equiv-is-invertible ( eq-Eq-flat u v) ( is-section-eq-Eq-flat u v) ( is-retraction-eq-Eq-flat u v) extensionality-flat : (u v : ♭ A) → (u = v) ≃ Eq-flat u v pr1 (extensionality-flat u v) = Eq-eq-flat u v pr2 (extensionality-flat u v) = is-equiv-Eq-eq-flat u v
The following is Theorem 6.1 in [Shu18].
crisp-extensionality-flat : (@♭ x y : A) → (intro-flat x = intro-flat y) ≃ ♭ (x = y) crisp-extensionality-flat x y = extensionality-flat (intro-flat x) (intro-flat y)
The following is Corollary 6.2 in [Shu18].
crisp-flat-extensionality-flat : (@♭ u v : ♭ A) → (u = v) ≃ ♭ (counit-flat u = counit-flat v) crisp-flat-extensionality-flat (intro-flat x) (intro-flat y) = extensionality-flat (intro-flat x) (intro-flat y)
See also
- We show that identity types between crisp elements of flat discrete crisp
types are flat discrete crisp in
modal-type-theory.flat-discrete-crisp-types
. - Action on identifications of crisp functions
- Transport along crisp identifications
References
- [Mey]
- David Jaz Meyers. Davidjaz/cohesion. GitHub repository. URL: https://github.com/DavidJaz/Cohesion.
- [Shu18]
- Michael Shulman. Brouwer's fixed-point theorem in real-cohesive homotopy type theory. Mathematical Structures in Computer Science, 28(6):856–941, 06 2018. arXiv:1509.07584, doi:10.1017/S0960129517000147.
Recent changes
- 2024-09-06. Fredrik Bakke. Basic properties of the flat modality (#1078).
- 2023-11-24. Fredrik Bakke. Modal type theory (#701).