Noninjective maps
Content created by Fredrik Bakke.
Created on 2025-08-14.
Last modified on 2025-08-14.
module foundation.noninjective-maps where
Imports
open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types open import foundation.empty-types open import foundation.functoriality-dependent-pair-types open import foundation.functoriality-propositional-truncation open import foundation.inhabited-types open import foundation.negation open import foundation.propositional-truncations open import foundation.repetitions-of-values open import foundation.universe-levels open import foundation-core.contractible-types open import foundation-core.function-types open import foundation-core.identity-types open import foundation-core.injective-maps open import foundation-core.propositions
Idea
Noninjectivity is a positive way of stating that a map is
not injective. A
map f : A → B
is
noninjective¶
if there exists a
pair of distinct elements x ≠ y
of
A
that are mapped to the same value in
B
, f x = f y
. In other words, if f
repeats a value.
Definitions
Not injective maps
module _ {l1 l2 : Level} {A : UU l1} {B : UU l2} where is-not-injective : (A → B) → UU (l1 ⊔ l2) is-not-injective f = ¬ (is-injective f) is-prop-is-not-injective : {f : A → B} → is-prop (is-not-injective f) is-prop-is-not-injective = is-prop-neg is-not-injective-Prop : (A → B) → Prop (l1 ⊔ l2) is-not-injective-Prop f = (is-not-injective f , is-prop-is-not-injective)
Noninjective maps
module _ {l1 l2 : Level} {A : UU l1} {B : UU l2} where is-noninjective-Prop : (A → B) → Prop (l1 ⊔ l2) is-noninjective-Prop f = trunc-Prop (repetition-of-values f) is-noninjective : (A → B) → UU (l1 ⊔ l2) is-noninjective f = type-Prop (is-noninjective-Prop f) is-prop-is-noninjective : {f : A → B} → is-prop (is-noninjective f) is-prop-is-noninjective {f} = is-prop-type-Prop (is-noninjective-Prop f)
The type of noninjective maps
noninjective-map : {l1 l2 : Level} → UU l1 → UU l2 → UU (l1 ⊔ l2) noninjective-map A B = Σ (A → B) is-noninjective module _ {l1 l2 : Level} {A : UU l1} {B : UU l2} (f : noninjective-map A B) where map-noninjective-map : A → B map-noninjective-map = pr1 f is-noninjective-map-noninjective-map : is-noninjective map-noninjective-map is-noninjective-map-noninjective-map = pr2 f
Properties
Noninjective maps are not injective
module _ {l1 l2 : Level} {A : UU l1} {B : UU l2} {f : A → B} where abstract is-not-injective-is-noninjective : is-noninjective f → is-not-injective f is-not-injective-is-noninjective = rec-trunc-Prop ( is-not-injective-Prop f) ( λ ((x , y , x≠y) , p) H → x≠y (H p))
Noninjectivity of composites
Given maps f : A → B
and g : B → C
, then
- if
f
is noninjective theng ∘ f
is noninjective. - if
g
is injective andg ∘ f
is noninjective thenf
is noninjective.
module _ {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} {C : UU l3} {f : A → B} {g : B → C} where is-noninjective-comp : is-noninjective f → is-noninjective (g ∘ f) is-noninjective-comp = map-trunc-Prop (repetition-of-values-comp {g = g} {f}) is-noninjective-right-factor : is-injective g → is-noninjective (g ∘ f) → is-noninjective f is-noninjective-right-factor G = map-trunc-Prop (repetition-of-values-right-factor' G)
See also
Recent changes
- 2025-08-14. Fredrik Bakke. Dedekind finiteness of various notions of finite type (#1422).