module foundations.h-level-closed-under-retract-of-identity where
open import foundations.universe open import foundations.h-level open import foundations.retraction open import foundations.proposition open import foundations.set open import foundations.contractible-type open import foundations.sigma-type open import foundations.identity-type open import foundations.homotopy open import foundations.function open import foundations.functions-are-functors open import foundations.groupoid-laws open import foundations.natural-number open import foundations.h-level-closed-under-retract
少し面白いことに、isPropRetractId
はHasRetraction
を仮定しない。
private variable ℓ : Level A B : Type ℓ isPropRetractId : isProp B → (s : A → B) → (∀ {x y : A} → s x = s y → x = y) → isProp A isPropRetractId f s R x y = R p where p : s x = s y p = f (s x) (s y) ofHLevelRetractId : ∀ n → ofHLevel (suc n) B → (s : A → B) → (∀ {x y : A} → HasRetraction (ap s {x = x} {y = y})) → ofHLevel (suc n) A ofHLevelRetractId zero f s R = isPropRetractId f s (R .fst) ofHLevelRetractId {A = A} (suc n) f s R = k where k : ∀ (x y : A) → ofHLevel (suc n) (x = y) k x y = ofHLevelRetract (suc n) (f (s x) (s y)) (ap s , R) isSetRetractId : isSet B → (s : A → B) → (∀ {x y : A} → HasRetraction (ap s {x = x} {y = y})) → isSet A isSetRetractId = ofHLevelRetractId 1