Hide keyboard shortcuts

Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

""" 

Isomorphic Objects Functorial Construction 

 

AUTHORS: 

 

- Nicolas M. Thiery (2010): initial revision 

""" 

#***************************************************************************** 

# Copyright (C) 2009 Nicolas M. Thiery <nthiery at users.sf.net> 

# 

# Distributed under the terms of the GNU General Public License (GPL) 

# http://www.gnu.org/licenses/ 

#***************************************************************************** 

 

from sage.categories.category import Category 

from sage.categories.covariant_functorial_construction import RegressiveCovariantConstructionCategory 

 

class IsomorphicObjectsCategory(RegressiveCovariantConstructionCategory): 

 

_functor_category = "IsomorphicObjects" 

 

@classmethod 

def default_super_categories(cls, category): 

""" 

Returns the default super categories of ``category.IsomorphicObjects()`` 

 

Mathematical meaning: if `A` is the image of `B` by an 

isomorphism in the category `C`, then `A` is both a subobject 

of `B` and a quotient of `B` in the category `C`. 

 

INPUT: 

 

- ``cls`` -- the class ``IsomorphicObjectsCategory`` 

- ``category`` -- a category `Cat` 

 

OUTPUT: a (join) category 

 

In practice, this returns ``category.Subobjects()`` and 

``category.Quotients()``, joined together with the result of the method 

:meth:`RegressiveCovariantConstructionCategory.default_super_categories() <sage.categories.covariant_functorial_construction.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 `G'` by a group 

isomorphism is simultaneously a subgroup of `G`, a subquotient 

of `G`, a group by itself, and the image of `G` 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 

""" 

return Category.join([category.Subobjects(), category.Quotients(), 

super(IsomorphicObjectsCategory, cls).default_super_categories(category)])