A library to provide basic mathematical notions to C++. The main purpose is to establish a fixed interface of each mathematical construct with a C++ concept. The defined concepts strictly follow definitions on Wikipedia hopefully to the extend that no additional documentation is needed.
There should be inheritance structure `Vec : Set : Cat` `Vec::Object : Set::Object : Cat::Object` `Vec::Morphism : Set::Morphism : Cat::Morphism` which would give us automatically forgetful functors `Vec -> Set -> Cat`
More general for any category `A` and `B` if we implement inheritance structure `B : A` `B::Object : A::Object` `B::Morphism : B::Morphism` then we get forgetful functor `B -> A` for free
Potentially automatically generate diagrams
There should be a thorough check of an object or morphism implementation. Are all the necessary functions implemented? Are they properly marked as const? Do they follow correct inheritance structure?