class sage.categories.objects.Objects#

Bases: Category_singleton

The category of all objects the basic category


sage: Objects()
Category of objects
sage: Objects().super_categories()
class ParentMethods#

Bases: object

Methods for all category objects

class SubcategoryMethods#

Bases: object


Return the category of endsets between objects of this category.


sage: Sets().Endsets()
Category of endsets of sets

sage: Rings().Endsets()
Category of endsets of unital magmas and additive unital additive magmas

See also


Return the category of homsets between objects of this category.


sage: Sets().Homsets()
Category of homsets of sets

sage: Rings().Homsets()
Category of homsets of unital magmas and additive unital additive magmas



Information, code, documentation, and tests about the category of homsets of a category Cs should go in the nested class Cs.Homsets. They will then be made available to homsets of any subcategory of Cs.

Assume, for example, that homsets of Cs are Cs themselves. This information can be implemented in the method Cs.Homsets.extra_super_categories to make Cs.Homsets() a subcategory of Cs().

Methods about the homsets themselves should go in the nested class Cs.Homsets.ParentMethods.

Methods about the morphisms can go in the nested class Cs.Homsets.ElementMethods. However it’s generally preferable to put them in the nested class Cs.MorphimMethods; indeed they will then apply to morphisms of all subcategories of Cs, and not only full subcategories.

See also



  • Design a mechanism to specify that an axiom is compatible with taking subsets. Examples: Finite, Associative, Commutative (when meaningful), but not Infinite nor Unital.

  • Design a mechanism to specify that, when \(B\) is a subcategory of \(A\), a \(B\)-homset is a subset of the corresponding \(A\) homset. And use it to recover all the relevant axioms from homsets in super categories.

  • For instances of redundant code due to this missing feature, see:

    • AdditiveMonoids.Homsets.extra_super_categories()

    • HomsetsCategory.extra_super_categories() (slightly different nature)

    • plus plenty of spots where this is not implemented.


Return None

Indeed, by convention, the category of objects defines no additional structure.


sage: Objects().additional_structure()


sage: Objects().super_categories()