Plans in general for categories in Maxima/Lisp.
More...
Go to the source code of this file.
Detailed Description
Plans in general for categories in Maxima/Lisp.
 Todo:
 Connections
 Todo:
 Basic notions

There are the two representations, by precategories and by homsets.

Sets are either implicitly or explicitly given, and their elements have a concrete representation or an abstract one (require an equality predicate). See "Abstract representation of structures" in ComputerAlgebra/Algebra/Lisp/plans/general.hpp.

A "small category as precategory" is a triple [[obj,mor,d,c],compo,id] such that [obj,mor,d,c] is a precategory (compare "Graph concepts" in ComputerAlgebra/Graphs/Lisp/plans/Basic.hpp).

A "large category as precategory" has obj, mor only implicitely given, and objects have an abstract representation, but morphisms have a concrete representation.

While for a "extralarge category as precategory" the morphisms have an abstract representation.

A "small category via homsets" is a quadruple [O,mor,compo,id]:

O is a (Maxima) set.

mor(x,y) for two objects x,y is a (Maxima) set.

compo(x,y,z) yields a binary function com(g,f), where f: x > y and g: y > z, which in turn produces a morphism from x > z.

id(x) yields a morphism x > x.
For a "large category via homsets" all sets are implicitly given, and objects have an abstract representation, but morphisms have a concrete representation.

And for an "extralarge category via homsets" also morphisms have an abstract representation.

It would be good if for the precategoryrepresentation the homsets could be added, and for the homsetrepresentation dom and cod.

Instead of testpredicates we have "checkpredicates", which for example for given composable morphisms check associativity and identity.
 Todo:
 Abbreviations

"scat" for small categories via homsets, "lcat" and "elcat" for large resp. extralarge categories via homsets.

"cat_p, lcat_p, elcat_p" for the precategoryversions.
 Todo:
 Concrete categories

The category of sets, Csets_sm, is a large category via homsets, with set maps as morphisms.

While Csets_mp is an extralarge category with maps as morphisms.

"Cset2" denotes similarly the category of pair of sets.

And "Csetp" has pointed sets as objects.

Crel_sr is a large category with sets as objects, and setrelations as morphisms, while Crel_p uses binary predicates.

For a "concrete category" over a given category, only the forgetful functor on the objects needs to be specified, while as morphisms we always use the ones in the given category, and only a selection criterion needs to be provided?
 Todo:
 Functors

A functor is a pair of maps, where normally maps are functions (mp).

So the category Cscat of small categories is a large category (via homsets), and Cscat_p is also a large category via homsets.

Given a functor F, via obj(F) we obtain the object map, and via mor(F) we obtain the morphism map; but since functors are pairs, also F[1] and F[2] can be used.

For small categories we might also consider maps as setmaps.
 Todo:
 Natural transformations

Given functors F, G, a natural transformation eta: F > G is a map, which takes objects X as arguments, and eta(X) is a morphism from F(X) to G(X).
Definition in file general.hpp.