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
.
@[class]
- 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 := _}
@[simp]
theorem
equiv_functor.map_equiv_apply
(f : Type u₀ → Type u₁)
[equiv_functor f]
{α β : Type u₀}
(e : α ≃ β)
(x : f α) :
⇑(equiv_functor.map_equiv f e) x = equiv_functor.map e x
@[simp]
theorem
equiv_functor.map_equiv_symm_apply
(f : Type u₀ → Type u₁)
[equiv_functor f]
{α β : Type u₀}
(e : α ≃ β)
(y : f β) :
⇑((equiv_functor.map_equiv f e).symm) y = equiv_functor.map e.symm y
@[instance]
Equations
- equiv_functor.of_is_lawful_functor f = {map := λ (α β : Type u₀) (e : α ≃ β), functor.map ⇑e, map_refl' := _, map_trans' := _}