Skip to content

Commit

Permalink
Trac #28078: braid groups are infinite
Browse files Browse the repository at this point in the history
unless they have one strand

URL: https://trac.sagemath.org/28078
Reported by: chapoton
Ticket author(s): Travis Scrimshaw
Reviewer(s): Travis Scrimshaw
  • Loading branch information
Release Manager authored and vbraun committed Jul 5, 2019
2 parents 19d015d + 537b1e9 commit d958545
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 14 deletions.
29 changes: 18 additions & 11 deletions src/sage/groups/braid.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,26 +62,28 @@
#
# The full text of the GPL is available at:
#
# http://www.gnu.org/licenses/
# https://www.gnu.org/licenses/
##############################################################################

import six
from sage.rings.integer import Integer
from sage.rings.integer_ring import IntegerRing
from sage.misc.lazy_attribute import lazy_attribute
from sage.misc.cachefunc import cached_method
from sage.categories.groups import Groups
from sage.groups.free_group import FreeGroup, is_FreeGroup
from sage.rings.polynomial.laurent_polynomial_ring import LaurentPolynomialRing
from sage.matrix.constructor import identity_matrix, matrix
from sage.combinat.permutation import Permutations
from sage.categories.action import Action
from sage.sets.set import Set
from sage.groups.finitely_presented import FinitelyPresentedGroup, FinitelyPresentedGroupElement
from sage.groups.finitely_presented import FinitelyPresentedGroup
from sage.groups.artin import FiniteTypeArtinGroup, FiniteTypeArtinGroupElement
from sage.misc.package import PackageNotFoundError
from sage.structure.richcmp import richcmp, rich_to_bool
from sage.misc.superseded import deprecated_function_alias


class Braid(FiniteTypeArtinGroupElement):
"""
An element of a braid group.
Expand Down Expand Up @@ -1019,12 +1021,11 @@ def _left_normal_form_coxeter(self):
Remove this method and use the default one from
:meth:`sage.groups.artin.FiniteTypeArtinGroupElement.left_normal_form`.
"""
n = self.parent().strands()
delta = 0
Delta = self.parent()._coxeter_group.long_element()
sr = self.parent()._coxeter_group.simple_reflections()
l = self.Tietze()
if l == ():
if not l:
return (0,)
form = []
for i in l:
Expand Down Expand Up @@ -1430,7 +1431,8 @@ def __init__(self, names):
sage: B1
Braid group on 5 strands
sage: TestSuite(B1).run()
sage: B1.category()
Category of infinite groups
Check that :trac:`14081` is fixed::
Expand All @@ -1441,10 +1443,10 @@ def __init__(self, names):
Check that :trac:`15505` is fixed::
sage: B=BraidGroup(4)
sage: B = BraidGroup(4)
sage: B.relations()
(s0*s1*s0*s1^-1*s0^-1*s1^-1, s0*s2*s0^-1*s2^-1, s1*s2*s1*s2^-1*s1^-1*s2^-1)
sage: B=BraidGroup('a,b,c,d,e,f')
sage: B = BraidGroup('a,b,c,d,e,f')
sage: B.relations()
(a*b*a*b^-1*a^-1*b^-1,
a*c*a^-1*c^-1,
Expand Down Expand Up @@ -1473,7 +1475,12 @@ def __init__(self, names):
rels.append(free_group([i, i+1, i, -i-1, -i, -i-1]))
for j in range(i+2, n+1):
rels.append(free_group([i, j, -i, -j]))
FinitelyPresentedGroup.__init__(self, free_group, tuple(rels))
if n:
cat = Groups().Infinite()
else:
cat = Groups().Finite()
FinitelyPresentedGroup.__init__(self, free_group, tuple(rels),
category=cat)
self._nstrands = n+1
self._coxeter_group = Permutations(self._nstrands)

Expand Down Expand Up @@ -1583,7 +1590,7 @@ def an_element(self):
EXAMPLES::
sage: B=BraidGroup(2)
sage: B = BraidGroup(2)
sage: B.an_element()
s
"""
Expand Down Expand Up @@ -1675,7 +1682,7 @@ def _LKB_matrix_(self, braid, variab):
TESTS::
sage: B=BraidGroup(3)
sage: B = BraidGroup(3)
sage: B._LKB_matrix_((2, 1, 2), 'x, y')
[ 0 -x^4*y + x^3*y -x^4*y]
[ 0 -x^3*y 0]
Expand Down Expand Up @@ -2199,7 +2206,7 @@ def BraidGroup(n=None, names='s'):
or the number of generators and the prefix of the names to be
given. The default prefix is ``'s'`` ::
sage: B=BraidGroup(3); B.generators()
sage: B = BraidGroup(3); B.generators()
(s0, s1)
sage: BraidGroup(3, 'g').generators()
(g0, g1)
Expand Down
7 changes: 4 additions & 3 deletions src/sage/groups/finitely_presented.py
Original file line number Diff line number Diff line change
Expand Up @@ -742,6 +742,7 @@ def make_confluent(self):
except ValueError:
raise ValueError('could not make the system confluent')


class FinitelyPresentedGroup(GroupMixinLibGAP, UniqueRepresentation,
Group, ParentLibGAP):
"""
Expand Down Expand Up @@ -783,7 +784,7 @@ class FinitelyPresentedGroup(GroupMixinLibGAP, UniqueRepresentation,
"""
Element = FinitelyPresentedGroupElement

def __init__(self, free_group, relations):
def __init__(self, free_group, relations, category=None):
"""
The Python constructor.
Expand All @@ -808,9 +809,9 @@ def __init__(self, free_group, relations):
self._free_group = free_group
self._relations = relations
self._assign_names(free_group.variable_names())
parent_gap = free_group.gap() / libgap([ rel.gap() for rel in relations])
parent_gap = free_group.gap() / libgap([rel.gap() for rel in relations])
ParentLibGAP.__init__(self, parent_gap)
Group.__init__(self)
Group.__init__(self, category=category)

def _repr_(self):
"""
Expand Down

0 comments on commit d958545

Please sign in to comment.