Module docstring
{"# The category Type.
In this section we set up the theory so that Lean's types and functions between them
can be viewed as a LargeCategory in our framework.
Lean can not transparently view a function as a morphism in this category, and needs a hint in
order to be able to type check. We provide the abbreviation asHom f to guide type checking,
as well as a corresponding notation ↾ f. (Entered as \\upr.)
We provide various simplification lemmas for functors and natural transformations valued in Type.
We define uliftFunctor, from Type u to Type (max u v), and show that it is fully faithful
(but not, of course, essentially surjective).
We prove some basic facts about the category Type:
* epimorphisms are surjections and monomorphisms are injections,
* Iso is both Iso and Equiv to Equiv (at least within a fixed universe),
* every type level IsLawfulFunctor gives a categorical functor Type ⥤ Type
(the corresponding fact about monads is in Mathlib/CategoryTheory/Monad/Types.lean).
"}