Ask Your Question

danieleC's profile - activity

2021-08-14 22:52:17 +0100 received badge  Popular Question (source)
2020-12-23 17:36:25 +0100 received badge  Notable Question (source)
2020-04-21 17:50:38 +0100 received badge  Popular Question (source)
2019-09-07 13:42:37 +0100 commented answer Finitely presented group simplification

Sorry for the late reply, it seems like your answer works perfectly, thanks!!

2019-08-30 09:54:20 +0100 received badge  Nice Question (source)
2019-08-28 17:26:11 +0100 commented answer Finitely presented group simplification

It might be that the previous example I gave was wrong (still unsure), but the following one has 17 elements (so, it's necessarily Z/17Z), but still it can't seem to be reducible. <x0, x5 | x5*x0*x5*x0^-1*x5^-1*x0^-1, x0^-1*x5^-1*x0^-1*(x0^-1*x5^-3)^3*x0^-1*x5^-1>

2019-08-28 12:25:45 +0100 asked a question Finitely presented group simplification

Hi! I have a bunch of finitely presented groups, with many generators and relations. I know that all of these are in fact cyclic groups, but many times using the "simplified()" function, I get a simpler presentation with 2 generators, rather than only one. The following is one example:

 G.<x0,x5> = FreeGroup()
 H  =G/[(x5^-1*x0)^2*x5^-3, (x0^-1*x5^-1)^2*x0^-2*x5*x0^-1]

H is in fact just Z/27Z. Is there another way to simplify these presentations, in order to get a minimal one? The problem here is that I do not only need to identify the specific group, but also to recover the image of the previous generators in the simplified one (as done by the simplification_isomorphism() function).

2019-07-24 11:30:33 +0100 asked a question Crossings in knot diagram

Hi! Given a plot of a knot, I was wondering if it is possible to obtain the position (within the plot) of its crossings, in order to then add some decorations to the diagram.

2019-05-22 22:55:45 +0100 commented question Formal determinant of symbolic matrix

the question seems something like: how many nonzero terms are there in the determinant, if we don't allow for cancellations?

2019-05-22 22:55:45 +0100 received badge  Commentator
2019-05-22 22:29:15 +0100 commented question Formal determinant of symbolic matrix

the properties asked do not seem to be related to the non-commutativity of variables if I guess correctly

2019-05-22 22:27:53 +0100 commented answer Formal determinant of symbolic matrix

I had a similar problem: one needs to keep track of the non-zero monomials appearing, so if there's cancellations it does not work

2019-05-22 21:25:16 +0100 received badge  Nice Question (source)
2019-05-22 16:32:20 +0100 asked a question Formal determinant of symbolic matrix

I have some sparse symbolic matrices, and want to compute their formal determinant (without cancellation of terms). In other words, if I have the matrix

x,y = var('x,y')
M = Matrix(SR, [[x,y],[x,y]])

I would like the result of


to be xy - xy, rather than just 0. The variables in each monomial are allowed to commute with each other, but on the other hand I would like all monomials containing a 0 to vanish (i.e if in the example above M = Matrix(SR, [[x,0],[x,y]])), then the determinant should be just xy, rather than xy - 0*x). Is there a way to achieve this (without using the expansion of the determinant as permutations, since the dimension of the matrices gets quite big!)? Thanks in advance!

2019-01-12 15:47:54 +0100 commented answer braid closures

Thanks, that works perfectly!

2019-01-11 14:30:27 +0100 received badge  Nice Question (source)
2019-01-11 13:45:51 +0100 asked a question braid closures

Hi! I've noticed that when taking the closure of a braid on $n$ strands, the resulting link is obtained by ignoring any "unused" strand:

B = BraidGroup(3)
print B([1]).components_in_closure(), Link(B([1])).number_of_components()

outputs 2 1, instead of 2 2. In the documentation for the braid group I've read "The behavior of removing unused strands from an element of a braid group may change without notice in the future. Do not rely on this feature."

Is there a workaround that allows to have the same number of components in a braid and in its closure? Note that braids given as an array of generators (as in the example above) are automatically simplified, so closing the braid [2,-2] (which should give the $2$-component unlink) produces the unknot. (In particular, the empty braid on $n$ strands should close to the $n$-component unlink.)

2018-11-24 15:00:00 +0100 received badge  Scholar (source)
2018-11-24 14:59:55 +0100 commented answer Free/Braid groups not working

that worked!! thanks a lot!

2018-11-21 15:34:23 +0100 commented question Free/Braid groups not working

Any chance this could be solved easily? or should I just downgrade both ubuntu and sage?

2018-11-20 20:07:55 +0100 received badge  Nice Question (source)
2018-11-05 15:18:20 +0100 commented question Free/Braid groups not working

Got `Listing... Done

sagemath/bionic,now 8.1-7ubuntu1 amd64 [installed]`"

2018-11-02 14:42:22 +0100 commented question Free/Braid groups not working

Ubuntu 18.04, I am on a university machine, so I have no idea of how it was installed!

