# Operations on spans of families of types ```agda module foundation.operations-spans-families-of-types where ``` <details><summary>Imports</summary> ```agda open import foundation.dependent-pair-types open import foundation.spans-families-of-types open import foundation.universe-levels open import foundation-core.function-types ``` </details> ## Idea This file contains a collection of operations that produce new [spans of families of types](foundation.spans-families-of-types.md) from given spans of families of types. ## Definitions ### Concatenation of spans and families of maps Consider a span `𝒮 := (S , s)` on a family of types `A : I → 𝒰` and consider a family of maps `f : (i : I) → A i → B i`. Then we can concatenate the span `𝒮` with the family of maps `f` to obtain the span `(S , λ i → f i ∘ s i)` on `B`. ```agda module _ {l1 l2 l3 l4 : Level} {I : UU l1} {A : I → UU l2} {B : I → UU l3} (𝒮 : span-type-family l4 A) (f : (i : I) → A i → B i) where spanning-type-concat-span-hom-family-of-types : UU l4 spanning-type-concat-span-hom-family-of-types = spanning-type-span-type-family 𝒮 map-concat-span-hom-family-of-types : (i : I) → spanning-type-concat-span-hom-family-of-types → B i map-concat-span-hom-family-of-types i = f i ∘ map-span-type-family 𝒮 i concat-span-hom-family-of-types : span-type-family l4 B pr1 concat-span-hom-family-of-types = spanning-type-concat-span-hom-family-of-types pr2 concat-span-hom-family-of-types = map-concat-span-hom-family-of-types ```