This method checks whether the given representation of each module $C_i$ is free. To determine whether the complex $C$ is isomorphic to a free complex, use prune (missing documentation).
The following example demonstrates that the presentation of a module might not reveal the property of being free.
i1 : S = ZZ/101[a,b]; |
i2 : M = kernel vars S
o2 = image {1} | -b |
{1} | a |
2
o2 : S-module, submodule of S
|
i3 : assert not isFreeModule M |
i4 : assert isFreeModule prune M |
By definition, a free resolution $C$ consists of free modules. In contrast, the augmented complex $C'$ might or might not consist of free modules.
i5 : C = freeResolution M
1
o5 = S
0
o5 : Complex
|
i6 : assert isFree C |
i7 : C' = cone map(complex M, C, i -> map(M, C_0, 1))[1]
1
o7 = image {1} | -b | <-- S
{1} | a |
0
-1
o7 : Complex
|
i8 : isWellDefined C' o8 = true |
i9 : assert not isFree C' |
i10 : prune C'
1 1
o10 = S <-- S
-1 0
o10 : Complex
|
i11 : assert isFree prune C' |