Martin Escardo For the moment we consider 0-connected types only, referred to as connected types for the sake of brevity. There is a formulation that doesn't require propositional truncations, but increases universe levels. We start with that formulation. \begin{code} {-# OPTIONS --safe --without-K #-} open import MLTT.Spartan open import UF.PropTrunc module UF.Connected (pt : propositional-truncations-exist) where open PropositionalTruncation pt open import UF.FunExt open import UF.Hedberg open import UF.Sets open import UF.Subsingletons open import UF.Subsingletons-FunExt is-wconnected : 𝓤 ̇ → 𝓤 ̇ is-wconnected X = (x y : X) → ∥ x = y ∥ is-connected : 𝓤 ̇ → 𝓤 ̇ is-connected X = ∥ X ∥ × is-wconnected X being-wconnected-is-prop : funext 𝓤 𝓤 → {X : 𝓤 ̇ } → is-prop (is-wconnected X) being-wconnected-is-prop fe = Π-is-prop fe (λ x → Π-is-prop fe (λ y → ∥∥-is-prop)) being-connected-is-prop : funext 𝓤 𝓤 → {X : 𝓤 ̇ } → is-prop (is-connected X) being-connected-is-prop fe = ×-is-prop ∥∥-is-prop (being-wconnected-is-prop fe) maps-of-wconnected-types-into-sets-are-constant : {X : 𝓤 ̇ } {Y : 𝓥 ̇ } → is-set Y → is-wconnected X → (f : X → Y) → wconstant f maps-of-wconnected-types-into-sets-are-constant {𝓤} {𝓥} {X} {Y} s w f x x' = γ where a : ∥ x = x' ∥ a = w x x' γ : f x = f x' γ = ∥∥-rec s (ap f) a \end{code}