# The action on identifications of functions ```agda module foundation.action-on-identifications-functions where ``` <details><summary>Imports</summary> ```agda open import foundation.universe-levels open import foundation-core.constant-maps open import foundation-core.function-types open import foundation-core.identity-types ``` </details> ## Idea Any function `f : A → B` preserves [identifications](foundation-core.identity-types.md), in the sense that it maps identifications `p : x = y` in `A` to an identification `ap f p : f x = f y` in `B`. This action on identifications can be thought of as the functoriality of identity types. ## Definition ### The functorial action of functions on identity types ```agda ap : {l1 l2 : Level} {A : UU l1} {B : UU l2} (f : A → B) {x y : A} → x = y → (f x) = (f y) ap f refl = refl ``` ## Properties ### The identity function acts trivially on identifications ```agda ap-id : {l : Level} {A : UU l} {x y : A} (p : x = y) → (ap id p) = p ap-id refl = refl ``` ### The action on identifications of a composite function is the composite of the actions ```agda ap-comp : {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} {C : UU l3} (g : B → C) (f : A → B) {x y : A} (p : x = y) → (ap (g ∘ f) p) = ((ap g ∘ ap f) p) ap-comp g f refl = refl ap-comp-assoc : {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {C : UU l3} {D : UU l4} (h : C → D) (g : B → C) (f : A → B) {x y : A} (p : x = y) → ap (h ∘ g) (ap f p) = ap h (ap (g ∘ f) p) ap-comp-assoc h g f refl = refl ``` ### The action on identifications of any map preserves `refl` ```agda ap-refl : {l1 l2 : Level} {A : UU l1} {B : UU l2} (f : A → B) (x : A) → (ap f (refl {x = x})) = refl ap-refl f x = refl ``` ### The action on identifications of any map preserves concatenation of identifications ```agda module _ {l1 l2 : Level} {A : UU l1} {B : UU l2} (f : A → B) where ap-concat : {x y z : A} (p : x = y) (q : y = z) → ap f (p ∙ q) = ap f p ∙ ap f q ap-concat refl q = refl compute-right-refl-ap-concat : {x y : A} (p : x = y) → ap-concat p refl = ap (ap f) right-unit ∙ inv right-unit compute-right-refl-ap-concat refl = refl ``` ### The action on identifications of any map preserves inverses ```agda ap-inv : {l1 l2 : Level} {A : UU l1} {B : UU l2} (f : A → B) {x y : A} (p : x = y) → ap f (inv p) = inv (ap f p) ap-inv f refl = refl ``` ### The action on identifications of a constant map is constant ```agda ap-const : {l1 l2 : Level} {A : UU l1} {B : UU l2} (b : B) {x y : A} (p : x = y) → (ap (const A b) p) = refl ap-const b refl = refl ``` ## See also - [Action of functions on higher identifications](foundation.action-on-higher-identifications-functions.md). - [Action of binary functions on identifications](foundation.action-on-identifications-binary-functions.md). - [Action of dependent functions on identifications](foundation.action-on-identifications-dependent-functions.md).