# isFree(Complex) -- whether a complex consists of free modules

## Synopsis

• Function: isFree
• Usage:
isFree C
• Inputs:
• C, ,
• Outputs:
• , that is true when each $C_i$ is a free module

## Description

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.

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'