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