# Standard Constructions

Given one or more existing modules, various standard constructions are available to construct new modules.

## Changing the Coefficient Ring

### `ChangeRing(M, S): ModRng, Rng -> ModRng, Map`

Given a module $M$ with base ring $R$, together with a ring $S$, construct the module $N$ with base ring $S$ obtained by coercing the components of elements of $M$ into $N$, together with the homomorphism from $M$ to $N$.

### `ChangeRing(M, S, f): ModRng, Rng, Map -> ModRng, Map`

Given a module $M$ with base ring $R$, together with a ring $S$, and a homomorphism $f: R \rightarrow S$, construct the module $N$ with base ring $S$ obtained by mapping the components of elements of $M$ into $N$ by $f$, together with the homomorphism from $M$ to $N$.

### `ChangeUniverse(~x, R): ModTupRngElt, Rng -> ModRng, Map`

Change the coefficient ring of $x$ to be $R$.

## Direct Sums

### `DirectSum(M, N): ModRng, ModRng -> ModRng, Map, Map, Map, Map`

Given $R$-modules $M$ and $N$, construct the direct sum $D$ of $M$ and $N$ as an $R$-module. The embedding maps from $M$ into $D$ and from $N$ into $D$ respectively, and the projection maps from $D$ onto $M$ and from $D$ onto $N$ respectively are also returned.

### `DirectSum(Q): [ ModRng ] -> [ ModRng ], [ Map ], [ Map ]`

Given a sequence $Q$ of $R$-modules, construct the direct sum $D$ of these modules. The embedding maps from each of the elements of $Q$ into $D$ and the projection maps from $D$ onto each of the elements of $Q$ are also returned.
