AUTHORS:
- Nicolas M. Thiery (2010): initial revision
Given a concrete category As() (i.e. a subcategory of Sets()), As().IsomorphicObjects() returns the category of objects of As() endowed with a distinguished description as the image of some other object of As() by an isomorphism.
See Subquotients() for background.
EXAMPLES:
sage: C = Sets().IsomorphicObjects(); C
Category of isomorphic objects of sets
sage: C.super_categories()
[Category of subobjects of sets, Category of quotients of sets]
sage: C.all_super_categories()
[Category of isomorphic objects of sets,
Category of subobjects of sets,
Category of quotients of sets,
Category of subquotients of sets,
Category of sets,
Category of sets with partial maps,
Category of objects]
Unless something specific about isomorphic objects is implemented for this category, one actually get an optimized super category:
sage: C = Semigroups().IsomorphicObjects(); C
Join of Category of quotients of semigroups and Category of isomorphic objects of sets
TESTS:
sage: TestSuite(Sets().IsomorphicObjects()).run()
Bases: sage.categories.covariant_functorial_construction.RegressiveCovariantConstructionCategory
Returns the default super categories of category.IsomorphicObjects()
Mathematical meaning: if is the image of by an isomorphism in the category , then is both a subobject of and a quotient of in the category .
INPUT:
- cls – the class IsomorphicObjectsCategory
- category – a category
OUTPUT: a (join) category
In practice, this returns category.Subobjects() and category.Quotients(), joined together with the result of the method RegressiveCovariantConstructionCategory.default_super_categories() (that is the join of category and cat.IsomorphicObjects() for each cat in the super categories of category).
EXAMPLES:
Consider category=Groups(), which has cat=Monoids() as super category. Then, the image of a group by a group isomorphism is simultaneously a subgroup of , a subquotient of , a group by itself, and the image of by a monoid isomorphism:
sage: Groups().IsomorphicObjects().super_categories()
[Category of groups,
Category of subquotients of monoids,
Category of quotients of semigroups,
Category of isomorphic objects of sets]
Mind the last item above: there is indeed currently nothing implemented about isomorphic objects of monoids.
This resulted from the following call:
sage: sage.categories.isomorphic_objects.IsomorphicObjectsCategory.default_super_categories(Groups())
Join of Category of groups and
Category of subquotients of monoids and
Category of quotients of semigroups and
Category of isomorphic objects of sets