general.hpp File Reference

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.

Basic notions
  • There are the two representations, by pre-categories and by hom-sets.
  • 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]:
    1. O is a (Maxima) set.
    2. mor(x,y) for two objects x,y is a (Maxima) set.
    3. 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.
    4. 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 precategory-representation the homsets could be added, and for the homset-representation dom and cod.
  • Instead of test-predicates we have "check-predicates", which for example for given composable morphisms check associativity and identity.
  • "scat" for small categories via homsets, "lcat" and "elcat" for large resp. extralarge categories via homsets.
  • "cat_p, lcat_p, elcat_p" for the precategory-versions.
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 set-relations 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?
  • 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 set-maps.
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.