Tom de Jong, 4 & 5 April 2022. Assuming set quotients, we derive propositional truncations in the presence of function extensionality. \begin{code} {-# OPTIONS --safe --without-K #-} module Quotient.GivesPropTrunc where open import MLTT.Spartan open import Quotient.Type open import UF.FunExt open import UF.PropTrunc open import UF.Subsingletons open import UF.Subsingletons-FunExt open import UF.Subsingletons-Properties module _ (sq : set-quotients-exist) where open general-set-quotients-exist sq private module _ {X : 𝓤 ̇ } where _≈_ : X → X → 𝓤₀ ̇ x ≈ y = 𝟙 ≋ : EqRel X ≋ = _≈_ , (λ x y → 𝟙-is-prop) , (λ x → ⋆) , (λ x y _ → ⋆) , (λ x y z _ _ → ⋆) ∥_∥ : 𝓤 ̇ → 𝓤 ̇ ∥_∥ X = X / ≋ ∣_∣ : {X : 𝓤 ̇ } → X → ∥ X ∥ ∣_∣ = η/ ≋ ∥∥-is-prop : {X : 𝓤 ̇ } → funext 𝓤 𝓤 → is-prop ∥ X ∥ ∥∥-is-prop {𝓤} {X} fe = /-induction ≋ (λ x' → Π-is-prop fe (λ y' → /-is-set ≋)) (λ x → /-induction ≋ (λ y' → /-is-set ≋) (λ y → η/-identifies-related-points ≋ ⋆)) ∥∥-rec : {X : 𝓤 ̇ } {P : 𝓥 ̇ } → is-prop P → (X → P) → ∥ X ∥ → P ∥∥-rec {𝓤} {𝓥} {X} {P} i f = ∃!-witness (/-universality ≋ (props-are-sets i) f (λ {x} {x'}_ → i (f x) (f x'))) abstract propositional-truncations-from-set-quotients : Fun-Ext → propositional-truncations-exist propositional-truncations-from-set-quotients fe = record { ∥_∥ = ∥_∥ ; ∥∥-is-prop = ∥∥-is-prop fe ; ∣_∣ = ∣_∣ ; ∥∥-rec = ∥∥-rec } \end{code}