# Span diagrams on families of types ```agda module foundation.span-diagrams-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 ``` </details> ## Idea A {{#concept "span diagram" Disambiguation="family of types"}} on a family of types indexed by a type `I` consists of a type family `A : I → 𝒰`, and a [span](foundation.spans-families-of-types.md) on the type family `A`. More explicitly, a span diagram on a family of types indexed by `I` consists of a type family `A : I → 𝒰`, a {{#concept "spanning type" Disambiguation="span diagram on a family of types"}} `S`, and a family of maps `f : (i : I) → S → A i`. ## Definitions ### Span diagrams of families of types ```agda span-diagram-type-family : {l1 : Level} (l2 l3 : Level) → UU l1 → UU (l1 ⊔ lsuc l2 ⊔ lsuc l3) span-diagram-type-family l2 l3 I = Σ (I → UU l2) (λ A → span-type-family l3 A) module _ {l1 l2 l3 : Level} {I : UU l1} (s : span-diagram-type-family l2 l3 I) where family-span-diagram-type-family : I → UU l2 family-span-diagram-type-family = pr1 s span-span-diagram-type-family : span-type-family l3 family-span-diagram-type-family span-span-diagram-type-family = pr2 s spanning-type-span-diagram-type-family : UU l3 spanning-type-span-diagram-type-family = spanning-type-span-type-family ( span-span-diagram-type-family) map-span-diagram-type-family : (i : I) → spanning-type-span-diagram-type-family → family-span-diagram-type-family i map-span-diagram-type-family = map-span-type-family ( span-span-diagram-type-family) ```