Functions functorial with respect to equivalences #
An EquivFunctor 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.
An EquivFunctor is only functorial with respect to equivalences.
To construct an EquivFunctor, 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 EquivFunctor.mapEquiv.
The action of
fon isomorphisms.- map_refl' : ∀ (α : Type u₀), EquivFunctor.map (Equiv.refl α) = id
mapoffpreserves the identity morphism. - map_trans' : ∀ {α β γ : Type u₀} (k : α ≃ β) (h : β ≃ γ), EquivFunctor.map (k.trans h) = EquivFunctor.map h ∘ EquivFunctor.map k
mapis functorial on equivalences.
Instances
map of f preserves the identity morphism.
map is functorial on equivalences.
An EquivFunctor in fact takes every equiv to an equiv.
Equations
- EquivFunctor.mapEquiv f e = { toFun := EquivFunctor.map e, invFun := EquivFunctor.map e.symm, left_inv := ⋯, right_inv := ⋯ }
Instances For
The composition of mapEquivs is carried over the EquivFunctor.
For plain Functors, this lemma is named map_map when applied
or map_comp_map when not applied.
Equations
- EquivFunctor.ofLawfulFunctor f = { map := fun {α β : Type u₀} (e : α ≃ β) => Functor.map ⇑e, map_refl' := ⋯, map_trans' := ⋯ }