Martin Escardo, 2015, formalized December 2017. Id : X β (X β U) is an embedding assuming functional extensionality, and either univalence or K, in fact the Yoneda Embedding. The Id-fiber of A:Xβπ€ Μ says that A is representable, which is equivalent to the contractibility of Ξ£A, which is a proposition. (Hence the injective types are the retracts of the exponential powers of the universe.) This works as follows in outline: If A : X β π€ Μ then the Id-fiber of A is Ξ£ x κ X , Id x οΌ A. If the pair (x,p) is in the fiber for x : X and p : Id x = A, then ap Ξ£ p : Ξ£ (Id x) = Ξ£ A, and hence, being equal to a contractible type, the type Ξ£ A is contractible. Next we have (*) A x β Nat (Id x) A (yoneda) = (y : X) β Id x y β A y (definition) β (y : X) β Id x y β A y (because Ξ£ A is contractible (Yoneda corollary)) β (y : X) β Id x y οΌ A y (by univalence) β Id x οΌ A (by function extensionality) Applying Ξ£ to both sides, Ξ£ A β (Ξ£ x κ X , Id x οΌ A), and because the type Ξ£ A is contractible so is Ξ£ x κ X , Id x οΌ A, which shows that the map Id : X β (X β U) is an embedding. 2017: This relies on univalence. But less than that suffices (https://groups.google.com/forum/#!topic/homotopytypetheory/bKti7krHM-c) First, Evan Cavallo showed that it is enough to assume funext and that the canonical map X οΌ Y β X β Y is an embedding. Then, using this idea and the above proof outline, we further generalized this to assume that the canonical map X οΌ Y β (X β Y) is left-cancellable (which is much weaker than assuming that it is an embedding). This is what we record next (9th December 2017), using the original idea (*) in the weakened form discussed above. \begin{code} {-# OPTIONS --without-K --exact-split --safe --auto-inline #-} module UF.IdEmbedding where open import MLTT.Spartan open import UF.Base open import UF.Subsingletons open import UF.Subsingletons-FunExt open import UF.FunExt open import UF.Lower-FunExt open import UF.Equiv open import UF.Equiv-FunExt open import UF.Embeddings open import UF.Yoneda open import UF.LeftCancellable open import UF.Univalence open import UF.EquivalenceExamples \end{code} The Id Embedding Lemma. The idea is to show that the type T := Ξ£ x κ X , Id x οΌ A is a proposition by showing that there is a left-cancellable map from it to a proposition, namely the contractible type Ξ£ A. \begin{code} Id-Embedding-Lemma : FunExt β {X : π€ Μ } β ((x y : X) (A : X β π€ Μ ) β left-cancellable (idtofun (Id x y) (A y))) β is-embedding(Id {π€} {X}) Id-Embedding-Lemma {π€} fe {X} iflc A (xβ , pβ) = h (xβ , pβ) where T = Ξ£ x κ X , Id x οΌ A q : Ξ£ (Id xβ) οΌ Ξ£ A q = ap Ξ£ pβ c : β! A c = yoneda-nat (singleton-type xβ) is-singleton (singleton-types-are-singletons xβ) (Ξ£ A) q fβ : (x : X) β Id x οΌ A β (y : X) β Id x y οΌ A y fβ x = happly fβ : (x : X) β ((y : X) β Id x y οΌ A y) β Nat (Id x) A fβ x = NatΞ (Ξ» y β idtofun (Id x y) (A y)) fβ : (x : X) β Nat (Id x) A β A x fβ x = yoneda-elem x A f : (x : X) β Id x οΌ A β A x f x = fβ x β fβ x β fβ x fβ-lc : (x : X) β left-cancellable(fβ x) fβ-lc x = happly-lc (fe π€ (π€ βΊ)) (Id x) A fβ-lc : (x : X) β left-cancellable(fβ x) fβ-lc x = g where l : β {Ο Ο'} β fβ x Ο οΌ fβ x Ο' β (x : X) β Ο x οΌ Ο' x l {Ο} {Ο'} = NatΞ -lc (Ξ» y β idtofun (Id x y) (A y)) (Ξ» y β iflc x y A) g : β {Ο Ο'} β fβ x Ο οΌ fβ x Ο' β Ο οΌ Ο' g p = dfunext (fe π€ (π€ βΊ)) (l p) fβ-lc : (x : X) β left-cancellable(fβ x) fβ-lc x {Ξ·} {Ξ·'} p = dfunext (fe π€ π€) (Ξ» y β dfunext (fe π€ π€) (l y)) where l : Ξ· β Ξ·' l = yoneda-elem-lc Ξ· Ξ·' p f-lc : (x : X) β left-cancellable(f x) f-lc x = left-cancellable-closed-under-β (fβ x) (fβ x β fβ x) (fβ-lc x) (left-cancellable-closed-under-β (fβ x) (fβ x) (fβ-lc x) (fβ-lc x)) g : T β Ξ£ A g = NatΞ£ f g-lc : left-cancellable g g-lc = NatΞ£-lc f f-lc h : is-prop T h = left-cancellable-reflects-is-prop g g-lc (singletons-are-props c) \end{code} univalence implies that the function Id {π€} {X} : X β (X β π€ Μ ) is an embedding. The map eqtofun is left-cancellable assuming univalence (and function extensionality, which is a consequence of univalence, but we don't bother): \begin{code} eqtofun-lc : is-univalent π€ β FunExt β (X Y : π€ Μ ) β left-cancellable(Eqtofun X Y) eqtofun-lc ua fe X Y {f , jef} {g , jeg} p = Ξ³ where q : yoneda-nat f is-equiv jef g p οΌ jeg q = being-equiv-is-prop fe g _ _ Ξ³ : f , jef οΌ g , jeg Ξ³ = to-Ξ£-Id (p , q) \end{code} The map idtofun is left-cancellable assuming univalence (and funext): \begin{code} is-univalent-idtofun-lc : is-univalent π€ β FunExt β (X Y : π€ Μ ) β left-cancellable(idtofun X Y) is-univalent-idtofun-lc ua fe X Y = left-cancellable-closed-under-β (idtoeq X Y) (Eqtofun X Y) (is-univalent-idtoeq-lc ua X Y) (eqtofun-lc ua fe X Y) UA-Id-embedding : is-univalent π€ β FunExt β {X : π€ Μ } β is-embedding(Id {π€} {X}) UA-Id-embedding {π€} ua fe {X} = Id-Embedding-Lemma fe (Ξ» x y a β is-univalent-idtofun-lc ua fe (Id x y) (a y)) \end{code} The K axiom and function extensionality together imply that the function Id : X β (X β U) is an embedding. \begin{code} K-Id-embedding' : K-axiom (π€ βΊ) β FunExt β {X : π€ Μ } β is-embedding(Id {π€} {X}) K-Id-embedding' {π€} k fe {X} = Id-Embedding-Lemma fe (K-idtofun-lc k) \end{code} But actually function extensionality is not needed for this: K alone suffices. \begin{code} Id-lc : {X : π€ Μ } β left-cancellable (Id {π€} {X}) Id-lc {π€} {X} {x} {y} p = idtofun (Id y y) (Id x y) (happly (p β»ΒΉ) y) refl K-Id-embedding : K-axiom (π€ βΊ) β {X : π€ Μ } β is-embedding(Id {π€} {X}) K-Id-embedding {π€} k {X} = lc-maps-are-embeddings-with-K Id Id-lc k \end{code} Added 7th Feb 2019. \begin{code} Id-set : {X : π€ Μ } β is-set X β X β (X β Ξ© π€) Id-set i x y = (x οΌ y) , i Id-set-lc : funext π€ (π€ βΊ) β {X : π€ Μ } (i : is-set X) β left-cancellable (Id-set i) Id-set-lc fe {X} i {x} {y} e = Id-lc d where d : Id x οΌ Id y d = dfunext fe (Ξ» z β ap prβ (happly e z)) Id-set-is-embedding : funext π€ (π€ βΊ) β propext π€ β {X : π€ Μ } (i : is-set X) β is-embedding (Id-set i) Id-set-is-embedding {π€} fe pe {X} i = lc-maps-into-sets-are-embeddings (Id-set i) (Id-set-lc (lower-funext π€ (π€ βΊ) fe) i) (Ξ -is-set fe (Ξ» x β Ξ©-is-set (lower-funext π€ (π€ βΊ) fe) pe)) \end{code}