2018-11-02 12:05:55 +0100 asked a question Free/Braid groups not working

Hi, I am working with SageMath 8.1, and it seems like "FreeGroup()" (and as a consequence BraidGroup() ) are not working properly. If I write in the notebook

G.<a,b,c> = FreeGroup()

I get the following:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "", line 10, in <module>
exec compile(u'open("","w").write("# -*- coding: utf-8 -*-\\n" + _support_.preparse_worksheet_cell(base64.b64decode("Ry48YSxiLGM+ID0gRnJlZUdyb3VwKCk="),globals())+"\\n"); execfile(os.path.abspath(""))
File "", line 1, in <module>

File "/tmp/tmpFDI_RE/", line 2, in <module>
exec compile(u"G = FreeGroup(names=('a', 'b', 'c',)); (a, b, c,) = G._first_ngens(3)" + '\n', '', 'single')
File "", line 1, in <module>

File "sage/misc/lazy_import.pyx", line 388, in sage.misc.lazy_import.LazyImport.__call__ (build/cythonized/sage/misc/lazy_import.c:4118)
File "/usr/lib/python2.7/dist-packages/sage/groups/", line 648, in FreeGroup
return FreeGroup_class(names)
 File "sage/misc/classcall_metaclass.pyx", line 330, in sage.misc.classcall_metaclass.ClasscallMetaclass.__call__ (build/cythonized/sage/misc/classcall_metaclass.c:1481)
 File "sage/misc/cachefunc.pyx", line 1059, in sage.misc.cachefunc.CachedFunction.__call__ (build/cythonized/sage/misc/cachefunc.c:6162)
  File "/usr/lib/python2.7/dist-packages/sage/structure/", line 1021, in __classcall__
instance = typecall(cls, *args, **options)
 File "sage/misc/classcall_metaclass.pyx", line 497, in sage.misc.classcall_metaclass.typecall (build/cythonized/sage/misc/classcall_metaclass.c:1931)
 File "/usr/lib/python2.7/dist-packages/sage/groups/", line 736, in __init__
libgap_free_group = libgap.FreeGroup(generator_names)
 File "sage/libs/gap/element.pyx", line 2213, in (build/cythonized/sage/libs/gap/element.c:17671)
ValueError: libGAP: Error, FreeGroup: function is not yet defined

Am I doing something wrong? Thanks!

2018-04-12 16:34:59 +0100 commented question connected sum of knots

so it does not work either way? the result should be the same! anyway, it seems to have problems even when all knots are called in different ways, very weird!

2018-04-12 11:54:33 +0100 received badge  Good Question (source)
2018-04-12 08:52:16 +0100 received badge  Nice Question (source)
2018-04-11 13:14:13 +0100 asked a question connected sum of knots

Hi! I was trying to recursively construct connected sums of knots, but I seem to run in to some problems when connect summing a knot to itself more than two times:

B = BraidGroup(2)

trefoil = Knot(B([1,1,1]))

K = trefoil.connected_sum(trefoil)

L = K.connected_sum(trefoil)

This does not work:

ValueError                                Traceback (most recent call last)

ipython-input-1-7b977cf99468 in module()

 2 trefoil = Knot(B([Integer(1),Integer(1),Integer(1)]))

 3 K = trefoil.connected_sum(trefoil)

--> 4 L = K.connected_sum(trefoil)

/home/sc_serv/sage/local/lib/python2.7/site-packages/sage/knots/knot.pyc in connected_sum(self, other)

294         return Knot(B(list(b1.Tietze())

295                       + [(abs(i) + b2s) * Integer(i).sign() for i in b2.Tietze()]

--> 296                       + [b1s]))


/home/sc_serv/sage/local/lib/python2.7/site-packages/sage/knots/knot.pyc in __init__(self, data, check)

 104         if check:

 105             if self.number_of_components() != 1:

  --> 106                 raise ValueError("the input has more than 1 connected component")


  108     def __repr__(self):

 ValueError: the input has more than 1 connected component

Am I doing something wrong here? Thanks in advance!

2018-03-26 19:40:20 +0100 commented question problems with gauss code for knots

It seems that the braid function is not working properly

2018-03-26 17:21:04 +0100 received badge  Supporter (source)
2018-03-26 16:48:19 +0100 received badge  Nice Question (source)
2018-03-26 15:12:55 +0100 received badge  Student (source)
2017-11-07 13:34:58 +0100 asked a question different results for Alexander polynomials

Hi! I just noticed that if one computes the Alexander polynomial of a knot, one gets different results according to whether the knot is presented as the closure of a braid or as a knot: t = var('t') B = BraidGroup(2) b = B([1,1,1]) knot = Knot(b) print b.alexander_polynomial() print knot.alexander_polynomial()

Output: t^-2 - t^-1 + 1 t^-1 - 1 + t Of course the polynomials differ only by a t^n multiplication, but I guess it would be better if the two coincided right away. My question is: is this issue going to be solved in the future? (I can live happily either way, just wanted to avoid modifying some stuff I'm working on!) Thanks!