# compose(Module,Module,Module) -- composition as a pairing on Hom-modules

## Synopsis

• Function: compose
• Usage:
compose(M,N,P)
• Inputs:
• M,
• N,
• P,
• Outputs:
• , The map Hom(M,N) ** Hom(N,P) -> Hom(M,P) provided by composition of homomorphisms.

## Description

The modules should be defined over the same ring.

In the following example we check that the map does implement composition.

 i1 : R = QQ[x,y] o1 = R o1 : PolynomialRing i2 : M = image vars R ++ R^2 o2 = image | x y 0 0 | | 0 0 1 0 | | 0 0 0 1 | 3 o2 : R-module, submodule of R i3 : f = compose(M,M,M); o3 : Matrix i4 : H = Hom(M,M); i5 : g = H_{0} o5 = {0} | 1 | {0} | 0 | {0} | 0 | {0} | 0 | {0} | 0 | {0} | 0 | {0} | 0 | {1} | 0 | {1} | 0 | {1} | 0 | {1} | 0 | o5 : Matrix i6 : h = homomorphism g o6 = {1} | 1 0 0 0 | {1} | 0 1 0 0 | {0} | 0 0 0 0 | {0} | 0 0 0 0 | o6 : Matrix i7 : f * (g ** g) o7 = {0} | 1 | {0} | 0 | {0} | 0 | {0} | 0 | {0} | 0 | {0} | 0 | {0} | 0 | {1} | 0 | {1} | 0 | {1} | 0 | {1} | 0 | o7 : Matrix i8 : h' = homomorphism oo o8 = {1} | 1 0 0 0 | {1} | 0 1 0 0 | {0} | 0 0 0 0 | {0} | 0 0 0 0 | o8 : Matrix i9 : h' === h * h o9 = true i10 : assert oo