Functions functorial with respect to equivalences #
An equiv_functor
is a function from Type → Type
equipped with the additional data of
coherently mapping equivalences to equivalences.
In categorical language, it is an endofunctor of the "core" of the category Type
.
- map : Π {α β : Type ?}, α ≃ β → f α → f β
- map_refl' : (∀ (α : Type ?), equiv_functor.map (equiv.refl α) = id) . "obviously"
- map_trans' : (∀ {α β γ : Type ?} (k : α ≃ β) (h : β ≃ γ), equiv_functor.map (k.trans h) = equiv_functor.map h ∘ equiv_functor.map k) . "obviously"
An equiv_functor
is only functorial with respect to equivalences.
To construct an equiv_functor
, it suffices to supply just the function f α → f β
from
an equivalence α ≃ β
, and then prove the functor laws. It's then a consequence that
this function is part of an equivalence, provided by equiv_functor.map_equiv
.
An equiv_functor
in fact takes every equiv to an equiv.
Equations
- equiv_functor.map_equiv f e = {to_fun := equiv_functor.map e, inv_fun := equiv_functor.map e.symm, left_inv := _, right_inv := _}
The composition of map_equiv
s is carried over the equiv_functor
.
For plain functor
s, this lemma is named map_map
when applied
or map_comp_map
when not applied.
Equations
- equiv_functor.of_is_lawful_functor f = {map := λ (α β : Type u₀) (e : α ≃ β), functor.map ⇑e, map_refl' := _, map_trans' := _}