Martin Escardo 23 February 2023
The pre-univalence axiom, first suggested by Evan Cavallo in November
2017 [1] and then again by Peter Lumsdaine in August 2022
verbally to me.
[1] https://groups.google.com/g/homotopytypetheory/c/bKti7krHM-c/m/vxRU3FwADQAJ
The preunivalence axiom is a common generalization of the univalence
axiom and the K axiom.
The strong preunivalence axiom is a variant that was stated by Fredrik Bakke
in the agda-unimath in February 2025 [2].
[2] https://unimath.github.io/agda-unimath/foundation.strong-preunivalence.html
\begin{code}
{-# OPTIONS --safe --without-K #-}
module UF.PreUnivalence where
open import MLTT.Spartan
open import UF.Base
open import UF.Embeddings
open import UF.Equiv
open import UF.Equiv-FunExt
open import UF.EquivalenceExamples
open import UF.FunExt
open import UF.Retracts
open import UF.Sets
open import UF.Subsingletons
open import UF.Univalence
is-preunivalent : β π€ β π€ βΊ Μ
is-preunivalent π€ = (X Y : π€ Μ ) β is-embedding (idtoeq X Y)
Preunivalence : π€Ο
Preunivalence = (π€ : Universe) β is-preunivalent π€
univalence-gives-preunivalence : is-univalent π€
β is-preunivalent π€
univalence-gives-preunivalence ua X Y = equivs-are-embeddings
(idtoeq X Y)
(ua X Y)
Univalence-gives-Preunivalence : Univalence β Preunivalence
Univalence-gives-Preunivalence ua π€ = univalence-gives-preunivalence (ua π€)
K-gives-preunivalence : K-axiom π€
β K-axiom (π€ βΊ)
β is-preunivalent π€
K-gives-preunivalence {π€} k k' X Y e (p , _) (p' , _) =
to-subtype-οΌ (Ξ» _ β k (X β Y)) (k' (π€ Μ )p p')
K-gives-Preunivalence : K-Axiom β Preunivalence
K-gives-Preunivalence k π€ = K-gives-preunivalence (k π€) (k (π€ βΊ))
\end{code}
Added by Evan Cavallo on 13th March 2025. The strong preunivalence axiom and the
fact that it implies the preunivalence axiom are due to Fredrik Bakke.
\begin{code}
is-strong-preunivalent : β π€ π₯ β Set (π€ βΊ β π₯ βΊ)
is-strong-preunivalent π€ π₯ = (X : π€ Μ ) β is-set (Ξ£ Y κ π₯ Μ , X β Y)
strong-preunivalence-gives-preunivalence : is-strong-preunivalent π€ π€
β is-preunivalent π€
strong-preunivalence-gives-preunivalence spua X =
NatΞ£-is-embedding-converse (X οΌ_) (X β_) (idtoeq X)
(maps-of-props-into-sets-are-embeddings
(NatΞ£ (idtoeq X))
(singleton-types-are-props X)
(spua X))
funext-and-preunivalence-give-strong-preunivalence : funext π€ π€
β funext π₯ π€
β funext π₯ π₯
β is-preunivalent π₯
β is-strong-preunivalent π€ π₯
funext-and-preunivalence-give-strong-preunivalence
{π€} {π₯} feuu fevu fevv preua X {Y , Ξ±} {Y' , Ξ±'} =
retract-of-prop
(to-Ξ£-οΌ , from-Ξ£-οΌ , tofrom-Ξ£-οΌ)
(equiv-to-prop
(Ξ£-cong Ξ» p β
(_ , β-is-equiv-left (transport-eq p)) β shift-equiv Ξ± (idtoeq _ _ p) Ξ±')
(preua _ _ (β-sym Ξ± β Ξ±')))
where
transport-eq : (p : Y οΌ Y') β Ξ± β idtoeq Y Y' p οΌ transport (X β_) p Ξ±
transport-eq refl = β-refl-right' fevu fevv feuu Ξ±
shift-equiv : {A : π€ Μ } {B : π₯ Μ } {C : π₯ Μ }
β (e : A β B) (e' : B β C) (e'' : A β C)
β (e β e' οΌ e'') β (e' οΌ β-sym e β e'')
shift-equiv e e' e'' =
(e β e' οΌ e'')
ββ¨ _ , ap-is-equiv (β-sym e β_) (prβ q) β©
(β-sym e β (e β e') οΌ β-sym e β e'')
ββ¨ οΌ-cong-l _ _ (β-assoc' fevv fevv fevv (β-sym e) e e') β©
((β-sym e β e) β e' οΌ β-sym e β e'')
ββ¨ οΌ-cong-l _ _ (ap (_β e') (β-sym-left-inverse' fevv e)) β©
(β-refl _ β e' οΌ β-sym e β e'')
ββ¨ οΌ-cong-l _ _ (β-refl-left' fevv fevv fevv e') β©
(e' οΌ β-sym e β e'') β
where
q = β-cong-left' fevu fevv feuu fevv fevv e
\end{code}