# Reducing Vectors Relative to a Subspace

## `ReduceVector(W, v): ModTupRng, ModTupRngElt -> ModTupRngElt`

(Function.) Given a vector $v$ from a tuple module $V$ and a submodule $W$ of $V$, return the reduction of $v$ with respect to $W$ (that is, the canonical representative of the coset $v + W$).

Note that the reduction is done with respect to the standard inner product.

## `ReduceVector(W, ~v): ModTupRng, ModTupRngElt`

(Procedure.) Given a vector $v$ from a tuple module $V$ and a submodule $W$ of $V$, replace $v$ with its reduction of with respect to $W$ (that is, the canonical representative of the coset $v + W$).

Note that the reduction is done with respect to the standard inner product.

## `DecomposeVector(U, v): ModTupRng, ModTupRngElt -> ModTupRngElt, ModTupRngElt`

Given a vector $v$ from a tuple module $V$ and a submodule $U$ of $V$, return the unique $u$ in $U$ and $w$ in the complement to $U$ in $U + <v>$ such that $v = u + w$.

Note that the reduction is done with respect to the standard inner product, and the complement noted above need not be orthogonal.
