Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

error computing homology of a simplicial complex

I'm running code to first generate a simplicial complex that is just a 3 dimensional lattice. I'm then adding square plaquettes. However, I get an error sometimes when I try to calculate homology. Specifically, when I run the code below I get the error:

ValueError: The differentials d_{2} and d_{1} are not compatible: their composition is not zero.

This seems strange since a simplicial complex should always have homology. The error persists even when I specify the homology function to use different algorithms.

def grid(n1, n2=None, n3=None):
    if n2 == None:
        n2 = n1
    if n3 == None:
        n3 = n1
    edges = []
    for i in range(n1+1):
        for j in range(n2+1):
            for k in range(n3+1):
                if i < n:
                    edges.append(((i,j,k),(i+1,j,k)))
                if j < n:
                    edges.append(((i,j,k),(i,j+1,k)))
                if k < n:
                    edges.append(((i,j,k),(i,j,k+1)))
    return edges

def add_plaquette(complex, address):
    b = address[1]
    a1 = address[2]
    a2 = address[3]
    if address[0] == 2:
        complex.add_face(((a1,a2,b),(a1+1,a2,b),(a1,a2+1,b)))
        complex.add_face(((a1+1,a2+1,b),(a1+1,a2,b),(a1,a2+1,b)))
    if address[0] == 1:
        complex.add_face(((a1,b,a2),(a1+1,b,a2),(a1,b,a2+1)))
        complex.add_face(((a1+1,b,a2+1),(a1+1,b,a2),(a1,b,a2+1)))
    if address[0] == 0:
        complex.add_face(((b,a1,a2),(b,a1+1,a2),(b,a1,a2+1)))
        complex.add_face(((b,a1+1,a2+1),(b,a1+1,a2),(b,a1,a2+1)))

t0 = SimplicialComplex(grid(2))
add_plaquette(t0, (0,0,1,0))
add_plaquette(t0, (0,0,1,1))
add_plaquette(t0, (2,2,0,1))
t0.homology()

The full text of the error is:

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

File "/tmp/tmpBNPSQ1/___code___.py", line 7, in <module> exec compile(u't0.homology() File "", line 1, in <module>

File "/home/sage/sage-5.9/local/lib/python2.7/site-packages/sage/homology/cell_complex.py", line 549, in homology return self._homology_(dim, *kwds) File "/home/sage/sage-5.9/local/lib/python2.7/site-packages/sage/homology/simplicial_complex.py", line 1925, in _homology_ cochain=cohomology, *kwds) File "/home/sage/sage-5.9/local/lib/python2.7/site-packages/sage/homology/simplicial_complex.py", line 1788, in chain_complex return ChainComplex(data=differentials, degree=-1, **kwds) File "/home/sage/sage-5.9/local/lib/python2.7/site-packages/sage/homology/chain_complex.py", line 462, in __init__ raise ValueError, "The differentials d_{%s} and d_{%s} are not compatible: their composition is not zero." % (n, n+degree) ValueError: The differentials d_{2} and d_{1} are not compatible: their composition is not zero.

error computing homology of a simplicial complex

I'm running code to first generate a simplicial complex that is just a 3 dimensional lattice. I'm then adding square plaquettes. However, I get an error sometimes when I try to calculate homology. Specifically, when I run the code below I get the error:

ValueError: The differentials d_{2} and d_{1} are not compatible: their composition is not zero.

This seems strange since a simplicial complex should always have homology. The error persists even when I specify the homology function to use different algorithms.

def grid(n1, n2=None, n3=None):
    if n2 == None:
        n2 = n1
    if n3 == None:
        n3 = n1
    edges = []
    for i in range(n1+1):
        for j in range(n2+1):
            for k in range(n3+1):
                if i < n:
                    edges.append(((i,j,k),(i+1,j,k)))
                if j < n:
                    edges.append(((i,j,k),(i,j+1,k)))
                if k < n:
                    edges.append(((i,j,k),(i,j,k+1)))
    return edges

def add_plaquette(complex, address):
    b = address[1]
    a1 = address[2]
    a2 = address[3]
    if address[0] == 2:
        complex.add_face(((a1,a2,b),(a1+1,a2,b),(a1,a2+1,b)))
        complex.add_face(((a1+1,a2+1,b),(a1+1,a2,b),(a1,a2+1,b)))
    if address[0] == 1:
        complex.add_face(((a1,b,a2),(a1+1,b,a2),(a1,b,a2+1)))
        complex.add_face(((a1+1,b,a2+1),(a1+1,b,a2),(a1,b,a2+1)))
    if address[0] == 0:
        complex.add_face(((b,a1,a2),(b,a1+1,a2),(b,a1,a2+1)))
        complex.add_face(((b,a1+1,a2+1),(b,a1+1,a2),(b,a1,a2+1)))

t0 = SimplicialComplex(grid(2))
add_plaquette(t0, (0,0,1,0))
add_plaquette(t0, (0,0,1,1))
add_plaquette(t0, (2,2,0,1))
t0.homology()

The full text of the error is:

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

File "/tmp/tmpBNPSQ1/___code___.py", line 7, in <module> exec compile(u't0.homology() File "", line 1, in <module>

File "/home/sage/sage-5.9/local/lib/python2.7/site-packages/sage/homology/cell_complex.py", line 549, in homology return self._homology_(dim, *kwds) File "/home/sage/sage-5.9/local/lib/python2.7/site-packages/sage/homology/simplicial_complex.py", line 1925, in _homology_ cochain=cohomology, *kwds) File "/home/sage/sage-5.9/local/lib/python2.7/site-packages/sage/homology/simplicial_complex.py", line 1788, in chain_complex return ChainComplex(data=differentials, degree=-1, **kwds) File "/home/sage/sage-5.9/local/lib/python2.7/site-packages/sage/homology/chain_complex.py", line 462, in __init__ raise ValueError, "The differentials d_{%s} and d_{%s} are not compatible: their composition is not zero." % (n, n+degree) ValueError: The differentials d_{2} and d_{1} are not compatible: their composition is not zero.