Operations on spans
Content created by Egbert Rijke.
Created on 2024-01-28.
Last modified on 2024-04-25.
module foundation.operations-spans where open import foundation-core.operations-spans public
Imports
open import foundation.dependent-pair-types open import foundation.equivalences-arrows open import foundation.morphisms-arrows open import foundation.spans open import foundation.universe-levels open import foundation-core.function-types
Idea
This file contains some further operations on spans that
produce new spans from given spans and possibly other data. Previous operations
on spans were defined in
foundation-core.operations-spans
.
Definitions
Concatenating spans and equivalences of arrows on the left
Consider a span s
given by
f g
A <----- S -----> B
and an equivalence of arrows
h : equiv-arrow f' f
as indicated in the diagram
f'
A' <---- S'
| |
h₀ | ≃ ≃ | h₁
∨ ∨
A <----- S -----> B.
f g
Then we obtain a span A' <- S' -> B
.
module _ {l1 l2 l3 l4 l5 : Level} {A : UU l1} {B : UU l2} (s : span l3 A B) {S' : UU l4} {A' : UU l5} (f' : S' → A') (h : equiv-arrow f' (left-map-span s)) where spanning-type-left-concat-equiv-arrow-span : UU l4 spanning-type-left-concat-equiv-arrow-span = S' left-map-left-concat-equiv-arrow-span : spanning-type-left-concat-equiv-arrow-span → A' left-map-left-concat-equiv-arrow-span = f' right-map-left-concat-equiv-arrow-span : spanning-type-left-concat-equiv-arrow-span → B right-map-left-concat-equiv-arrow-span = ( right-map-span s) ∘ ( map-domain-equiv-arrow f' (left-map-span s) h) left-concat-equiv-arrow-span : span l4 A' B pr1 left-concat-equiv-arrow-span = spanning-type-left-concat-equiv-arrow-span pr1 (pr2 left-concat-equiv-arrow-span) = left-map-left-concat-equiv-arrow-span pr2 (pr2 left-concat-equiv-arrow-span) = right-map-left-concat-equiv-arrow-span
Concatenating spans and equivalences of arrows on the right
Consider a span s
given by
f g
A <----- S -----> B
and a morphism of arrows h : hom-arrow g' g
as indicated in the diagram
g'
S' ----> B'
| |
h₀ | ≃ ≃ | h₁
∨ ∨
A <----- S -----> B.
f g
Then we obtain a span A <- S' -> B'
.
module _ {l1 l2 l3 l4 l5 : Level} {A : UU l1} {B : UU l2} (s : span l3 A B) {S' : UU l4} {B' : UU l5} (g' : S' → B') (h : equiv-arrow g' (right-map-span s)) where spanning-type-right-concat-equiv-arrow-span : UU l4 spanning-type-right-concat-equiv-arrow-span = S' left-map-right-concat-equiv-arrow-span : spanning-type-right-concat-equiv-arrow-span → A left-map-right-concat-equiv-arrow-span = ( left-map-span s) ∘ ( map-domain-equiv-arrow g' (right-map-span s) h) right-map-right-concat-equiv-arrow-span : spanning-type-right-concat-equiv-arrow-span → B' right-map-right-concat-equiv-arrow-span = g' right-concat-equiv-arrow-span : span l4 A B' pr1 right-concat-equiv-arrow-span = spanning-type-right-concat-equiv-arrow-span pr1 (pr2 right-concat-equiv-arrow-span) = left-map-right-concat-equiv-arrow-span pr2 (pr2 right-concat-equiv-arrow-span) = right-map-right-concat-equiv-arrow-span
Recent changes
- 2024-04-25. Fredrik Bakke. chore: Fix arrowheads in character diagrams (#1124).
- 2024-01-28. Egbert Rijke. Span diagrams (#1007).