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

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

r""" 

Division rings 

""" 

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

# Copyright (C) 2008 Teresa Gomez-Diaz (CNRS) <Teresa.Gomez-Diaz@univ-mlv.fr> 

# 

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

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

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

 

from sage.misc.lazy_import import LazyImport 

from sage.categories.category_with_axiom import CategoryWithAxiom 

from sage.categories.rings import Rings 

 

class DivisionRings(CategoryWithAxiom): 

""" 

The category of division rings 

 

A division ring (or skew field) is a not necessarily commutative 

ring where all non-zero elements have multiplicative inverses 

 

EXAMPLES:: 

 

sage: DivisionRings() 

Category of division rings 

sage: DivisionRings().super_categories() 

[Category of domains] 

 

TESTS:: 

 

sage: TestSuite(DivisionRings()).run() 

""" 

 

# This information could be deduced from the name. It's set here 

# just to get ``division rings`` for the name of the objects of 

# this category and not ``no zero divisors division rings``. See 

# :meth:`Category_with_axiom._repr_object_names` and the ``named`` 

# option of :meth:`Category_with_axiom._without_axioms 

_base_category_class_and_axiom = (Rings, "Division") 

 

def extra_super_categories(self): 

r""" 

Return the :class:`Domains` category. 

 

This method specifies that a division ring has no zero 

divisors, i.e. is a domain. 

 

.. SEEALSO:: 

 

The :ref:`axioms-deduction-rules` section in the 

documentation of axioms 

 

EXAMPLES: 

 

sage: DivisionRings().extra_super_categories() 

(Category of domains,) 

sage: "NoZeroDivisors" in DivisionRings().axioms() 

True 

""" 

return (Rings().NoZeroDivisors(),) 

 

Commutative = LazyImport('sage.categories.fields', 'Fields', at_startup=True) 

 

def Finite_extra_super_categories(self): 

r""" 

Return extraneous super categories for ``DivisionRings().Finite()``. 

 

EXAMPLES: 

 

Any field is a division ring:: 

 

sage: Fields().is_subcategory(DivisionRings()) 

True 

 

This methods specifies that, by Weddeburn theorem, the 

reciprocal holds in the finite case: a finite division ring is 

commutative and thus a field:: 

 

sage: DivisionRings().Finite_extra_super_categories() 

(Category of commutative magmas,) 

sage: DivisionRings().Finite() 

Category of finite enumerated fields 

 

.. WARNING:: 

 

This is not implemented in 

``DivisionRings.Finite.extra_super_categories`` because 

the categories of finite division rings and of finite 

fields coincide. See the section 

:ref:`axioms-deduction-rules` in the documentation of 

axioms. 

 

TESTS:: 

 

sage: DivisionRings().Finite() is Fields().Finite() 

True 

 

This works also for subcategories:: 

 

sage: class Foo(Category): 

....: def super_categories(self): return [DivisionRings()] 

sage: Foo().Finite().is_subcategory(Fields()) 

True 

""" 

from sage.categories.magmas import Magmas 

return (Magmas().Commutative(),) 

 

class ParentMethods: 

pass 

 

class ElementMethods: 

pass