# Kernel span diagrams of maps ```agda module foundation.kernel-span-diagrams-of-maps where ``` <details><summary>Imports</summary> ```agda open import foundation.dependent-pair-types open import foundation.span-diagrams open import foundation.spans open import foundation.universe-levels open import foundation-core.function-types open import foundation-core.identity-types ``` </details> ## Idea Consider a map `f : A → B`. The {{#concept "kernel span diagram" Disambiguation="map" Agda=kernel-span-diagram}} of `f` is the [span diagram](foundation.span-diagrams.md) ```text pr1 pr1 ∘ pr2 A <----- Σ (x y : A), f x = f y -----------> A. ``` We call this the kernel span diagram, since the pair `(pr1 , pr1 ∘ pr2)` is often called the kernel pair of a map. ## Definitions ### Kernel span diagrams of maps ```agda module _ {l1 l2 : Level} {A : UU l1} {B : UU l2} (f : A → B) where spanning-type-kernel-span : UU (l1 ⊔ l2) spanning-type-kernel-span = Σ A (λ x → Σ A (λ y → f x = f y)) left-map-kernel-span : spanning-type-kernel-span → A left-map-kernel-span = pr1 right-map-kernel-span : spanning-type-kernel-span → A right-map-kernel-span = pr1 ∘ pr2 kernel-span : span (l1 ⊔ l2) A A pr1 kernel-span = spanning-type-kernel-span pr1 (pr2 kernel-span) = left-map-kernel-span pr2 (pr2 kernel-span) = right-map-kernel-span domain-kernel-span-diagram : UU l1 domain-kernel-span-diagram = A codomain-kernel-span-diagram : UU l1 codomain-kernel-span-diagram = A kernel-span-diagram : span-diagram l1 l1 (l1 ⊔ l2) pr1 kernel-span-diagram = domain-kernel-span-diagram pr1 (pr2 kernel-span-diagram) = codomain-kernel-span-diagram pr2 (pr2 kernel-span-diagram) = kernel-span ```