# Chain Complexes

- [Complexes of Modules](complexes.md)

  - [Creation](complexes.md#creation)

    - [`Complex(L, d): List, RngIntElt → ModCpx`](complexes.md#function-complex-list-rngintelt)

    - [`Complex(f, d): Map, RngIntElt → ModCpx`](complexes.md#function-complex-map-rngintelt)

    - [`ZeroComplex(A, m, n): AlgBas, RngIntElt, RngIntElt → ModCpx`](complexes.md#function-zerocomplex-algbas-rngintelt-rngintelt)

    - [`Dual(C): ModCpx → ModCpx`](complexes.md#function-dual-modcpx)

    - [`Dual(C, n): ModCpx, RngIntElt → ModCpx`](complexes.md#function-dual-modcpx-rngintelt)

  - [Subcomplexes and Quotient Complexes](complexes.md#subcomplexes-and-quotient-complexes)

    - [`sub< C | Q >: ModCpx, SeqEnum[ModAlg] → ModCpx, MapChn`](complexes.md#constructor-constructor-sub-modcpx-seqenum-modalg-modcpx-mapchn)

    - [`sub< C | L >: ModCpx, List → ModCpx, MapChn`](complexes.md#constructor-constructor-sub-modcpx-list-modcpx-mapchn)

    - [`RandomSubcomplex(C, Q): ModCpx, SeqEnum → ModCpx, MapChn`](complexes.md#function-randomsubcomplex-modcpx-seqenum)

    - [`quo< C | D >: ModCpx, ModCpx → ModCpx`](complexes.md#constructor-constructor-quo-modcpx-modcpx-modcpx)

    - [`quo< C | S >: ModCpx, SeqEnum[ModAlg] → ModCpx`](complexes.md#constructor-constructor-quo-modcpx-seqenum-modalg-modcpx)

    - [`quo< C | L >: ModCpx, List → ModCpx`](complexes.md#constructor-constructor-quo-modcpx-list-modcpx)

  - [Access Functions](complexes.md#access-functions)

    - [`Degrees(C): ModCpx → RngIntElt`](complexes.md#function-degrees-modcpx)

    - [`Algebra(C): ModCpx → AlgBas`](complexes.md#function-algebra-modcpx)

    - [`BoundaryMap(C, n): ModCpx, RngIntElt → ModMatRngElt`](complexes.md#function-boundarymap-modcpx-rngintelt)

    - [`BoundaryMaps(C): ModCpx → List`](complexes.md#function-boundarymaps-modcpx)

    - [`DimensionsOfHomology(C): ModCpx → SeqEnum`](complexes.md#function-dimensionsofhomology-modcpx)

    - [`DimensionOfHomology(C, n): ModCpx, RngIntElt → RngIntElt`](complexes.md#function-dimensionofhomology-modcpx-rngintelt)

    - [`DimensionsOfTerms(C): ModCpx → SeqEnum`](complexes.md#function-dimensionsofterms-modcpx)

    - [`Term(C, n): ModCpx, RngIntElt → ModAlg`](complexes.md#function-term-modcpx-rngintelt)

    - [`Terms(C): ModCpx → SeqEnum`](complexes.md#function-terms-modcpx)

  - [Elementary Operations](complexes.md#elementary-operations)

    - [`DirectSum(C, D): ModCpx, ModCpx → ModCpx`](complexes.md#function-directsum-modcpx-modcpx)

    - [`Homology(C): ModCpx → SeqEnum`](complexes.md#function-homology-modcpx)

    - [`HomologyOfChainComplex(C): ModCpx → SeqEnum`](complexes.md#function-homologyofchaincomplex-modcpx)

    - [`Homology(C, n): ModCpx, RngIntElt → SeqEnum`](complexes.md#function-homology-modcpx-rngintelt)

    - [`Prune(C): ModCpx → ModCpx`](complexes.md#function-prune-modcpx)

    - [`Prune(C,n): ModCpx, RngIntElt → ModCpx`](complexes.md#function-prune-modcpx-rngintelt)

    - [`Preprune(C): ModCpx → ModCpx`](complexes.md#function-preprune-modcpx)

    - [`Preprune(C,n): ModCpx, RngIntElt → ModCpx`](complexes.md#function-preprune-modcpx-rngintelt)

    - [`Shift(C, n): ModCpx, RngIntElt → ModCpx`](complexes.md#function-shift-modcpx-rngintelt)

    - [`ShiftToDegreeZero(C): ModCpx → ModCpx`](complexes.md#function-shifttodegreezero-modcpx)

    - [`Splice(C, D): ModCpx, ModCpx → ModCpx`](complexes.md#function-splice-modcpx-modcpx)

    - [`Splice(C, D, f): ModCpx, ModCpx, ModMatRngElt → ModCpx`](complexes.md#function-splice-modcpx-modcpx-modmatrngelt)

  - [Extensions](complexes.md#extensions)

    - [`LeftExactExtension(C): ModCpx → ModCpx`](complexes.md#function-leftexactextension-modcpx)

    - [`RightExactExtension(C): ModCpx → ModCpx`](complexes.md#function-rightexactextension-modcpx)

    - [`ExactExtension(C): ModCpx → ModCpx`](complexes.md#function-exactextension-modcpx)

    - [`LeftZeroExtension(C): ModCpx → ModCpx`](complexes.md#function-leftzeroextension-modcpx)

    - [`LeftZeroExtension(C, n): ModCpx, RngIntElt → ModCpx`](complexes.md#function-leftzeroextension-modcpx-rngintelt)

    - [`RightZeroExtension(C): ModCpx → ModCpx`](complexes.md#function-rightzeroextension-modcpx)

    - [`RightZeroExtension(C, n): ModCpx, RngIntElt → ModCpx`](complexes.md#function-rightzeroextension-modcpx-rngintelt)

    - [`ZeroExtension(C): ModCpx → ModCpx`](complexes.md#function-zeroextension-modcpx)

    - [`EqualizeDegrees(C, D): ModCpx, ModCpx → ModCpx, ModCpx`](complexes.md#function-equalizedegrees-modcpx-modcpx)

    - [`EqualizeDegrees(Q): SeqEnum → SeqEnum`](complexes.md#function-equalizedegrees-seqenum)

    - [`EqualizeDegrees(C, D, n): ModCpx, ModCpx, RngIntElt → ModCpx, ModCpx`](complexes.md#function-equalizedegrees-modcpx-modcpx-rngintelt)

  - [Predicates](complexes.md#predicates)

    - [`IsExact(C): ModComplex → BoolElt`](complexes.md#function-isexact-modcomplex)

    - [`IsShortExactSequence(C): ModCpx → BoolElt, RngIntElt`](complexes.md#function-isshortexactsequence-modcpx)

    - [`IsExact(C, n): ModCpx, RngIntElt → BoolElt`](complexes.md#function-isexact-modcpx-rngintelt)

    - [`IsZeroComplex(C): ModCpx → BoolElt`](complexes.md#function-iszerocomplex-modcpx)

    - [`IsZeroMap(C, n): ModCpx, RngIntElt → BoolElt`](complexes.md#function-iszeromap-modcpx-rngintelt)

    - [`IsZeroTerm(C, n): ModCpx, RngIntElt → BoolElt`](complexes.md#function-iszeroterm-modcpx-rngintelt)

    - [`Example: Complexes`](complexes.md#example-ex-bb43ae)

- [Chain Maps](chainmaps.md)

  - [Creation](chainmaps.md#creation)

    - [`ChainMap(Q, C, D, n): SeqEnum, ModCpx, ModCpx, RngIntElt → MapChn`](chainmaps.md#function-chainmap-seqenum-modcpx-modcpx-rngintelt)

    - [`ZeroChainMap(C, D): ModCpx, ModCpx → MapChn`](chainmaps.md#function-zerochainmap-modcpx-modcpx)

  - [Access Functions](chainmaps.md#access-functions)

    - [`Degree(f): MapChn → RngIntElt`](chainmaps.md#function-degree-mapchn)

    - [`ModuleMap(f, n): MapChn, RngIntElt → ModMatRngElt`](chainmaps.md#function-modulemap-mapchn-rngintelt)

    - [`Kernel(f): MapChn → ModCpx, MapChn`](chainmaps.md#function-kernel-mapchn)

    - [`Cokernel(f): MapChn → ModCpx, MapChn`](chainmaps.md#function-cokernel-mapchn)

    - [`Image(f): MapChn → ModCpx, MapChn, MapChn`](chainmaps.md#function-image-mapchn)

  - [Elementary Operations](chainmaps.md#elementary-operations)

    - [`f + g: MapChn, MapChn → MapChn`](chainmaps.md#operation-op-plus-mapchn-mapchn)

    - [`a * g: RngElt, MapChn → MapChn`](chainmaps.md#operation-op-times-rngelt-mapchn)

    - [`f * g: MapChn, MapChn → MapChn`](chainmaps.md#operation-op-times-mapchn-mapchn)

  - [Predicates](chainmaps.md#predicates)

    - [`IsSurjective(f): MapChn → BoolElt`](chainmaps.md#function-issurjective-mapchn)

    - [`IsInjective(f): MapChn → BoolElt`](chainmaps.md#function-isinjective-mapchn)

    - [`IsZero(f): MapChn → BoolElt`](chainmaps.md#function-iszero-mapchn)

    - [`IsIsomorphism(f): MapChn → BoolElt`](chainmaps.md#function-isisomorphism-mapchn)

    - [`IsShortExactSequence(f, g): MapChn, MapChn → BoolElt`](chainmaps.md#function-isshortexactsequence-mapchn-mapchn)

    - [`IsChainMap(L, C, D, n): List, ModCpx, ModCpx, RngIntElt → BoolElt`](chainmaps.md#function-ischainmap-list-modcpx-modcpx-rngintelt)

    - [`IsChainMap(f): MapChn → BoolElt`](chainmaps.md#function-ischainmap-mapchn)

    - [`IsProperChainMap(f): MapChn → BoolElt`](chainmaps.md#function-isproperchainmap-mapchn)

    - [`HasDefinedModuleMap(C,n): ModCpx, RngIntElt → BoolElt`](chainmaps.md#function-hasdefinedmodulemap-modcpx-rngintelt)

    - [`Example: Chainmaps`](chainmaps.md#example-ex-f4e1ae)

  - [Maps on Homology](chainmaps.md#maps-on-homology)

    - [`InducedMapOnHomology(f, n): MapChn, RngIntElt → ModTupFldElt`](chainmaps.md#function-inducedmaponhomology-mapchn-rngintelt)

    - [`ConnectingHomomorphism(f, g, n): MapChn, MapChn, RngIntElt → ModMatRngElt`](chainmaps.md#function-connectinghomomorphism-mapchn-mapchn-rngintelt)

    - [`LongExactSequenceOnHomology(f, g): MapChn, MapChn → ModCpx`](chainmaps.md#function-longexactsequenceonhomology-mapchn-mapchn)

    - [`Example: Long Exact Sequence`](chainmaps.md#example-ex-4cd4be)
