notation for surjective functions
Add some basic isomorphisms.
Add properties of weak-equivalences.
Refactor dependencies.
Ensure all modules are compiled without K.
Naming convention.
Simplify overloading of category operators.
Clean up category index.
Definition of monoid.
Refactor Functor into graph morphisms + IsFunctor class.
Define monoid morphism.
Use graph in the definition of free category.
Rename List to Paths.
Create core module for nat.
Prove properties of natural numbers.
Add additive and multiplicative mononids for nat.
Add algebra to the index.