@@ -10,10 +10,12 @@ module foundation-core.truncated-maps where
1010open import foundation.action-on-identifications-functions
1111open import foundation.dependent-pair-types
1212open import foundation.equality-fibers-of-maps
13+ open import foundation.type-arithmetic-dependent-pair-types
1314open import foundation.universe-levels
1415
1516open import foundation-core.commuting-squares-of-maps
1617open import foundation-core.contractible-maps
18+ open import foundation-core.contractible-types
1719open import foundation-core.equivalences
1820open import foundation-core.fibers-of-maps
1921open import foundation-core.function-types
@@ -112,23 +114,37 @@ module _
112114 where
113115
114116 abstract
115- is-trunc-map-is-trunc-map-ap :
117+ is-trunc-map-succ- is-trunc-map-ap :
116118 ((x y : A) → is-trunc-map k (ap f {x} {y})) → is-trunc-map (succ-𝕋 k) f
117- is-trunc-map-is-trunc-map-ap is-trunc-map-ap-f b (pair x p) (pair x' p') =
119+ is-trunc-map-succ- is-trunc-map-ap is-trunc-map-ap-f b (x , p) (x' , p') =
118120 is-trunc-equiv k
119- ( fiber (ap f) (p ∙ ( inv p') ))
120- ( equiv-fiber-ap-eq-fiber f (pair x p) (pair x' p'))
121- ( is-trunc-map-ap-f x x' (p ∙ ( inv p') ))
121+ ( fiber (ap f) (p ∙ inv p'))
122+ ( equiv-fiber-ap-eq-fiber f (x , p) (x' , p'))
123+ ( is-trunc-map-ap-f x x' (p ∙ inv p'))
122124
123125 abstract
124- is-trunc-map-ap-is-trunc-map :
126+ is-trunc-map-ap-is-trunc-map-succ :
125127 is-trunc-map (succ-𝕋 k) f → (x y : A) → is-trunc-map k (ap f {x} {y})
126- is-trunc-map-ap-is-trunc-map is-trunc-map-f x y p =
128+ is-trunc-map-ap-is-trunc-map-succ is-trunc-map-f x y p =
127129 is-trunc-is-equiv' k
128- ( pair x p = pair y refl)
130+ ( (x , p) = (y , refl) )
129131 ( eq-fiber-fiber-ap f x y p)
130132 ( is-equiv-eq-fiber-fiber-ap f x y p)
131- ( is-trunc-map-f (f y) (pair x p) (pair y refl))
133+ ( is-trunc-map-f (f y) (x , p) (y , refl))
134+ ```
135+
136+ ### The action on identifications of a ` k ` -truncated map is also ` k ` -truncated
137+
138+ ``` agda
139+ module _
140+ {l1 l2 : Level} (k : 𝕋) {A : UU l1} {B : UU l2} (f : A → B)
141+ where
142+
143+ abstract
144+ is-trunc-map-ap-is-trunc-map :
145+ is-trunc-map k f → (x y : A) → is-trunc-map k (ap f {x} {y})
146+ is-trunc-map-ap-is-trunc-map H =
147+ is-trunc-map-ap-is-trunc-map-succ k f (is-trunc-map-succ-is-trunc-map k H)
132148```
133149
134150### The domain of any ` k ` -truncated map into a ` k+1 ` -truncated type is ` k+1 ` -truncated
@@ -146,7 +162,7 @@ is-trunc-is-trunc-map-into-is-trunc
146162 ( k)
147163 ( ap f)
148164 ( is-trunc-B (f a) (f a'))
149- ( is-trunc-map-ap-is-trunc-map k f is-trunc-map-f a a')
165+ ( is-trunc-map-ap-is-trunc-map-succ k f is-trunc-map-f a a')
150166```
151167
152168### A family of types is a family of ` k ` -truncated types if and only of the projection map is ` k ` -truncated
@@ -274,7 +290,7 @@ abstract
274290 ( map-compute-fiber-comp g h (g b))
275291 ( is-equiv-map-compute-fiber-comp g h (g b))
276292 ( is-trunc-map-htpy k (inv-htpy H) is-trunc-f (g b)))
277- ( pair b refl)
293+ ( b , refl)
278294```
279295
280296### If a composite ` g ∘ h ` and its left factor ` g ` are truncated maps, then its right factor ` h ` is a truncated map
@@ -305,3 +321,21 @@ module _
305321 ( is-trunc-map-comp k i g M
306322 ( is-trunc-map-is-equiv k K))
307323```
324+
325+ ### If the domain is contractible and the codomain is ` k+1 ` -truncated then the map is ` k ` -truncated
326+
327+ ``` agda
328+ module _
329+ {l1 l2 : Level} {k : 𝕋} {A : UU l1} {B : UU l2} {f : A → B}
330+ where
331+
332+ is-trunc-map-is-trunc-succ-codomain-is-contr-domain :
333+ is-contr A →
334+ is-trunc (succ-𝕋 k) B →
335+ is-trunc-map k f
336+ is-trunc-map-is-trunc-succ-codomain-is-contr-domain c tB u =
337+ is-trunc-equiv k
338+ ( f (center c) = u)
339+ ( left-unit-law-Σ-is-contr c (center c))
340+ ( tB (f (center c)) u)
341+ ```
0 commit comments