# Basic Module Constructions

The following functions give some fundamental basic constructions with modules.

## `M + N: ModMPol, ModMPol -> ModMPol`

Given compatible modules $M$ and $N$ (ie, embedded in the same ambient module), return the sum of $M$ and $N$; that is, the submodule of the ambient generated by $M$ and $N$.

## `M meet N: ModMPol, ModMPol -> ModMPol`

Given compatible modules $M$ and $N$ (ie, embedded in the same ambient module), return the intersection of $M$ and $N$ in the ambient. This uses the standard algorithm for intersecting two modules of a free module (see Section 2.8.3 of [[Greuel and Pfister, 2002](../../references.md#cite-grpf02)]). If the ambient is the quotient of a free module $F$ by non-trivial relations, the intersection performed is effectively that of the inverse images of $M$ and $N$ in $F$.

## `f * M: ModMPol, RngElt -> ModMPol`

## `M * f: ModMPol, RngElt -> ModMPol`

Given an $R$-module $M$ and an element $f\in R$, return the submodule of $M$ generated by $\{ f\cdot v: v \in M \}$ or $\{ v\cdot f: v \in M \}$, respectively.

## `I * M: RngMPol, ModMPol -> ModMPol`

## `M * I: ModMPol, RngMPol -> ModMPol`

Given an $R$-module $M$ and an ideal $I$ of $R$, return the submodule of $M$ generated by $\{ f\cdot v: f \in I, v \in M \}$ or $\{ v\cdot f: f \in I, v \in M \}$, respectively.

## `M / N: ModMPol, ModMPol -> ModMPol`

Given compatible modules $M$ and $N$ (ie, embedded in the same ambient module), return the quotient module $M/(M \cap N)$. This has the same effect as using the `quo` constructor.

## `DirectSum(M, N): ModMPol, ModMPol -> ModMPol, [ModMPolHom], [ModMPolHom]`

Given $R$-modules $M$ and $N$, return the direct sum $D = M\oplus N$ and two sequences of corresponding homomorphisms giving the injections into and projections from $D$, respectively.

## `DirectSum(S): [ModMPol] -> ModMPol, [ModMPolHom], [ModMPolHom]`

## `DirectSum(S): [* ModMPol *] -> ModMPol, [ModMPolHom], [ModMPolHom]`

A sequence or list $L$ of $R$-modules, return their direct sum $D$ and two sequences of corresponding homomorphisms giving the injections into and projections from $D$, respectively.

## `Twist(M, d): ModMPol, RngIntElt -> [ ModMPolElt ], ModMPolHom`

Given a graded module $M$, and an integer $d$, return the Serre twist $M(d)$ and an isomorphism $f:M \rightarrow M(d)$. The twisted module is simply an isomorphic copy of $M$, but with the grading twisted by $d$ (so $d$ is subtracted from each weight of $M$). $f$ has degree $-d$.
