This repository has been archived by the owner on Jan 30, 2023. It is now read-only.
-
-
Notifications
You must be signed in to change notification settings - Fork 7
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'public/categories/topological_metric_spaces-18175' of t…
…rac.sagemath.org:sage into public/categories/topological_metric_spaces-18175 Conflicts: src/sage/categories/groups.py
- Loading branch information
Showing
15 changed files
with
959 additions
and
64 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,162 @@ | ||
r""" | ||
CW Complexes | ||
""" | ||
#***************************************************************************** | ||
# Copyright (C) 2015 Travis Scrimshaw <tscrim at ucdavis.edu> | ||
# | ||
# Distributed under the terms of the GNU General Public License (GPL) | ||
# http://www.gnu.org/licenses/ | ||
#****************************************************************************** | ||
|
||
from sage.misc.abstract_method import abstract_method | ||
from sage.misc.cachefunc import cached_method | ||
from sage.categories.category_singleton import Category_singleton | ||
from sage.categories.category_with_axiom import CategoryWithAxiom | ||
from sage.categories.sets_cat import Sets | ||
|
||
class CWComplexes(Category_singleton): | ||
r""" | ||
The category of CW complexes. | ||
A CW complex is a Closure-finite cell complex in the Weak toplogy. | ||
REFERENCES: | ||
- :wikipedia:`CW_complex` | ||
EXAMPLES:: | ||
sage: from sage.categories.cw_complexes import CWComplexes | ||
sage: C = CWComplexes(); C | ||
Category of CW complexes | ||
TESTS:: | ||
sage: TestSuite(C).run() | ||
""" | ||
@cached_method | ||
def super_categories(self): | ||
""" | ||
EXAMPLES:: | ||
sage: from sage.categories.cw_complexes import CWComplexes | ||
sage: CWComplexes().super_categories() | ||
[Category of topological spaces] | ||
""" | ||
return [Sets().Topological()] | ||
|
||
def _repr_object_names(self): | ||
""" | ||
EXAMPLES:: | ||
sage: from sage.categories.cw_complexes import CWComplexes | ||
sage: CWComplexes() | ||
Category of CW complexes | ||
""" | ||
return "CW complexes" | ||
|
||
class SubcategoryMethods: | ||
@cached_method | ||
def Connected(self): | ||
""" | ||
Return the full subcategory of the connected objects of ``self``. | ||
EXAMPLES:: | ||
sage: from sage.categories.cw_complexes import CWComplexes | ||
sage: CWComplexes().Connected() | ||
Category of connected CW complexes | ||
TESTS:: | ||
sage: TestSuite(CWComplexes().Connected()).run() | ||
sage: CWComplexes().Connected.__module__ | ||
'sage.categories.cw_complexes' | ||
""" | ||
return self._with_axiom('Connected') | ||
|
||
@cached_method | ||
def FiniteDimensional(self): | ||
""" | ||
Return the full subcategory of the finite dimensional | ||
objects of ``self``. | ||
EXAMPLES:: | ||
sage: from sage.categories.cw_complexes import CWComplexes | ||
sage: C = CWComplexes().FiniteDimensional(); C | ||
Category of finite dimensional CW complexes | ||
TESTS:: | ||
sage: from sage.categories.cw_complexes import CWComplexes | ||
sage: C = CWComplexes().FiniteDimensional() | ||
sage: TestSuite(C).run() | ||
sage: CWComplexes().Connected().FiniteDimensional.__module__ | ||
'sage.categories.cw_complexes' | ||
""" | ||
return self._with_axiom('FiniteDimensional') | ||
|
||
class Connected(CategoryWithAxiom): | ||
""" | ||
The category of connected CW complexes. | ||
""" | ||
|
||
class FiniteDimensional(CategoryWithAxiom): | ||
""" | ||
Category of finite dimensional CW complexes. | ||
""" | ||
|
||
class Finite(CategoryWithAxiom): | ||
""" | ||
Category of finite CW complexes. | ||
""" | ||
def extra_super_categories(self): | ||
""" | ||
Return the extra super categories of ``self``. | ||
A finite CW complex is a compact finite-dimensional CW complex. | ||
""" | ||
return [CWComplexes().FiniteDimensional(), Sets().Topological().Compact()] | ||
|
||
class ParentMethods: | ||
@cached_method | ||
def dimension(self): | ||
""" | ||
Return the dimension of ``self``. | ||
""" | ||
return max(c.dimension() for c in self.cells()) | ||
|
||
def Compact_extra_super_categories(self): | ||
""" | ||
Return extraneous super categories for ``CWComplexes().Compact()``. | ||
A compact CW complex is finite, see Proposition A.1 in [Hat]_. | ||
.. TODO:: | ||
Fix the name of finite CW complexes. | ||
EXAMPLES:: | ||
sage: from sage.categories.cw_complexes import CWComplexes | ||
sage: CWComplexes().Compact() | ||
Category of finite finite dimensional CW complexes | ||
sage: CWComplexes().Compact() is CWComplexes().Finite() | ||
True | ||
""" | ||
return (Sets().Finite(),) | ||
|
||
class ParentMethods: | ||
@abstract_method | ||
def dimension(self): | ||
""" | ||
Return the dimension of ``self``. | ||
""" | ||
|
||
@abstract_method(optional=True) | ||
def cells(self): | ||
""" | ||
Return the cells of ``self``. | ||
""" | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
""" | ||
Graphs | ||
""" | ||
#***************************************************************************** | ||
# Copyright (C) 2015 Travis Scrimshaw <tscrim at ucdavis.edu> | ||
# | ||
# Distributed under the terms of the GNU General Public License (GPL) | ||
# http://www.gnu.org/licenses/ | ||
#****************************************************************************** | ||
|
||
#from sage.misc.abstract_method import abstract_method | ||
from sage.misc.cachefunc import cached_method | ||
from sage.categories.category_singleton import Category_singleton | ||
from sage.categories.simplicial_complexes import SimplicialComplexes | ||
|
||
class Graphs(Category_singleton): | ||
r""" | ||
The category of graphs. | ||
EXAMPLES:: | ||
sage: from sage.categories.graphs import Graphs | ||
sage: C = Graphs(); C | ||
Category of graphs | ||
TESTS:: | ||
sage: TestSuite(C).run() | ||
""" | ||
@cached_method | ||
def super_categories(self): | ||
""" | ||
EXAMPLES:: | ||
sage: from sage.categories.graphs import Graphs | ||
sage: Graphs().super_categories() | ||
[Category of simplicial complexes] | ||
""" | ||
return [SimplicialComplexes()] | ||
|
||
class ParentMethods: | ||
def dimension(self): | ||
""" | ||
Return the dimension of ``self`` as a CW complex. | ||
""" | ||
if self.edges(): | ||
return 1 | ||
return 0 | ||
|
||
def facets(self): | ||
""" | ||
Return the facets of ``self``. | ||
""" | ||
return self.edges() | ||
|
||
def faces(self): | ||
""" | ||
Return the faces of ``self``. | ||
""" | ||
return set(self.edges()).union(self.vertices()) | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,71 @@ | ||
r""" | ||
Lie Groups | ||
""" | ||
#***************************************************************************** | ||
# Copyright (C) 2015 Travis Scrimshaw <tscrim at ucdavis.edu> | ||
# | ||
# Distributed under the terms of the GNU General Public License (GPL) | ||
# http://www.gnu.org/licenses/ | ||
#****************************************************************************** | ||
|
||
#from sage.misc.abstract_method import abstract_method | ||
from sage.misc.cachefunc import cached_method | ||
from sage.categories.category_singleton import Category_singleton | ||
from sage.categories.groups import Groups | ||
from sage.categories.manifolds import Manifolds | ||
|
||
class LieGroups(Category_singleton): | ||
r""" | ||
The category of Lie groups. | ||
A Lie group is a topological group with a smooth manifold structure. | ||
EXAMPLES:: | ||
sage: from sage.categories.lie_groups import LieGroups | ||
sage: C = LieGroups(); C | ||
Category of Lie groups | ||
TESTS:: | ||
sage: TestSuite(C).run() | ||
""" | ||
@cached_method | ||
def super_categories(self): | ||
""" | ||
EXAMPLES:: | ||
sage: from sage.categories.lie_groups import LieGroups | ||
sage: LieGroups().super_categories() | ||
[Category of topological groups, Category of smooth manifolds] | ||
""" | ||
return [Groups().Topological(), Manifolds().Smooth()] | ||
|
||
def additional_structure(self): | ||
r""" | ||
Return ``None``. | ||
Indeed, the category of Lie groups defines no new | ||
structure: a morphism of topological spaces and of smooth | ||
manifolds is a morphism as Lie groups. | ||
.. SEEALSO:: :meth:`Category.additional_structure` | ||
EXAMPLES:: | ||
sage: from sage.categories.lie_groups import LieGroups | ||
sage: LieGroups().additional_structure() | ||
""" | ||
return None | ||
|
||
# Because Lie is a name that deserves to be capitalized | ||
def _repr_object_names(self): | ||
""" | ||
EXAMPLES:: | ||
sage: from sage.categories.lie_groups import LieGroups | ||
sage: LieGroups() # indirect doctest | ||
Category of Lie groups | ||
""" | ||
return "Lie groups" | ||
|
Oops, something went wrong.