Ask Your Question

Homology of chain complexes

asked 2012-07-18 02:30:25 -0500

roman gravatar image

updated 2012-07-19 21:36:50 -0500

I've got the following chain complex:


With the boundarymaps given by

d0:(z1,z2,z3) |-> 0

d1:(z1,z2,z3,z4) |-> (-2(z1+z3+z4), 2(z1-z2), z2+z3+z4)

d2:(z1,z2)|-> (z1+z2, z1+z2,-z1,-z2)

Now I tried to compute the homology groups (e.g. H0 = ker d0 / im d1) using sage. One time manually via taking the quotients of the respective modules, one time using the ChainComplex() module. However, I don't really understand the output using the first method (e.g. what means: "Finitely generated module V/W over Integer Ring with invariants (2, 0)"), and both methods seem to deliver different results...

I've defined my boundary maps as matrices:

d0 = matrix(ZZ, 1,3,[[0,0,0]]).transpose()
d1 = matrix(ZZ, 3,4,[[-2,0,-2,-2],[2,-2,0,0],[0,1,1,1]]).transpose()
d2 = matrix(ZZ,4,2,[[1,1],[1,1],[-1,0],[0,-1]]).transpose()

Where I've taken the transpose since I'm used to write linear maps as d(x) = Dx, whereas sage seems to use d(x) = xD, where D is the corresponding matrix. Calculating the homology groups via

H0 = d0.kernel()/d1.image()
H1 = d1.kernel()/d2.image()
H2 = d2.kernel()

gives the following results:

H0: Finitely generated module V/W over Integer Ring with invariants (2, 0)

H1: Finitely generated module V/W over Integer Ring with invariants ()

H2: Free module of degree 2 and rank 0 over Integer Ring



yields a different strucure.

{0: Z, 1: Z, 2: C2, 3: 0}

To maximize confusion, calculation by hand gives me H0=C2^2 x ZZ, H1=0, H2=0. I'd might have made some mistakes there, though. So I don't really konw how to interpret the results from Sage.

edit retag flag offensive close merge delete


Just FYI, "Public worksheets are currently disabled."

kcrisman gravatar imagekcrisman ( 2012-07-18 03:23:18 -0500 )edit

I don't understand your boundary maps, in particular d1: its codomain should be ZZ^3, but it is written in terms of z1, z2, z3, z4. Since we can't see the public worksheet, perhaps you could include the matrices here?

John Palmieri gravatar imageJohn Palmieri ( 2012-07-18 05:57:01 -0500 )edit

The phrase "Finitely generated module V/W over Integer Ring with invariants (2, 0)" means a ZZ-module isomorphic to Z/2Z + Z, by the way.

John Palmieri gravatar imageJohn Palmieri ( 2012-07-18 05:57:49 -0500 )edit

Considerng the boundary maps: it's d0:ZZ^3->0 d1:ZZ^4->ZZ^3 d2:ZZ^2->ZZ^4 (and d3:0->ZZ^2, which I omitted) Considering the worksheet: I edited it in the main question

roman gravatar imageroman ( 2012-07-19 00:33:41 -0500 )edit

Your formula for d2 is wrong: the third component should be -z1, not -z2. The matrices are right, I think.

John Palmieri gravatar imageJohn Palmieri ( 2012-07-19 06:01:18 -0500 )edit

1 answer

Sort by ยป oldest newest most voted

answered 2012-07-19 06:09:25 -0500

According to the documentation for ChainComplex, the default degree for the differential is +1. So when you say ChainComplex([d0,d1,d2]), you are defining a chain complex with maps

d_0: ZZ^0 --> ZZ^3,
d_1: ZZ^3 --> ZZ^4,
d_2: ZZ^4 --> ZZ^2.

Instead, you should do

sage: C = ChainComplex([d0.transpose(), d1.transpose(), d2.transpose()], degree=-1)


sage: C.homology()
{0: Z x C2, 1: 0, 2: 0}

Now, regarding kernels, you could instead use left_kernel or right_kernel, depending on which side the matrix is acting, to make things more explicit. The vectors v so that v*A=0 is the left kernel of A, for example. In your case, the differential d2 is injective, so it has zero kernel, so the homology in that degree is zero. The image of d2 is equal to the kernel of d1, so the homology in degree 1 is zero. I haven't thought about doing the degree zero case by hand, but see no reason not to trust Sage's answer of Z x C2.

edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools



Asked: 2012-07-18 02:30:25 -0500

Seen: 224 times

Last updated: Jul 19 '12