# Dependent function types ```agda module foundation.dependent-function-types where ``` <details><summary>Imports</summary> ```agda open import foundation.dependent-pair-types open import foundation.spans-families-of-types open import foundation.terminal-spans-families-of-types open import foundation.type-arithmetic-dependent-function-types open import foundation.universal-property-dependent-function-types open import foundation.universe-levels ``` </details> ## Idea Consider a family `B` of types over `A`. A {{#concept "dependent function"}} that takes elements `x : A` to elements of type `B x` is an assignment of an element `f x : B x` for each `x : A`. In Agda, dependent functions can be written using `λ`-abstraction, i.e., using the syntax ```text λ x → f x. ``` Informally, we also use the notation `x ↦ f x` for the assignment of values of a dependent function `f`. The type of dependent function `(x : A) → B x` is built in to the kernel of Agda, and doesn't need to be introduced by us. The purpose of this file is to record some properties of dependent function types. ## Definitions ### The structure of a span on a family of types on a dependent function type ```agda module _ {l1 l2 : Level} {A : UU l1} (B : A → UU l2) where span-type-family-Π : span-type-family (l1 ⊔ l2) B pr1 span-type-family-Π = (x : A) → B x pr2 span-type-family-Π x f = f x ``` ## Properties ### Dependent function types satisfy the universal property of dependent function types ```agda module _ {l1 l2 : Level} {A : UU l1} (B : A → UU l2) where abstract universal-property-dependent-function-types-Π : universal-property-dependent-function-types (span-type-family-Π B) universal-property-dependent-function-types-Π T = is-equiv-swap-Π ``` ### Dependent function types are terminal spans on families of types ```agda module _ {l1 l2 : Level} {A : UU l1} (B : A → UU l2) where abstract is-terminal-span-type-family-Π : is-terminal-span-type-family (span-type-family-Π B) is-terminal-span-type-family-Π = is-terminal-universal-property-dependent-function-types ( span-type-family-Π B) ( universal-property-dependent-function-types-Π B) ```