
$l2h_cache_key = q/$N$./;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="19" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_326.png"
 ALT="$N$">.|;

$l2h_cache_key = q/$\alpha, \beta$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="31" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_69.png"
 ALT="$\alpha, \beta$">|;

$l2h_cache_key = q/$<$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="17" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_223.png"
 ALT="$&lt;$">|;

$l2h_cache_key = q/$k_1$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="20" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_97.png"
 ALT="$k_1$">|;

$l2h_cache_key = q/$\hbox{ann}(M) = \{a \mid aM = 0 \}$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $\hbox{ann}(M) = \{a \mid aM = 0 \}$
 -->
<IMG
 WIDTH="173" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_14.png"
 ALT="$\hbox{ann}(M) = \{a \mid aM = 0 \}$">|;

$l2h_cache_key = q/$A$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_187.png"
 ALT="$A$">|;

$l2h_cache_key = q/$S$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="15" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_244.png"
 ALT="$S$">|;

$l2h_cache_key = q/$N = R^n\/M$./;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="85" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_430.png"
 ALT="$N = R^n/M$">.|;

$l2h_cache_key = q/$R^n\/M$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="49" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_91.png"
 ALT="$R^n/M$">|;

$l2h_cache_key = q/$\hbox{dim}_K(\hbox{Loc}_{(x,y,z)}K[x,y,z]\/\hbox{jacob}(f))$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $\hbox{dim}_K(\hbox{Loc}_{(x,y,z)}K[x,y,z]/\hbox{jacob}(f))$
 -->
<IMG
 WIDTH="249" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_395.png"
 ALT="$\hbox{dim}_K(\hbox{Loc}_{(x,y,z)}K[x,y,z]/\hbox{jacob}(f))$">|;

$l2h_cache_key = q/Let $I={}_{A}\langle g_1,\dots ,g_s\rangle \subseteq A^r$ and $M= A^r\/I$.
A {\bf free resolution of $M$} is a long exact sequence
$$\dots \longrightarrow F_2 \buildrel{B_2}\over{\longrightarrow} F_1
 \buildrel{B_1}\over{\longrightarrow} F_0\longrightarrow M\longrightarrow
0,$$/;
$l2h_cache{$l2h_cache_key} = q|Let <!-- MATH
 $I={}_{A}\langle g_1,\dots ,g_s\rangle \subseteq A^r$
 -->
<IMG
 WIDTH="161" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_281.png"
 ALT="$I={}_{A}\langle g_1,\dots ,g_s\rangle \subseteq A^r$"> and <IMG
 WIDTH="78" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_282.png"
 ALT="$M= A^r/I$">.
A <B>free resolution of <IMG
 WIDTH="21" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_13.png"
 ALT="$M$"></B> is a long exact sequence
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
\dots \longrightarrow F_2 \buildrel{B_2}\over{\longrightarrow} F_1
 \buildrel{B_1}\over{\longrightarrow} F_0\longrightarrow M\longrightarrow
0,
\end{displaymath}
 -->

<IMG
 WIDTH="271" HEIGHT="27" BORDER="0"
 SRC="sing_283.png"
 ALT="\begin{displaymath}\dots \longrightarrow F_2 \buildrel{B_2}\over{\longrightarrow...
...1}\over{\longrightarrow} F_0\longrightarrow M\longrightarrow
0,\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>|;

$l2h_cache_key = q/$>$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="17" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_329.png"
 ALT="$&gt;$">|;

$l2h_cache_key = q/$c$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="11" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_45.png"
 ALT="$c$">|;

$l2h_cache_key = q/$ d_{ij}$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="24" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_208.png"
 ALT="$d_{ij}$">|;

$l2h_cache_key = q/finite fields $Z\/p$, $p$ a prime $\le 2147483647$,/;
$l2h_cache{$l2h_cache_key} = q|finite fields <IMG
 WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_22.png"
 ALT="$Z/p$">, <IMG
 WIDTH="12" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_23.png"
 ALT="$p$"> a prime <!-- MATH
 $\le 2147483647$
 -->
<IMG
 WIDTH="100" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_24.png"
 ALT="$\le 2147483647$">,|;

$l2h_cache_key = q/The singularities of type $\tilde{E}_6$ form a
$\mu$-constant one parameter family given by
$x^3+y^3+z^3+\lambda xyz=0,\quad \lambda^3\neq-27$./;
$l2h_cache{$l2h_cache_key} = q|The singularities of type <IMG
 WIDTH="23" HEIGHT="37" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_626.png"
 ALT="$\tilde{E}_6$"> form a
<IMG
 WIDTH="14" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_602.png"
 ALT="$\mu$">-constant one parameter family given by
<!-- MATH
 $x^3+y^3+z^3+\lambda xyz=0,\quad \lambda^3\neq-27$
 -->
<IMG
 WIDTH="262" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_632.png"
 ALT="$x^3+y^3+z^3+\lambda xyz=0,\quad \lambda^3\neq-27$">.|;

$l2h_cache_key = q/$w_2,\ldots,w_n$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $w_2,\ldots,w_n$
 -->
<IMG
 WIDTH="78" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_466.png"
 ALT="$w_2,\ldots,w_n$">|;

$l2h_cache_key = q/\quad \quad   $x^\alpha e_i <_m x^\beta e_j \Leftrightarrow i > j$ or ($
i = j $ and $ x^\alpha < x^\beta $)./;
$l2h_cache{$l2h_cache_key} = q|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<!-- MATH
 $x^\alpha e_i <_m x^\beta e_j \Leftrightarrow i > j$
 -->
<IMG
 WIDTH="159" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_484.png"
 ALT="$x^\alpha e_i &lt;_m x^\beta e_j \Leftrightarrow i &gt; j$"> or (<IMG
 WIDTH="38" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_480.png"
 ALT="$
i = j $"> and <!-- MATH
 $x^\alpha < x^\beta$
 -->
<IMG
 WIDTH="61" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_441.png"
 ALT="$x^\alpha &lt; x^\beta$">).|;

$l2h_cache_key = q/$w_1,\ldots,w_n$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $w_1,\ldots,w_n$
 -->
<IMG
 WIDTH="78" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_457.png"
 ALT="$w_1, \ldots, w_n$">|;

$l2h_cache_key = q/$(z^3,0,-y+4z,x+2z,0)$ and $(-xyz-y^2z-4xz^2+16z^3,-y^2,48z,48z,x+y-z)$./;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $(z^3,0,-y+4z,x+2z,0)$
 -->
<IMG
 WIDTH="177" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_20.png"
 ALT="$(z^3,0,-y+4z,x+2z,0)$"> and <!-- MATH
 $(-xyz-y^2z-4xz^2+16z^3,-y^2,48z,48z,x+y-z)$
 -->
<IMG
 WIDTH="369" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_21.png"
 ALT="$(-xyz-y^2z-4xz^2+16z^3,-y^2,48z,48z,x+y-z)$">.|;

$l2h_cache_key = q/$f_1$, \dots, $f_r$./;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="19" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_380.png"
 ALT="$f_1$">, ..., <IMG
 WIDTH="19" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_382.png"
 ALT="$f_r$">.|;

$l2h_cache_key = q/computes $I_A$ via the
extended matrix $B=(I_m|A)$,
where $I_m$ is the $m\times m$ unity matrix. A lattice basis of $B$ is
given by the set of vectors $(a^j,-e_j)\in Z\!\!\! Z^{m+n}$, where $a^j$
is the $j$-th row of $A$ and $e_j$ the $j$-th coordinate vector. We
look at the ideal in $K[y_1,\ldots,y_m,x_1,\ldots,x_n]$ corresponding to
these vectors, namely
$$ I_1=<y^{a_j^+}- x_j y^{a_j^-} | j=1,\ldots, n>.$$
We introduce a further variable $t$ and adjoin the binomial $t\cdot
y_1\cdot\ldots\cdot y_m -1$ to the generating set of $I_1$, obtaining
an ideal $I_2$ in the polynomial ring $K[t,
y_1,\ldots,y_m,x_1,\ldots,x_n]$. $I_2$ is saturated w.r.t. all
variables because all variables are invertible modulo $I_2$. Now $I_A$
can be computed from $I_2$ by eliminating the variables
$t,y_1,\ldots,y_m$./;
$l2h_cache{$l2h_cache_key} = q|computes <IMG
 WIDTH="22" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_649.png"
 ALT="$I_A$"> via the
extended matrix <IMG
 WIDTH="86" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_650.png"
 ALT="$B=(I_m\vert A)$">,
where <IMG
 WIDTH="23" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_651.png"
 ALT="$I_m$"> is the <IMG
 WIDTH="52" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_652.png"
 ALT="$m\times m$"> unity matrix. A lattice basis of <IMG
 WIDTH="17" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_192.png"
 ALT="$B$"> is
given by the set of vectors <!-- MATH
 $(a^j,-e_j)\in Z\!\!\! Z^{m+n}$
 -->
<IMG
 WIDTH="130" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_653.png"
 ALT="$(a^j,-e_j)\in Z\!\!\! Z^{m+n}$">, where <IMG
 WIDTH="19" HEIGHT="17" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_654.png"
 ALT="$a^j$">
is the <IMG
 WIDTH="12" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_53.png"
 ALT="$j$">-th row of <IMG
 WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_187.png"
 ALT="$A$"> and <IMG
 WIDTH="18" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_655.png"
 ALT="$e_j$"> the <IMG
 WIDTH="12" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_53.png"
 ALT="$j$">-th coordinate vector. We
look at the ideal in <!-- MATH
 $K[y_1,\ldots,y_m,x_1,\ldots,x_n]$
 -->
<IMG
 WIDTH="174" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_656.png"
 ALT="$K[y_1,\ldots,y_m,x_1,\ldots,x_n]$"> corresponding to
these vectors, namely
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
I_1=<y^{a_j^+}- x_j y^{a_j^-} \| j=1,\ldots, n>.
\end{displaymath}
 -->

<IMG
 WIDTH="244" HEIGHT="29" BORDER="0"
 SRC="sing_657.png"
 ALT="\begin{displaymath}I_1=&lt;y^{a_j^+}- x_j y^{a_j^-} \vert j=1,\ldots, n&gt;.\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
We introduce a further variable <IMG
 WIDTH="10" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_400.png"
 ALT="$t$"> and adjoin the binomial <!-- MATH
 $t\cdot
y_1\cdot\ldots\cdot y_m -1$
 -->
<IMG
 WIDTH="125" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_658.png"
 ALT="$t\cdot
y_1\cdot\ldots\cdot y_m -1$"> to the generating set of <IMG
 WIDTH="18" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_659.png"
 ALT="$I_1$">, obtaining
an ideal <IMG
 WIDTH="18" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_660.png"
 ALT="$I_2$"> in the polynomial ring <!-- MATH
 $K[t,
y_1,\ldots,y_m,x_1,\ldots,x_n]$
 -->
<IMG
 WIDTH="187" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_661.png"
 ALT="$K[t,
y_1,\ldots,y_m,x_1,\ldots,x_n]$">. <IMG
 WIDTH="18" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_660.png"
 ALT="$I_2$"> is saturated w.r.t. all
variables because all variables are invertible modulo <IMG
 WIDTH="18" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_660.png"
 ALT="$I_2$">. Now <IMG
 WIDTH="22" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_649.png"
 ALT="$I_A$">
can be computed from <IMG
 WIDTH="18" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_660.png"
 ALT="$I_2$"> by eliminating the variables
<!-- MATH
 $t,y_1,\ldots,y_m$
 -->
<IMG
 WIDTH="87" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_662.png"
 ALT="$t,y_1,\ldots,y_m$">.|;

$l2h_cache_key = q/\quad \quad $x^a < x^b \Leftrightarrow \exists\  1 \leq i \leq n :
M_1 a = \; M_1 b, \ldots, M_{i-1} a = \; M_{i-1} b$ and $M_i a < \; M_i b$./;
$l2h_cache{$l2h_cache_key} = q|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<!-- MATH
 $x^a < x^b \Leftrightarrow \exists\  1 \leq i \leq n :
M_1 a = \; M_1 b, \ldots, M_{i-1} a = \; M_{i-1} b$
 -->
<IMG
 WIDTH="412" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_489.png"
 ALT="$x^a &lt; x^b \Leftrightarrow \exists\ 1 \leq i \leq n :
M_1 a = \; M_1 b, \ldots, M_{i-1} a = \; M_{i-1} b$"> and <!-- MATH
 $M_i a < \; M_i b$
 -->
<IMG
 WIDTH="87" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_490.png"
 ALT="$M_i a &lt; \; M_i b$">.|;

$l2h_cache_key = q/{\sc Sca}/;
$l2h_cache{$l2h_cache_key} = q|S<SMALL>CA</SMALL>|;

$l2h_cache_key = q/$GR$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="29" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_189.png"
 ALT="$GR$">|;

$l2h_cache_key = q/  $x^{e_i}$/;
$l2h_cache{$l2h_cache_key} = q|  <IMG
 WIDTH="25" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_119.png"
 ALT="$x^{e_i}$">|;

$l2h_cache_key = q/For a subset $G \subset T := K\langle x_1,\dots,x_n \rangle$,
define a \textbf{leading ideal} of $G$ to be the two-sided ideal
$L(G) \; = \; {}_{T} \langle$ $\; \{lm(g) \;|\; g \in G\setminus\{0\} \}$ $\; \rangle_{T} \subseteq T$.

Let $<$ be a fixed monomial ordering on $T$.
We say that a subset $G \subset I$ is a \textbf{(two-sided) Groebner basis} for the ideal $I$ with respect to $<$, if $L(G) = L(I)$. That is $\forall f\in I\setminus\{0\}$ there exists $g\in G$, such that
$lm(g)$ divides $lm(f)$./;
$l2h_cache{$l2h_cache_key} = q|For a subset <!-- MATH
 $G \subset T := K\langle x_1,\dots,x_n \rangle$
 -->
<IMG
 WIDTH="171" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_315.png"
 ALT="$G \subset T := K\langle x_1,\dots,x_n \rangle$">,
define a <B>leading ideal</B> of <IMG
 WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_186.png"
 ALT="$G$"> to be the two-sided ideal
<!-- MATH
 $L(G) \; = \; {}_{T} \langle$
 -->
<IMG
 WIDTH="86" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_316.png"
 ALT="$L(G) \; = \; {}_{T} \langle$"> <!-- MATH
 $\; \{lm(g) \;\|\; g \in G\setminus\{0\} \}$
 -->
<IMG
 WIDTH="156" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_317.png"
 ALT="$\; \{lm(g) \;\vert\; g \in G\setminus\{0\} \}$"> <!-- MATH
 $\; \rangle_{T} \subseteq T$
 -->
<IMG
 WIDTH="58" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_318.png"
 ALT="$\; \rangle_{T} \subseteq T$">.

<P>
Let <IMG
 WIDTH="17" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_223.png"
 ALT="$&lt;$"> be a fixed monomial ordering on <IMG
 WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_319.png"
 ALT="$T$">.
We say that a subset <IMG
 WIDTH="46" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_247.png"
 ALT="$G\subset I$"> is a <B>(two-sided) Groebner basis</B> for the ideal <IMG
 WIDTH="12" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_248.png"
 ALT="$I$"> with respect to <IMG
 WIDTH="17" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_223.png"
 ALT="$&lt;$">, if <IMG
 WIDTH="93" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_249.png"
 ALT="$L(G)=L(I)$">. That is <!-- MATH
 $\forall f\in I\setminus\{0\}$
 -->
<IMG
 WIDTH="89" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_320.png"
 ALT="$\forall f\in I\setminus\{0\}$"> there exists <IMG
 WIDTH="44" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_251.png"
 ALT="$g\in G$">, such that
<IMG
 WIDTH="44" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_321.png"
 ALT="$lm(g)$"> divides <IMG
 WIDTH="45" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_322.png"
 ALT="$lm(f)$">.|;

$l2h_cache_key = q/$>_c$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="23" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_691.png"
 ALT="$&gt;_c$">|;

$l2h_cache_key = q/{\sc Singular}/;
$l2h_cache{$l2h_cache_key} = q|S<SMALL>INGULAR</SMALL>|;

$l2h_cache_key = q/$K[x_0,\dots,x_n]$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $K[x_0,\dots,x_n]$
 -->
<IMG
 WIDTH="97" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_339.png"
 ALT="$K[x_0,\dots,x_n]$">|;

$l2h_cache_key = q/$ \{ x_j x_i=c_{ij} \cdot x_i x_j + d_{ij}, 1 \leq i <j \leq k \}, $
where $c_{ij}$ and $d_{ij}$ must be put into two strictly upper/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $\{ x_j x_i=c_{ij} \cdot x_i x_j + d_{ij}, 1 \leq i <j \leq k \},$
 -->
<IMG
 WIDTH="275" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_206.png"
 ALT="$ \{ x_j x_i=c_{ij} \cdot x_i x_j + d_{ij}, 1 \leq i &lt;j \leq k \}, $">
where <IMG
 WIDTH="22" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_207.png"
 ALT="$c_{ij}$"> and <IMG
 WIDTH="24" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_208.png"
 ALT="$d_{ij}$"> must be put into two strictly upper|;

$l2h_cache_key = q/$(x,y,z)$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="56" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_36.png"
 ALT="$(x,y,z)$">|;

$l2h_cache_key = q/$dim_{Q(t)}Q(t)[x,y]\/j$./;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $dim_{Q(t)}Q(t)[x,y]/j$
 -->
<IMG
 WIDTH="137" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_332.png"
 ALT="$dim_{Q(t)}Q(t)[x,y]/j$">.|;

$l2h_cache_key = q/$i_1$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="17" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_70.png"
 ALT="$i_1$">|;

$l2h_cache_key = q/  The general error-locator polynomial  actually is an element of the reduced Gr\"obner basis of $\langle F'_C \rangle$. Having this polynomial,
  decoding of the cyclic code $C$ reduces to univariate factorization./;
$l2h_cache{$l2h_cache_key} = q|  The general error-locator polynomial  actually is an element of the reduced Gr&#246;bner basis of <!-- MATH
 $\langle F'_C \rangle$
 -->
<IMG
 WIDTH="37" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_774.png"
 ALT="$\langle F'_C \rangle$">. Having this polynomial,
  decoding of the cyclic code <IMG
 WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_77.png"
 ALT="$C$"> reduces to univariate factorization.|;

$l2h_cache_key = q/For a $G$--algebra $A$, generated by $n$/;
$l2h_cache{$l2h_cache_key} = q|For a <IMG
 WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_186.png"
 ALT="$G$">-algebra <IMG
 WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_187.png"
 ALT="$A$">, generated by <IMG
 WIDTH="14" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_17.png"
 ALT="$n$">|;

$l2h_cache_key = q/$\quad$ (dp(3), a(1,2,3),dp(3)):
$\left(\matrix{
1&  1&  1&  0&  0&  0 \cr
0&  0&  -1&  0&  0&  0 \cr
0&  -1&  0&  0&  0&  0 \cr
0&  0&  0&  1&  2&  3 \cr
0&  0&  0&  1&  1&  1 \cr
0&  0&  0&  0&  0&  -1 \cr
0&  0&  0&  0&  -1&  0 \cr
 }\right)$

$\quad$ (a(1,2,3,4,5),Dp(3), ds(3)):
$\left(\matrix{
1&  2&  3&  4&  5&  0 \cr
1&  1&  1&  0&  0&  0 \cr
1&  0&  0&  0&  0&  0 \cr
0&  1&  0&  0&  0&  0 \cr
0&  0&  0&  -1&  -1&  -1 \cr
0&  0&  0&  0&  0 & -1 \cr
0&  0&  0&  0&  -1&  0 \cr
 }\right)$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="20" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_494.png"
 ALT="$\quad$"> (dp(3), a(1,2,3),dp(3)):
<!-- MATH
 $\left(\matrix{
1&  1&  1&  0&  0&  0 \cr
0&  0&  -1&  0&  0&  0 \cr
0&  -1&  0&  0&  0&  0 \cr
0&  0&  0&  1&  2&  3 \cr
0&  0&  0&  1&  1&  1 \cr
0&  0&  0&  0&  0&  -1 \cr
0&  0&  0&  0&  -1&  0 \cr
 }\right)$
 -->
<IMG
 WIDTH="214" HEIGHT="146" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_507.png"
 ALT="$\left(\matrix{
1&amp; 1&amp; 1&amp; 0&amp; 0&amp; 0 \cr
0&amp; 0&amp; -1&amp; 0&amp; 0&amp; 0 \cr
0&amp; -1&amp; 0&amp; 0&amp; 0&amp; 0 \cr...
... \cr
0&amp; 0&amp; 0&amp; 1&amp; 1&amp; 1 \cr
0&amp; 0&amp; 0&amp; 0&amp; 0&amp; -1 \cr
0&amp; 0&amp; 0&amp; 0&amp; -1&amp; 0 \cr
}\right)$">

<P>
<IMG
 WIDTH="20" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_494.png"
 ALT="$\quad$"> (a(1,2,3,4,5),Dp(3), ds(3)):
<!-- MATH
 $\left(\matrix{
1&  2&  3&  4&  5&  0 \cr
1&  1&  1&  0&  0&  0 \cr
1&  0&  0&  0&  0&  0 \cr
0&  1&  0&  0&  0&  0 \cr
0&  0&  0&  -1&  -1&  -1 \cr
0&  0&  0&  0&  0 & -1 \cr
0&  0&  0&  0&  -1&  0 \cr
 }\right)$
 -->
<IMG
 WIDTH="202" HEIGHT="146" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_508.png"
 ALT="$\left(\matrix{
1&amp; 2&amp; 3&amp; 4&amp; 5&amp; 0 \cr
1&amp; 1&amp; 1&amp; 0&amp; 0&amp; 0 \cr
1&amp; 0&amp; 0&amp; 0&amp; 0&amp; 0 \cr
0...
...
0&amp; 0&amp; 0&amp; -1&amp; -1&amp; -1 \cr
0&amp; 0&amp; 0&amp; 0&amp; 0 &amp; -1 \cr
0&amp; 0&amp; 0&amp; 0&amp; -1&amp; 0 \cr
}\right)$">|;

$l2h_cache_key = q/$Z\/100[x,y,z]$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="96" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_58.png"
 ALT="$Z/100[x,y,z]$">|;

$l2h_cache_key = q/$a.$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_47.png"
 ALT="$a.$">|;

$l2h_cache_key = q/$d$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="13" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_170.png"
 ALT="$d$">|;

$l2h_cache_key = q/$K[Y]$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="41" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_389.png"
 ALT="$K[Y]$">|;

$l2h_cache_key = q/$coker(A)=F_0\/M$
$$...\longrightarrow F_2 \buildrel{A_2}\over{\longrightarrow} F_1
\buildrel{A_1}\over{\longrightarrow} F_0\longrightarrow F_0\/M
\longrightarrow 0,$$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $coker(A)=F_0/M$
 -->
<IMG
 WIDTH="130" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_163.png"
 ALT="$coker(A)=F_0/M$">
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
...\longrightarrow F_2 \buildrel{A_2}\over{\longrightarrow} F_1
\buildrel{A_1}\over{\longrightarrow} F_0\longrightarrow F_0/M
\longrightarrow 0,
\end{displaymath}
 -->

<IMG
 WIDTH="290" HEIGHT="28" BORDER="0"
 SRC="sing_164.png"
 ALT="\begin{displaymath}...\longrightarrow F_2 \buildrel{A_2}\over{\longrightarrow} F...
...er{\longrightarrow} F_0\longrightarrow F_0/M
\longrightarrow 0,\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>|;

$l2h_cache_key = q/$1 < x$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="42" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_62.png"
 ALT="$1 &lt; x$">|;

$l2h_cache_key = q/Let $A$ denote an $m\times n$ matrix with integral coefficients. For $u
\in Z\!\!\! Z^n$, we define $u^+,u^-$ to be the uniquely determined
vectors with nonnegative coefficients and disjoint support (i.e.,
$u_i^+=0$ or $u_i^-=0$ for each component $i$) such that
$u=u^+-u^-$. For $u\geq 0$ component-wise, let $x^u$ denote the monomial
$x_1^{u_1}\cdot\ldots\cdot x_n^{u_n}\in K[x_1,\ldots,x_n]$.

The ideal
$$ I_A:=(x^{u^+}-x^{u^-} | u\in\ker(A)\cap Z\!\!\! Z^n)\ \subset
K[x_1,\ldots,x_n] $$
is called a \bf toric ideal. \rm

The first problem in computing toric ideals is to find a finite
generating set: Let $v_1,\ldots,v_r$ be a lattice basis of $\ker(A)\cap
Z\!\!\! Z^n$ (i.e, a basis of the $Z\!\!\! Z$-module). Then
$$ I_A:=I:(x_1\cdot\ldots\cdot x_n)^\infty $$
where
$$ I=<x^{v_i^+}-x^{v_i^-}|i=1,\ldots,r> $$/;
$l2h_cache{$l2h_cache_key} = q|Let <IMG
 WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_187.png"
 ALT="$A$"> denote an <IMG
 WIDTH="47" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_67.png"
 ALT="$ m \times n $"> matrix with integral coefficients. For <!-- MATH
 $u
\in Z\!\!\! Z^n$
 -->
<IMG
 WIDTH="57" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_636.png"
 ALT="$u
\in Z\!\!\! Z^n$">, we define <IMG
 WIDTH="51" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_637.png"
 ALT="$u^+,u^-$"> to be the uniquely determined
vectors with nonnegative coefficients and disjoint support (i.e.,
<IMG
 WIDTH="53" HEIGHT="35" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_638.png"
 ALT="$u_i^+=0$"> or <IMG
 WIDTH="53" HEIGHT="35" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_639.png"
 ALT="$u_i^-=0$"> for each component <IMG
 WIDTH="10" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_55.png"
 ALT="$i$">) such that
<IMG
 WIDTH="93" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_640.png"
 ALT="$u=u^+-u^-$">. For <IMG
 WIDTH="42" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_641.png"
 ALT="$u\geq 0$"> component-wise, let <IMG
 WIDTH="22" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_642.png"
 ALT="$x^u$"> denote the monomial
<!-- MATH
 $x_1^{u_1}\cdot\ldots\cdot x_n^{u_n}\in K[x_1,\ldots,x_n]$
 -->
<IMG
 WIDTH="207" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_643.png"
 ALT="$x_1^{u_1}\cdot\ldots\cdot x_n^{u_n}\in K[x_1,\ldots,x_n]$">.

<P>
The ideal
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
I_A:=(x^{u^+}-x^{u^-} \| u\in\ker(A)\cap Z\!\!\! Z^n)\ \subset
K[x_1,\ldots,x_n]
\end{displaymath}
 -->

<IMG
 WIDTH="367" HEIGHT="28" BORDER="0"
 SRC="sing_644.png"
 ALT="\begin{displaymath}I_A:=(x^{u^+}-x^{u^-} \vert u\in\ker(A)\cap Z\!\!\! Z^n)\ \subset
K[x_1,\ldots,x_n] \end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
is called a <B>toric ideal. </B>
<P>
The first problem in computing toric ideals is to find a finite
generating set: Let <!-- MATH
 $v_1,\ldots,v_r$
 -->
<IMG
 WIDTH="69" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_485.png"
 ALT="$v_1,
\ldots, v_r$"> be a lattice basis of <!-- MATH
 $\ker(A)\cap
Z\!\!\! Z^n$
 -->
<IMG
 WIDTH="92" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_645.png"
 ALT="$\ker(A)\cap
Z\!\!\! Z^n$"> (i.e, a basis of the <IMG
 WIDTH="20" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_646.png"
 ALT="$Z\!\!\! Z$">-module). Then
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
I_A:=I:(x_1\cdot\ldots\cdot x_n)^\infty
\end{displaymath}
 -->

<IMG
 WIDTH="164" HEIGHT="28" BORDER="0"
 SRC="sing_647.png"
 ALT="\begin{displaymath}I_A:=I:(x_1\cdot\ldots\cdot x_n)^\infty \end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
where
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
I=<x^{v_i^+}-x^{v_i^-}\|i=1,\ldots,r>
\end{displaymath}
 -->

<IMG
 WIDTH="210" HEIGHT="28" BORDER="0"
 SRC="sing_648.png"
 ALT="\begin{displaymath}I=&lt;x^{v_i^+}-x^{v_i^-}\vert i=1,\ldots,r&gt; \end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>|;

$l2h_cache_key = q/$I \cap K[Y_1,\ldots,Y_r]$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $I \cap K[Y_1,\ldots,Y_r]$
 -->
<IMG
 WIDTH="122" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_384.png"
 ALT="$I \cap K[Y_1,\ldots,Y_r]$">|;

$l2h_cache_key = q/$M$,/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="21" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_13.png"
 ALT="$M$">,|;

$l2h_cache_key = q/$sat(j+(f),m)$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="108" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_343.png"
 ALT="$sat(j+(f),m)$">|;

$l2h_cache_key = q/ $U'_q({\rm so}_m)$ and $U'_q({\rm iso}_m)$.
  {arXiv. math. QA\/9911130}, (1999)/;
$l2h_cache{$l2h_cache_key} = q| <!-- MATH
 $U'_q({\rm so}_m)$
 -->
<IMG
 WIDTH="61" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_286.png"
 ALT="$U'_q({\rm so}_m)$"> and <!-- MATH
 $U'_q({\rm iso}_m)$
 -->
<IMG
 WIDTH="65" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_287.png"
 ALT="$U'_q({\rm iso}_m)$">.
  arXiv. math. QA/9911130, (1999)|;

$l2h_cache_key = q/$n$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="14" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_17.png"
 ALT="$n$">|;

$l2h_cache_key = q/$$
\hbox{\tt modulo}(A,B)=\hbox{ker}(R^r
\buildrel{A}\over{\longrightarrow}R^m\/\hbox{Im}(B)) \; .
$$/;
$l2h_cache{$l2h_cache_key} = q|<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
\hbox{\tt modulo}(A,B)=\hbox{ker}(R^r
\buildrel{A}\over{\longrightarrow}R^m/\hbox{Im}(B)) \; .
\end{displaymath}
 -->

<IMG
 WIDTH="287" HEIGHT="28" BORDER="0"
 SRC="sing_379.png"
 ALT="\begin{displaymath}
\hbox{\tt modulo}(A,B)=\hbox{ker}(R^r
\buildrel{A}\over{\longrightarrow}R^m/\hbox{Im}(B)) \; .
\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>|;

$l2h_cache_key = q/$R \rightarrow C$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $R \rightarrow C$
 -->
<IMG
 WIDTH="54" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_82.png"
 ALT="$R \rightarrow C$">|;

$l2h_cache_key = q/  Then $f_i=\sum_{i=1}^ng_{ij}\xi_j$ span the space $L$, so that $g_{ij}=f_i(P_j)$./;
$l2h_cache{$l2h_cache_key} = q|  Then <!-- MATH
 $f_i=\sum_{i=1}^ng_{ij}\xi_j$
 -->
<IMG
 WIDTH="112" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_825.png"
 ALT="$f_i=\sum_{i=1}^ng_{ij}\xi_j$"> span the space <IMG
 WIDTH="15" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_811.png"
 ALT="$L$">, so that <!-- MATH
 $g_{ij}=f_i(P_j)$
 -->
<IMG
 WIDTH="87" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_826.png"
 ALT="$g_{ij}=f_i(P_j)$">.|;

$l2h_cache_key = q/For all these orderings, we have Loc $K[x]$ = $K[x]$/;
$l2h_cache{$l2h_cache_key} = q|For all these orderings, we have Loc <IMG
 WIDTH="37" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_448.png"
 ALT="$K[x]$"> = <IMG
 WIDTH="37" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_448.png"
 ALT="$K[x]$">|;

$l2h_cache_key = q/$M_i={\tt module} (A_i)$, i=1..k./;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $M_i={\tt module} (A_i)$
 -->
<IMG
 WIDTH="126" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_134.png"
 ALT="$M_i={\tt module} (A_i)$">, i=1..k.|;

$l2h_cache_key = q/$r$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="12" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_296.png"
 ALT="$r$">|;

$l2h_cache_key = q/$i+j$ of the $j$-th/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="36" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_171.png"
 ALT="$i+j$"> of the <IMG
 WIDTH="12" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_53.png"
 ALT="$j$">-th|;

$l2h_cache_key = q/$r^3\/MD$./;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="57" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_11.png"
 ALT="$r^3/MD$">.|;

$l2h_cache_key = q/$x_0$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="20" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_337.png"
 ALT="$x_0$">|;

$l2h_cache_key = q/$v_1,\ldots,v_r$
for the integer kernel of $A$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $v_1,\ldots,v_r$
 -->
<IMG
 WIDTH="69" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_485.png"
 ALT="$v_1,
\ldots, v_r$">
for the integer kernel of <IMG
 WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_187.png"
 ALT="$A$">|;

$l2h_cache_key = q/$Q[a,b,c,d]$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="77" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_30.png"
 ALT="$Q[a,b,c,d]$">|;

$l2h_cache_key = q/$\forall p,q,s,t \in X$, if $s<t$, then $p\cdot s \cdot q< p\cdot t \cdot q$,/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $\forall p,q,s,t \in X$
 -->
<IMG
 WIDTH="97" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_305.png"
 ALT="$\forall p,q,s,t \in X$">, if <IMG
 WIDTH="39" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_306.png"
 ALT="$s&lt;t$">, then <!-- MATH
 $p\cdot s \cdot q< p\cdot t \cdot q$
 -->
<IMG
 WIDTH="116" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_307.png"
 ALT="$p\cdot s \cdot q&lt; p\cdot t \cdot q$">,|;

$l2h_cache_key = q/Let $R = \hbox{Loc}_< K[\underline{x}]$ and let $I$ be a submodule of $R^r$.
Note that for r=1 this means that $I$ is an ideal in $R$.
Denote by $L(I)$ the submodule of $R^r$ generated by the leading terms
of elements of $I$, i.e. by $\left\{L(f) \mid f \in I\right\}$.
Then $f_1, \ldots, f_s \in I$ is called a {\bf standard basis} of $I$
if $L(f_1), \ldots, L(f_s)$ generate $L(I)$.

A standard basis is {\bf minimal} if $\forall i: (f_1,..,f_{i-1},f_{i+1},..,f_s) \neq I$.

A minimal standard basis is {\bf completely reduced} if $\forall i: {\tt reduce}(f_i,(f_1,..,f_{i-1},f_{i+1},..,f_s))=f_i$/;
$l2h_cache{$l2h_cache_key} = q|Let <!-- MATH
 $R = \hbox{Loc}_< K[\underline{x}]$
 -->
<IMG
 WIDTH="106" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_966.png"
 ALT="$R = \hbox{Loc}_&lt; K[\underline{x}]$"> and let <IMG
 WIDTH="12" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_967.png"
 ALT="$I$"> be a submodule of <IMG
 WIDTH="23" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_968.png"
 ALT="$R^r$">.
Note that for r=1 this means that <IMG
 WIDTH="12" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_967.png"
 ALT="$I$"> is an ideal in <IMG
 WIDTH="16" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_969.png"
 ALT="$R$">.
Denote by <IMG
 WIDTH="36" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_970.png"
 ALT="$L(I)$"> the submodule of <IMG
 WIDTH="23" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_968.png"
 ALT="$R^r$"> generated by the leading terms
of elements of <IMG
 WIDTH="12" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_967.png"
 ALT="$I$">, i.e. by <!-- MATH
 $\left\{L(f) \mid f \in I\right\}$
 -->
<IMG
 WIDTH="103" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_971.png"
 ALT="$\left\{L(f) \mid f \in I\right\}$">.
Then <!-- MATH
 $f_1, \ldots, f_s \in I$
 -->
<IMG
 WIDTH="97" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_972.png"
 ALT="$f_1, \ldots, f_s \in I$"> is called a <B>standard basis</B> of <IMG
 WIDTH="12" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_967.png"
 ALT="$I$">
if <!-- MATH
 $L(f_1), \ldots, L(f_s)$
 -->
<IMG
 WIDTH="115" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_973.png"
 ALT="$L(f_1), \ldots, L(f_s)$"> generate <IMG
 WIDTH="36" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_970.png"
 ALT="$L(I)$">.

<P>
A standard basis is <B>minimal</B> if <!-- MATH
 $\forall i: (f_1,..,f_{i-1},f_{i+1},..,f_s) \neq I$
 -->
<IMG
 WIDTH="215" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_974.png"
 ALT="$\forall i: (f_1,..,f_{i-1},f_{i+1},..,f_s) \neq I$">.

<P>
A minimal standard basis is <B>completely reduced</B> if <!-- MATH
 $\forall i: {\tt reduce}(f_i,(f_1,..,f_{i-1},f_{i+1},..,f_s))=f_i$
 -->
<IMG
 WIDTH="302" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_975.png"
 ALT="$\forall i: {\tt reduce}(f_i,(f_1,..,f_{i-1},f_{i+1},..,f_s))=f_i$">|;

$l2h_cache_key = q/$\{g_1, \dots , g_s\}$,/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $\{g_1, \dots , g_s\}$
 -->
<IMG
 WIDTH="85" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_280.png"
 ALT="$\{g_1, \dots , g_s\}$">,|;

$l2h_cache_key = q/$R^5$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="23" HEIGHT="17" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_19.png"
 ALT="$R^5$">|;

$l2h_cache_key = q/Let $R$ be a quotient of $\hbox{Loc}_< K[\underline{x}]$ and let \hbox{$I=(g_1, ..., g_s)$} be a submodule of $R^r$.
Then the {\bf module of syzygies} (or {\bf 1st syzygy module}, {\bf module of relations}) of $I$, syz($I$), is defined to be the kernel of the map \hbox{$R^s \rightarrow R^r,\; \sum_{i=1}^s w_ie_i \mapsto \sum_{i=1}^s w_ig_i$.}/;
$l2h_cache{$l2h_cache_key} = q|Let <IMG
 WIDTH="16" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_51.png"
 ALT="$R$"> be a quotient of <!-- MATH
 $\hbox{Loc}_< K[\underline{x}]$
 -->
<IMG
 WIDTH="73" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_556.png"
 ALT="$\hbox{Loc}_&lt; K[\underline{x}]$"> and let <!-- MATH
 $I=(g_1, ..., g_s)$
 -->
<IMG
 WIDTH="103" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_557.png"
 ALT="$I=(g_1, ..., g_s)$"> be a submodule of <IMG
 WIDTH="23" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_523.png"
 ALT="$R^r$">.
Then the <B>module of syzygies</B> (or <B>1st syzygy module</B>, <B>module of relations</B>) of <IMG
 WIDTH="12" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_248.png"
 ALT="$I$">, syz(<IMG
 WIDTH="12" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_248.png"
 ALT="$I$">), is defined to be the kernel of the map <!-- MATH
 $R^s \rightarrow R^r,\; \sum_{i=1}^s w_ie_i \mapsto \sum_{i=1}^s w_ig_i$
 -->
<IMG
 WIDTH="244" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_558.png"
 ALT="$R^s \rightarrow R^r,\; \sum_{i=1}^s w_ie_i \mapsto \sum_{i=1}^s w_ig_i$">.|;

$l2h_cache_key = q/{\sc Singular:Plural}/;
$l2h_cache{$l2h_cache_key} = q|S<SMALL>INGULAR:</SMALL>P<SMALL>LURAL</SMALL>|;

$l2h_cache_key = q/$L(g_i) | L(g_j)$ for any $i \neq j$,/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $L(g_i) \| L(g_j)$
 -->
<IMG
 WIDTH="82" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_145.png"
 ALT="$L(g_i) \vert L(g_j)$"> for any <IMG
 WIDTH="38" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_142.png"
 ALT="$i\neq j$">,|;

$l2h_cache_key = q/$\{g_1,\dots,g_{i-1},g_{i+1},\dots,g_s\}$,/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $\{g_1,\dots,g_{i-1},g_{i+1},\dots,g_s\}$
 -->
<IMG
 WIDTH="185" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_144.png"
 ALT="$\{g_1,\dots,g_{i-1},g_{i+1},\dots,g_s\}$">,|;

$l2h_cache_key = q/$$...\longrightarrow F_2 \buildrel{A_2}\over{\longrightarrow} F_1
\buildrel{A_1}\over{\longrightarrow} R\longrightarrow R\/I
\longrightarrow 0.$$/;
$l2h_cache{$l2h_cache_key} = q|<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
...\longrightarrow F_2 \buildrel{A_2}\over{\longrightarrow} F_1
\buildrel{A_1}\over{\longrightarrow} R\longrightarrow R/I
\longrightarrow 0.
\end{displaymath}
 -->

<IMG
 WIDTH="271" HEIGHT="28" BORDER="0"
 SRC="sing_133.png"
 ALT="\begin{displaymath}...\longrightarrow F_2 \buildrel{A_2}\over{\longrightarrow} F...
...}\over{\longrightarrow} R\longrightarrow R/I
\longrightarrow 0.\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>|;

$l2h_cache_key = q/$k^r\times(k^n,0)$,/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $k^r\times(k^n,0)$
 -->
<IMG
 WIDTH="84" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_350.png"
 ALT="$k^r\times(k^n,0)$">,|;

$l2h_cache_key = q/$\hbox{Ext}^k(R\/J,R)$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $\hbox{Ext}^k(R/J,R)$
 -->
<IMG
 WIDTH="98" HEIGHT="37" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_360.png"
 ALT="$\hbox{Ext}^k(R/J,R)$">|;

$l2h_cache_key = q/$p$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="12" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_23.png"
 ALT="$p$">|;

$l2h_cache_key = q/Loc $K[x]$/;
$l2h_cache{$l2h_cache_key} = q|Loc <IMG
 WIDTH="37" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_448.png"
 ALT="$K[x]$">|;

$l2h_cache_key = q/  Construct a Gr\"obner basis $\{g_1,\dots,g_m\}$ for an ideal $I$ of polynomials from $F_q[X_1,\dots,X_s]$ that vanish at the points
  $P_1,\dots,P_s$. Define $\xi_i\in F_q[X_1,\dots,X_s]$ such that $\xi_i(P_i)=1,\xi_i(P_j)=0,i\ne j$./;
$l2h_cache{$l2h_cache_key} = q|  Construct a Gr&#246;bner basis <!-- MATH
 $\{g_1,\dots,g_m\}$
 -->
<IMG
 WIDTH="90" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_821.png"
 ALT="$\{g_1,\dots,g_m\}$"> for an ideal <IMG
 WIDTH="12" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_248.png"
 ALT="$I$"> of polynomials from <!-- MATH
 $F_q[X_1,\dots,X_s]$
 -->
<IMG
 WIDTH="106" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_822.png"
 ALT="$F_q[X_1,\dots,X_s]$"> that vanish at the points
  <IMG
 WIDTH="74" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_819.png"
 ALT="$P_1,\dots,P_s$">. Define <!-- MATH
 $\xi_i\in F_q[X_1,\dots,X_s]$
 -->
<IMG
 WIDTH="138" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_823.png"
 ALT="$\xi_i\in F_q[X_1,\dots,X_s]$"> such that <!-- MATH
 $\xi_i(P_i)=1,\xi_i(P_j)=0,i\ne j$
 -->
<IMG
 WIDTH="192" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_824.png"
 ALT="$\xi_i(P_i)=1,\xi_i(P_j)=0,i\ne j$">.|;

$l2h_cache_key = q/$H_1$./;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="25" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_157.png"
 ALT="$H_1$">.|;

$l2h_cache_key = q/$a \in Q$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="45" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_333.png"
 ALT="$a \in Q$">|;

$l2h_cache_key = q/  $f = M[1,1]\cdot M[2,1]+\ldots+M[1,n]\cdot M[2,n].$/;
$l2h_cache{$l2h_cache_key} = q|  <!-- MATH
 $f = M[1,1]\cdot M[2,1]+\ldots+M[1,n]\cdot M[2,n].$
 -->
<IMG
 WIDTH="319" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_101.png"
 ALT="$f = M[1,1]\cdot M[2,1]+\ldots+M[1,n]\cdot M[2,n].$">|;

$l2h_cache_key = q/  $z^i$/;
$l2h_cache{$l2h_cache_key} = q|  <IMG
 WIDTH="18" HEIGHT="17" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_105.png"
 ALT="$z^i$">|;

$l2h_cache_key = q/For a set $S \subset A^r$, define
$L(S)$ to be the $K$--vector space, spanned on the leading monomials
of elements of $S$, $L(S) = \oplus \{K x^{\alpha} e_i \mid \exists s \in S, \hbox{LM(s)}=x^{\alpha}e_i\}$.
We call $L(S)$ the \textbf{span of leading monomials} of $S$./;
$l2h_cache{$l2h_cache_key} = q|For a set <IMG
 WIDTH="55" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_242.png"
 ALT="$S \subset A^r$">, define
<IMG
 WIDTH="38" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_243.png"
 ALT="$L(S)$"> to be the <IMG
 WIDTH="19" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_48.png"
 ALT="$K$">-vector space, spanned on the leading monomials
of elements of <IMG
 WIDTH="15" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_244.png"
 ALT="$S$">, <!-- MATH
 $L(S) = \oplus \{K x^{\alpha} e_i \mid \exists s \in S, \hbox{LM(s)}=x^{\alpha}e_i\}$
 -->
<IMG
 WIDTH="294" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_245.png"
 ALT="$L(S) = \oplus \{K x^{\alpha} e_i \mid \exists s \in S, \hbox{LM(s)}=x^{\alpha}e_i\}$">.
We call <IMG
 WIDTH="38" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_243.png"
 ALT="$L(S)$"> the <B>span of leading monomials</B> of <IMG
 WIDTH="15" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_244.png"
 ALT="$S$">.|;

$l2h_cache_key = q/$x_4,x_5,x_6$:/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="67" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_34.png"
 ALT="$x_4,x_5,x_6$">:|;

$l2h_cache_key = q/In this case a vector is written as $[v_1, \ldots, v_r]$./;
$l2h_cache{$l2h_cache_key} = q|In this case a vector is written as <!-- MATH
 $[v_1, \ldots, v_r]$
 -->
<IMG
 WIDTH="78" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_487.png"
 ALT="$[v_1, \ldots, v_r]$">.|;

$l2h_cache_key = q/A discrete monomial valuation $v$ on $R = K[X_1 ,\ldots,X_n]$ is determined by
the values $v(X_j)$ of the indeterminates. This function computes the
subalgebra $S = \{ f \in R : v_i ( f ) \geq 0,\ i = 1,\ldots,r\}$ for several
such valuations $v_i$, $i=1,\ldots,r$. It needs the matrix $V = (v_i(X_j))$ as
its input.

This function simultaneously determines the $S$-submodule
$M = \{ f \in R : v_i(f) \geq w_i ,\ i = 1,\ldots,r\}$ for integers
$w_1,\ldots\,w_r$. (If $w_i \geq 0$ for all $i$, $M$ is an ideal of $S$.)
The numbers $w_i$ form the $(n+1)$th column of the input matrix./;
$l2h_cache{$l2h_cache_key} = q|A discrete monomial valuation <IMG
 WIDTH="12" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_311.png"
 ALT="$v$"> on <!-- MATH
 $R = K[X_1 ,\ldots,X_n]$
 -->
<IMG
 WIDTH="139" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_896.png"
 ALT="$R = K[X_1 ,\ldots,X_n]$"> is determined by
the values <IMG
 WIDTH="45" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_921.png"
 ALT="$v(X_j)$"> of the indeterminates. This function computes the
subalgebra <!-- MATH
 $S = \{ f \in R : v_i ( f ) \geq 0,\ i = 1,\ldots,r\}$
 -->
<IMG
 WIDTH="261" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_922.png"
 ALT="$S = \{ f \in R : v_i ( f ) \geq 0,\ i = 1,\ldots,r\}$"> for several
such valuations <IMG
 WIDTH="17" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_429.png"
 ALT="$v_i$">, <IMG
 WIDTH="82" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_898.png"
 ALT="$i=1,\ldots,r$">. It needs the matrix <!-- MATH
 $V = (v_i(X_j))$
 -->
<IMG
 WIDTH="96" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_923.png"
 ALT="$V = (v_i(X_j))$"> as
its input.

<P>
This function simultaneously determines the <IMG
 WIDTH="15" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_244.png"
 ALT="$S$">-submodule
<!-- MATH
 $M = \{ f \in R : v_i(f) \geq w_i ,\ i = 1,\ldots,r\}$
 -->
<IMG
 WIDTH="276" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_924.png"
 ALT="$M = \{ f \in R : v_i(f) \geq w_i ,\ i = 1,\ldots,r\}$"> for integers
<!-- MATH
 $w_1,\ldots\,w_r$
 -->
<IMG
 WIDTH="72" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_925.png"
 ALT="$w_1,\ldots\,w_r$">. (If <IMG
 WIDTH="50" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_926.png"
 ALT="$w_i \geq 0$"> for all <IMG
 WIDTH="10" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_55.png"
 ALT="$i$">, <IMG
 WIDTH="21" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_13.png"
 ALT="$M$"> is an ideal of <IMG
 WIDTH="15" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_244.png"
 ALT="$S$">.)
The numbers <IMG
 WIDTH="21" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_927.png"
 ALT="$w_i$"> form the <IMG
 WIDTH="54" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_928.png"
 ALT="$(n+1)$">th column of the input matrix.|;

$l2h_cache_key = q/Let $R$ be a graded ring (e.g., $R = \hbox{Loc}_< K[\underline{x}]$) and
let $I \subset R^r$ be a graded submodule. Let
$$
  R^r = \bigoplus_a R\cdot e_{a,0} \buildrel A_1 \over \longleftarrow
        \bigoplus_a R\cdot e_{a,1} \longleftarrow \ldots \longleftarrow
        \bigoplus_a R\cdot e_{a,n} \longleftarrow 0
$$
be a minimal free resolution of $R^r\/I$ considered with homogeneous maps
of degree 0. Then the {\bf graded Betti number} $b_{i,j}$ of $R^r\/I$ is
the minimal number of generators $e_{a,j}$ in degree $i+j$ of the $j$-th
syzygy module of $R^r\/I$ (i.e., the $(j-1)$-st syzygy module of
$I$). Note that, by definition, the $0$-th syzygy module of $R^r\/I$ is $R^r$
and the 1st syzygy module of $R^r\/I$ is $I$./;
$l2h_cache{$l2h_cache_key} = q|Let <IMG
 WIDTH="16" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_51.png"
 ALT="$R$"> be a graded ring (e.g., <!-- MATH
 $R = \hbox{Loc}_< K[\underline{x}]$
 -->
<IMG
 WIDTH="106" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_522.png"
 ALT="$R = \hbox{Loc}_&lt; K[\underline{x}]$">) and
let <IMG
 WIDTH="53" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_564.png"
 ALT="$I \subset R^r$"> be a graded submodule. Let
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
R^r = \bigoplus_a R\cdot e_{a,0} \buildrel A_1 \over \longleftarrow
        \bigoplus_a R\cdot e_{a,1} \longleftarrow \ldots \longleftarrow
        \bigoplus_a R\cdot e_{a,n} \longleftarrow 0
\end{displaymath}
 -->

<IMG
 WIDTH="434" HEIGHT="44" BORDER="0"
 SRC="sing_565.png"
 ALT="\begin{displaymath}
R^r = \bigoplus_a R\cdot e_{a,0} \buildrel A_1 \over \longl...
...ts \longleftarrow
\bigoplus_a R\cdot e_{a,n} \longleftarrow 0
\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
be a minimal free resolution of <IMG
 WIDTH="40" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_566.png"
 ALT="$R^r/I$"> considered with homogeneous maps
of degree 0. Then the <B>graded Betti number</B> <IMG
 WIDTH="26" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_567.png"
 ALT="$b_{i,j}$"> of <IMG
 WIDTH="40" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_566.png"
 ALT="$R^r/I$"> is
the minimal number of generators <IMG
 WIDTH="29" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_568.png"
 ALT="$e_{a,j}$"> in degree <IMG
 WIDTH="36" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_171.png"
 ALT="$i+j$"> of the <IMG
 WIDTH="12" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_53.png"
 ALT="$j$">-th
syzygy module of <IMG
 WIDTH="40" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_566.png"
 ALT="$R^r/I$"> (i.e., the <IMG
 WIDTH="51" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_569.png"
 ALT="$(j-1)$">-st syzygy module of
<IMG
 WIDTH="12" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_248.png"
 ALT="$I$">). Note that, by definition, the <IMG
 WIDTH="12" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_2.png"
 ALT="$0$">-th syzygy module of <IMG
 WIDTH="40" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_566.png"
 ALT="$R^r/I$"> is <IMG
 WIDTH="23" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_523.png"
 ALT="$R^r$">
and the 1st syzygy module of <IMG
 WIDTH="40" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_566.png"
 ALT="$R^r/I$"> is <IMG
 WIDTH="12" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_248.png"
 ALT="$I$">.|;

$l2h_cache_key = q/$R(j)[x,y,z]$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="85" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_52.png"
 ALT="$R(j)[x,y,z]$">|;

$l2h_cache_key = q/Already Feynman and Rota encoded
the monomials (words) of the free algebra
$x_{i_1} x_{i_2} \dots x_{i_m} \in K\langle x_1,\ldots,x_n \rangle$
via the double-indexed letterplace
(that is encoding the letter (= variable) and its place in the word) monomials
$x(i_1 | 1) x(i_2 | 2) \dots x(i_m | m) \in K[X\times N]$, where $X=\{x_1,\ldots,x_n\}$
and $N$ is the monoid of natural numbers, starting with 0 which cannot be used as a place./;
$l2h_cache{$l2h_cache_key} = q|Already Feynman and Rota encoded
the monomials (words) of the free algebra
<!-- MATH
 $x_{i_1} x_{i_2} \dots x_{i_m} \in K\langle x_1,\ldots,x_n \rangle$
 -->
<IMG
 WIDTH="210" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_323.png"
 ALT="$x_{i_1} x_{i_2} \dots x_{i_m} \in K\langle x_1,\ldots,x_n \rangle$">
via the double-indexed letterplace
(that is encoding the letter (= variable) and its place in the word) monomials
<!-- MATH
 $x(i_1 \| 1) x(i_2 \| 2) \dots x(i_m \| m) \in K[X\times N]$
 -->
<IMG
 WIDTH="270" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_324.png"
 ALT="$x(i_1 \vert 1) x(i_2 \vert 2) \dots x(i_m \vert m) \in K[X\times N]$">, where <!-- MATH
 $X=\{x_1,\ldots,x_n\}$
 -->
<IMG
 WIDTH="125" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_325.png"
 ALT="$X=\{x_1,\ldots,x_n\}$">
and <IMG
 WIDTH="19" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_326.png"
 ALT="$N$"> is the monoid of natural numbers, starting with 0 which cannot be used as a place.|;

$l2h_cache_key = q/(${\tt L[i]}=M_i$/;
$l2h_cache{$l2h_cache_key} = q|(<!-- MATH
 ${\tt L[i]}=M_i$
 -->
<IMG
 WIDTH="72" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_135.png"
 ALT="${\tt L[i]}=M_i$">|;

$l2h_cache_key = q/$K[x]$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="37" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_448.png"
 ALT="$K[x]$">|;

$l2h_cache_key = q/$\forall \; f,g \in A^{opp}$, a new multiplication $*$ on $A^{opp}$
is defined to be $f*g := g \sharp f$./;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $\forall \; f,g \in A^{opp}$
 -->
<IMG
 WIDTH="93" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_213.png"
 ALT="$\forall \; f,g \in A^{opp}$">, a new multiplication <IMG
 WIDTH="12" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_214.png"
 ALT="$*$"> on <IMG
 WIDTH="36" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_203.png"
 ALT="$A^{opp}$">
is defined to be <!-- MATH
 $f*g := g \sharp f$
 -->
<IMG
 WIDTH="86" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_215.png"
 ALT="$f*g := g \sharp f$">.|;

$l2h_cache_key = q/$y_i * y_i = 0$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="75" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_295.png"
 ALT="$y_i * y_i = 0$">|;

$l2h_cache_key = q/${\tt R}^n$./;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="21" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_172.png"
 ALT="${\tt R}^n$">.|;

$l2h_cache_key = q/$1$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="12" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_290.png"
 ALT="$1$">|;

$l2h_cache_key = q/$Z\/7[x_1,\ldots,x_6]$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $Z/7[x_1,\ldots,x_6]$
 -->
<IMG
 WIDTH="108" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_32.png"
 ALT="$Z/7[x_1,\ldots,x_6]$">|;

$l2h_cache_key = q/$x^v$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="21" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_695.png"
 ALT="$x^v$">|;

$l2h_cache_key = q/$x$./;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="13" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_38.png"
 ALT="$x$">.|;

$l2h_cache_key = q/$\hbox{dim}_K(K[x,y,z]\/\hbox{jacob}(f))$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $\hbox{dim}_K(K[x,y,z]/\hbox{jacob}(f))$
 -->
<IMG
 WIDTH="185" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_396.png"
 ALT="$\hbox{dim}_K(K[x,y,z]/\hbox{jacob}(f))$">|;

$l2h_cache_key = q/$\{ x^a e_i  \mid  a \in N^n, 1 \leq i \leq r \}$ in Loc $K[x]^r$ = Loc
$K[x]e_1
+ \ldots +$Loc $K[x]e_r$, where $e_1, \ldots, e_r$ denote the canonical
generators of Loc $K[x]^r$, the r-fold direct sum of Loc $K[x]$.
(The function {\tt gen(i)} yields $e_i$)./;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $\{ x^a e_i  \mid  a \in N^n, 1 \leq i \leq r \}$
 -->
<IMG
 WIDTH="184" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_468.png"
 ALT="$\{ x^a e_i \mid a \in N^n, 1 \leq i \leq r \}$"> in Loc <IMG
 WIDTH="44" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_469.png"
 ALT="$K[x]^r$"> = Loc
<!-- MATH
 $K[x]e_1
+ \ldots +$
 -->
<IMG
 WIDTH="104" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_470.png"
 ALT="$K[x]e_1
+ \ldots +$">Loc <IMG
 WIDTH="51" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_471.png"
 ALT="$K[x]e_r$">, where <!-- MATH
 $e_1, \ldots, e_r$
 -->
<IMG
 WIDTH="68" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_472.png"
 ALT="$e_1, \ldots, e_r$"> denote the canonical
generators of Loc <IMG
 WIDTH="44" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_469.png"
 ALT="$K[x]^r$">, the r-fold direct sum of Loc <IMG
 WIDTH="37" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_448.png"
 ALT="$K[x]$">.
(The function <TT>gen(i)</TT> yields <IMG
 WIDTH="17" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_473.png"
 ALT="$e_i$">).|;

$l2h_cache_key = q/$$ I_1=<x^{v_i^+}-x^{v_i^-}|i=1,\ldots,r> $$
is saturated -- as in the algorithm of Conti and Traverso -- by
inversion of all variables: One adds an auxiliary variable $t$ and the
generator $t\cdot x_1\cdot\ldots\cdot x_n -1$ to obtain an ideal $I_2$
in $K[t,x_1,\ldots,x_n]$ from which one computes $I_A$ by elimination of
$t$./;
$l2h_cache{$l2h_cache_key} = q|<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
I_1=<x^{v_i^+}-x^{v_i^-}\|i=1,\ldots,r>
\end{displaymath}
 -->

<IMG
 WIDTH="216" HEIGHT="28" BORDER="0"
 SRC="sing_663.png"
 ALT="\begin{displaymath}I_1=&lt;x^{v_i^+}-x^{v_i^-}\vert i=1,\ldots,r&gt; \end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
is saturated - as in the algorithm of Conti and Traverso - by
inversion of all variables: One adds an auxiliary variable <IMG
 WIDTH="10" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_400.png"
 ALT="$t$"> and the
generator <!-- MATH
 $t\cdot x_1\cdot\ldots\cdot x_n -1$
 -->
<IMG
 WIDTH="124" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_664.png"
 ALT="$t\cdot x_1\cdot\ldots\cdot x_n -1$"> to obtain an ideal <IMG
 WIDTH="18" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_660.png"
 ALT="$I_2$">
in <!-- MATH
 $K[t,x_1,\ldots,x_n]$
 -->
<IMG
 WIDTH="110" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_665.png"
 ALT="$K[t,x_1,\ldots,x_n]$"> from which one computes <IMG
 WIDTH="22" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_649.png"
 ALT="$I_A$"> by elimination of
<IMG
 WIDTH="10" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_400.png"
 ALT="$t$">.|;

$l2h_cache_key = q/$j_0=j|_{t=a}$./;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="73" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_335.png"
 ALT="$j_0=j\vert _{t=a}$">.|;

$l2h_cache_key = q/$f_1,\dots,f_k$ of I, let $f'_i$ be obtained from
$f_i$ by deleting the terms divisible by $x_i\cdot m$ for all i with $x_i<1$.
Then $f'_1,\dots,f'_k$ generate I./;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="70" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_127.png"
 ALT="$f_1,\dots,f_k$"> of I, let <IMG
 WIDTH="18" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_128.png"
 ALT="$f'_i$"> be obtained from
<IMG
 WIDTH="17" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_129.png"
 ALT="$f_i$"> by deleting the terms divisible by <IMG
 WIDTH="44" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_130.png"
 ALT="$x_i\cdot m$"> for all i with <IMG
 WIDTH="48" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_131.png"
 ALT="$x_i&lt;1$">.
Then <!-- MATH
 $f'_1,\dots,f'_k$
 -->
<IMG
 WIDTH="70" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_132.png"
 ALT="$f'_1,\dots,f'_k$"> generate I.|;

$l2h_cache_key = q/Note, that the syzygy modules of $I$ depend on a choice of generators $g_1, ..., g_s$.
But one can show that they depend on $I$ uniquely up to direct summands./;
$l2h_cache{$l2h_cache_key} = q|Note, that the syzygy modules of <IMG
 WIDTH="12" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_248.png"
 ALT="$I$"> depend on a choice of generators <IMG
 WIDTH="61" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_560.png"
 ALT="$g_1, ..., g_s$">.
But one can show that they depend on <IMG
 WIDTH="12" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_248.png"
 ALT="$I$"> uniquely up to direct summands.|;

$l2h_cache_key = q/Let $R = \hbox{Loc}_< K[\underline{x}]$ and let $I$ be a submodule of $R^r$.
Note that for r=1 this means that $I$ is an ideal in $R$.
Denote by $L(I)$ the submodule of $R^r$ generated by the leading terms
of elements of $I$, i.e. by $\left\{L(f) \mid f \in I\right\}$.
Then $f_1, \ldots, f_s \in I$ is called a {\bf standard basis} of $I$
if $L(f_1), \ldots, L(f_s)$ generate $L(I)$.

A standard basis is {\bf minimal} if $\forall i: (f_1,..,f_{i-1},f_{i+1},..,f_s) \neq I$.

A minimal standard basis is {\bf completely reduced} if $\forall i: {\tt reduce}(f_i,(f_1,..,f_{i-1},f_{i+1},..,f_s)=f_i$/;
$l2h_cache{$l2h_cache_key} = q|Let <!-- MATH
 $R = \hbox{Loc}_< K[\underline{x}]$
 -->
<IMG
 WIDTH="106" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_956.png"
 ALT="$R = \hbox{Loc}_&lt; K[\underline{x}]$"> and let <IMG
 WIDTH="12" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_957.png"
 ALT="$I$"> be a submodule of <IMG
 WIDTH="23" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_958.png"
 ALT="$R^r$">.
Note that for r=1 this means that <IMG
 WIDTH="12" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_957.png"
 ALT="$I$"> is an ideal in <IMG
 WIDTH="16" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_959.png"
 ALT="$R$">.
Denote by <IMG
 WIDTH="36" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_960.png"
 ALT="$L(I)$"> the submodule of <IMG
 WIDTH="23" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_958.png"
 ALT="$R^r$"> generated by the leading terms
of elements of <IMG
 WIDTH="12" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_957.png"
 ALT="$I$">, i.e. by <!-- MATH
 $\left\{L(f) \mid f \in I\right\}$
 -->
<IMG
 WIDTH="103" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_961.png"
 ALT="$\left\{L(f) \mid f \in I\right\}$">.
Then <!-- MATH
 $f_1, \ldots, f_s \in I$
 -->
<IMG
 WIDTH="97" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_962.png"
 ALT="$f_1, \ldots, f_s \in I$"> is called a <B>standard basis</B> of <IMG
 WIDTH="12" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_957.png"
 ALT="$I$">
if <!-- MATH
 $L(f_1), \ldots, L(f_s)$
 -->
<IMG
 WIDTH="115" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_963.png"
 ALT="$L(f_1), \ldots, L(f_s)$"> generate <IMG
 WIDTH="36" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_960.png"
 ALT="$L(I)$">.

<P>
A standard basis is <B>minimal</B> if <!-- MATH
 $\forall i: (f_1,..,f_{i-1},f_{i+1},..,f_s) \neq I$
 -->
<IMG
 WIDTH="215" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_964.png"
 ALT="$\forall i: (f_1,..,f_{i-1},f_{i+1},..,f_s) \neq I$">.

<P>
A minimal standard basis is <B>completely reduced</B> if <!-- MATH
 $\forall i: {\tt reduce}(f_i,(f_1,..,f_{i-1},f_{i+1},..,f_s)=f_i$
 -->
<IMG
 WIDTH="296" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_965.png"
 ALT="$\forall i: {\tt reduce}(f_i,(f_1,..,f_{i-1},f_{i+1},..,f_s)=f_i$">|;

$l2h_cache_key = q/$U \colon r^3 $./;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="39" HEIGHT="17" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_16.png"
 ALT="$U \colon r^3 $">.|;

$l2h_cache_key = q/  We obtain the following set of polynomials in the variables $X=(X_1,\dots,X_{n-k})$, $Z=(Z_1,\dots,Z_e)$  and  $Y=(Y_1,\dots,Y_e)$:
  $$ F_C=\{f_j,\epsilon_j,\eta_i,\lambda_i:1\le j\le n-k,1\le i\le e\}\subset F_q[X,Z,Y].$$
  The zero-dimensional ideal $I_C$ generated by $F_C$ is the {\bf CRHT-syndrome ideal}
  associated to the code $C$, and the variety $V(F_C)$ defined by $F_C$ is the {\bf CRHT-syndrome variety},
  after Chen, Reed, Helleseth and Truong./;
$l2h_cache{$l2h_cache_key} = q|  We obtain the following set of polynomials in the variables <!-- MATH
 $X=(X_1,\dots,X_{n-k})$
 -->
<IMG
 WIDTH="147" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_752.png"
 ALT="$X=(X_1,\dots,X_{n-k})$">, <!-- MATH
 $Z=(Z_1,\dots,Z_e)$
 -->
<IMG
 WIDTH="121" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_753.png"
 ALT="$Z=(Z_1,\dots,Z_e)$"> and  <!-- MATH
 $Y=(Y_1,\dots,Y_e)$
 -->
<IMG
 WIDTH="118" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_754.png"
 ALT="$Y=(Y_1,\dots,Y_e)$">:
  <BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
F_C=\{f_j,\epsilon_j,\eta_i,\lambda_i:1\le j\le n-k,1\le i\le e\}\subset F_q[X,Z,Y].
\end{displaymath}
 -->

<IMG
 WIDTH="416" HEIGHT="29" BORDER="0"
 SRC="sing_755.png"
 ALT="\begin{displaymath}F_C=\{f_j,\epsilon_j,\eta_i,\lambda_i:1\le j\le n-k,1\le i\le e\}\subset F_q[X,Z,Y].\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
The zero-dimensional ideal <IMG
 WIDTH="22" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_756.png"
 ALT="$I_C$"> generated by <IMG
 WIDTH="25" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_757.png"
 ALT="$F_C$"> is the <B>CRHT-syndrome ideal</B>
  associated to the code <IMG
 WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_77.png"
 ALT="$C$">, and the variety <IMG
 WIDTH="50" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_758.png"
 ALT="$V(F_C)$"> defined by <IMG
 WIDTH="25" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_757.png"
 ALT="$F_C$"> is the <B>CRHT-syndrome variety</B>,
  after Chen, Reed, Helleseth and Truong.|;

$l2h_cache_key = q/$x^w$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="24" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_696.png"
 ALT="$x^w$">|;

$l2h_cache_key = q/$I$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="12" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_248.png"
 ALT="$I$">|;

$l2h_cache_key = q/$[f_1,...,f_n]$ or $f_1*gen(1)+...+f_n*gen(n)$, where $gen(i)$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="72" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_421.png"
 ALT="$[f_1,...,f_n]$"> or <!-- MATH
 $f_1*gen(1)+...+f_n*gen(n)$
 -->
<IMG
 WIDTH="210" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_422.png"
 ALT="$f_1*gen(1)+...+f_n*gen(n)$">, where <IMG
 WIDTH="47" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_423.png"
 ALT="$gen(i)$">|;

$l2h_cache_key = q/$dim_Q Q[x,y]\/j_0$,/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $dim_Q Q[x,y]/j_0$
 -->
<IMG
 WIDTH="110" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_334.png"
 ALT="$dim_Q Q[x,y]/j_0$">,|;

$l2h_cache_key = q/$B_1$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="23" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_285.png"
 ALT="$B_1$">|;

$l2h_cache_key = q/That is, choosing $>$ implements the ring
$$
  K[x]_> := \left\{{{f}\over{u}}\; \bigg|\; f, u \in K[x],
  \, LM(u) =
  1\right\}.
$$/;
$l2h_cache{$l2h_cache_key} = q|That is, choosing <IMG
 WIDTH="17" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_329.png"
 ALT="$&gt;$"> implements the ring
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
K[x]_> := \left\{{{f}\over{u}}\; \bigg\|\; f, u \in K[x],
  \, LM(u) =
  1\right\}.
\end{displaymath}
 -->

<IMG
 WIDTH="292" HEIGHT="45" BORDER="0"
 SRC="sing_331.png"
 ALT="\begin{displaymath}
K[x]_&gt; := \left\{{{f}\over{u}}\; \bigg\vert\; f, u \in K[x],
\, LM(u) =
1\right\}.
\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>|;

$l2h_cache_key = q/$g \in K [f_1,\ldots,f_r]$./;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $g \in K [f_1,\ldots,f_r]$
 -->
<IMG
 WIDTH="120" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_385.png"
 ALT="$g \in K [f_1,\ldots,f_r]$">.|;

$l2h_cache_key = q/Let $R = \hbox{Loc}_< K[\underline{x}]$ and let $I$ be a submodule of $R^r$.
Note that for r=1 this means that $I$ is an ideal in $R$.
Denote by $L(I)$ the submodule of $R^r$ generated by the leading terms
of elements of $I$, i.e. by $\left\{L(f) \mid f \in I\right\}$.
Then $f_1, \ldots, f_s \in I$ is called a {\bf standard basis} of $I$
if $L(f_1), \ldots, L(f_s)$ generate $L(I)$./;
$l2h_cache{$l2h_cache_key} = q|Let <!-- MATH
 $R = \hbox{Loc}_< K[\underline{x}]$
 -->
<IMG
 WIDTH="106" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_522.png"
 ALT="$R = \hbox{Loc}_&lt; K[\underline{x}]$"> and let <IMG
 WIDTH="12" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_248.png"
 ALT="$I$"> be a submodule of <IMG
 WIDTH="23" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_523.png"
 ALT="$R^r$">.
Note that for r=1 this means that <IMG
 WIDTH="12" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_248.png"
 ALT="$I$"> is an ideal in <IMG
 WIDTH="16" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_51.png"
 ALT="$R$">.
Denote by <IMG
 WIDTH="36" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_524.png"
 ALT="$L(I)$"> the submodule of <IMG
 WIDTH="23" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_523.png"
 ALT="$R^r$"> generated by the leading terms
of elements of <IMG
 WIDTH="12" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_248.png"
 ALT="$I$">, i.e. by <!-- MATH
 $\left\{L(f) \mid f \in I\right\}$
 -->
<IMG
 WIDTH="103" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_525.png"
 ALT="$\left\{L(f) \mid f \in I\right\}$">.
Then <!-- MATH
 $f_1, \ldots, f_s \in I$
 -->
<IMG
 WIDTH="97" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_526.png"
 ALT="$f_1, \ldots, f_s \in I$"> is called a <B>standard basis</B> of <IMG
 WIDTH="12" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_248.png"
 ALT="$I$">
if <!-- MATH
 $L(f_1), \ldots, L(f_s)$
 -->
<IMG
 WIDTH="115" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_527.png"
 ALT="$L(f_1), \ldots, L(f_s)$"> generate <IMG
 WIDTH="36" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_524.png"
 ALT="$L(I)$">.|;

$l2h_cache_key = q/$\overline{H_1}: R^k \rightarrow R^l\/Im(H_2)=R^l\/h_2$
is the induced map./;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $\overline{H_1}: R^k \rightarrow R^l/Im(H_2)=R^l/h_2$
 -->
<IMG
 WIDTH="225" HEIGHT="35" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_162.png"
 ALT="$\overline{H_1}: R^k \rightarrow R^l/Im(H_2)=R^l/h_2$">
is the induced map.|;

$l2h_cache_key = q/Let M $=\bigoplus_{i\in Z} M_i$ be a graded module over $K[x_1,..,x_n]$ with
respect to weights $(w_1,..w_n)$.
The {\bf Hilbert function} of $M$, $H_M$, is defined (on the integers) by
$$H_M(k) :=dim_K M_k.$$
The {\bf Hilbert-Poincare series}  of $M$ is the power series
$$\hbox{HP}_M(t) :=\sum_{i=-\infty}^\infty
H_M(i)t^i=\sum_{i=-\infty}^\infty dim_K M_i \cdot t^i.$$
It turns out that $\hbox{HP}_M(t)$ can be written in two useful ways
for weights $(1,..,1)$:
$$\hbox{HP}_M(t)={Q(t)\over (1-t)^n}={P(t)\over (1-t)^{dim(M)}}$$
where $Q(t)$ and $P(t)$ are polynomials in ${\bf Z}[t]$.
$Q(t)$ is called the {\bf first Hilbert series},
and $P(t)$ the {\bf second Hilbert series}.
If \hbox{$P(t)=\sum_{k=0}^N a_k t^k$}, and \hbox{$d = dim(M)$},
then \hbox{$H_M(s)=\sum_{k=0}^N a_k$ ${d+s-k-1}\choose{d-1}$}
(the {\bf Hilbert polynomial}) for $s \ge N$./;
$l2h_cache{$l2h_cache_key} = q|Let M <!-- MATH
 $=\bigoplus_{i\in Z} M_i$
 -->
<IMG
 WIDTH="85" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_538.png"
 ALT="$=\bigoplus_{i\in Z} M_i$"> be a graded module over <IMG
 WIDTH="85" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_539.png"
 ALT="$K[x_1,..,x_n]$"> with
respect to weights <IMG
 WIDTH="71" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_540.png"
 ALT="$(w_1,..w_n)$">.
The <B>Hilbert function</B> of <IMG
 WIDTH="21" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_13.png"
 ALT="$M$">, <IMG
 WIDTH="31" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_541.png"
 ALT="$H_M$">, is defined (on the integers) by
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
H_M(k) :=dim_K M_k.
\end{displaymath}
 -->

<IMG
 WIDTH="140" HEIGHT="28" BORDER="0"
 SRC="sing_542.png"
 ALT="\begin{displaymath}H_M(k) :=dim_K M_k.\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
The <B>Hilbert-Poincare series</B>  of <IMG
 WIDTH="21" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_13.png"
 ALT="$M$"> is the power series
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
\hbox{HP}_M(t) :=\sum_{i=-\infty}^\infty
H_M(i)t^i=\sum_{i=-\infty}^\infty dim_K M_i \cdot t^i.
\end{displaymath}
 -->

<IMG
 WIDTH="324" HEIGHT="55" BORDER="0"
 SRC="sing_543.png"
 ALT="\begin{displaymath}\hbox{HP}_M(t) :=\sum_{i=-\infty}^\infty
H_M(i)t^i=\sum_{i=-\infty}^\infty dim_K M_i \cdot t^i.\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
It turns out that <!-- MATH
 $\hbox{HP}_M(t)$
 -->
<IMG
 WIDTH="59" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_544.png"
 ALT="$\hbox{HP}_M(t)$"> can be written in two useful ways
for weights <IMG
 WIDTH="55" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_545.png"
 ALT="$(1,..,1)$">:
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
\hbox{HP}_M(t)={Q(t)\over (1-t)^n}={P(t)\over (1-t)^{dim(M)}}
\end{displaymath}
 -->

<IMG
 WIDTH="250" HEIGHT="45" BORDER="0"
 SRC="sing_546.png"
 ALT="\begin{displaymath}\hbox{HP}_M(t)={Q(t)\over (1-t)^n}={P(t)\over (1-t)^{dim(M)}}\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
where <IMG
 WIDTH="35" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_547.png"
 ALT="$Q(t)$"> and <IMG
 WIDTH="35" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_548.png"
 ALT="$P(t)$"> are polynomials in <IMG
 WIDTH="30" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_549.png"
 ALT="${\bf Z}[t]$">.
<IMG
 WIDTH="35" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_547.png"
 ALT="$Q(t)$"> is called the <B>first Hilbert series</B>,
and <IMG
 WIDTH="35" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_548.png"
 ALT="$P(t)$"> the <B>second Hilbert series</B>.
If <!-- MATH
 $P(t)=\sum_{k=0}^N a_k t^k$
 -->
<IMG
 WIDTH="129" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_550.png"
 ALT="$P(t)=\sum_{k=0}^N a_k t^k$">, and <IMG
 WIDTH="91" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_551.png"
 ALT="$d = dim(M)$">,
then <!-- MATH
 $H_M(s)=\sum_{k=0}^N a_k$
 -->
<IMG
 WIDTH="132" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_552.png"
 ALT="$H_M(s)=\sum_{k=0}^N a_k$"> <!-- MATH
 ${d+s-k-1}\choose{d-1}$
 -->
<IMG
 WIDTH="74" HEIGHT="37" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_553.png"
 ALT="${d+s-k-1}\choose{d-1}$">
(the <B>Hilbert polynomial</B>) for <IMG
 WIDTH="47" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_554.png"
 ALT="$s \ge N$">.|;

$l2h_cache_key = q/$k_2[Y]$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="41" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_96.png"
 ALT="$k_2[Y]$">|;

$l2h_cache_key = q/$f:(k^r,0)\rightarrow(k^n,0)$,/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $f:(k^r,0)\rightarrow(k^n,0)$
 -->
<IMG
 WIDTH="140" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_349.png"
 ALT="$f:(k^r,0)\rightarrow(k^n,0)$">,|;

$l2h_cache_key = q/$\hbox{Ext}^2(K,K)$./;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $\hbox{Ext}^2(K,K)$
 -->
<IMG
 WIDTH="85" HEIGHT="36" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_368.png"
 ALT="$\hbox{Ext}^2(K,K)$">.|;

$l2h_cache_key = q/Let $R = \hbox{Loc}_< K[\underline{x}]$ and let $I$ be a submodule of $R^r$.
Note that for r=1 this means that $I$ is an ideal in $R$.
Denote by $L(I)$ the submodule of $R^r$ generated by the leading terms
of elements of $I$, i.e. by $\left\{L(f) \mid f \in I\right\}$.
Then $f_1, \ldots, f_s \in I$ is called a {\bf standard basis} of $I$
if $L(f_1), \ldots, L(f_s)$ generate $L(I)$.
A standard basis is {\bf minimal} if $\forall i (f_1,..,f_{i-1},f_{i+1},..,f_s) \neq I$.
A minimal stadard basis is {\bf completely reduced} if $\forall i reduce(f_i,(f_1,..,f_{i-1},f_{i+1},..,f_s)=f_i$/;
$l2h_cache{$l2h_cache_key} = q|Let <!-- MATH
 $R = \hbox{Loc}_< K[\underline{x}]$
 -->
<IMG
 WIDTH="106" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_936.png"
 ALT="$R = \hbox{Loc}_&lt; K[\underline{x}]$"> and let <IMG
 WIDTH="12" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_937.png"
 ALT="$I$"> be a submodule of <IMG
 WIDTH="23" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_938.png"
 ALT="$R^r$">.
Note that for r=1 this means that <IMG
 WIDTH="12" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_937.png"
 ALT="$I$"> is an ideal in <IMG
 WIDTH="16" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_939.png"
 ALT="$R$">.
Denote by <IMG
 WIDTH="36" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_940.png"
 ALT="$L(I)$"> the submodule of <IMG
 WIDTH="23" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_938.png"
 ALT="$R^r$"> generated by the leading terms
of elements of <IMG
 WIDTH="12" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_937.png"
 ALT="$I$">, i.e. by <!-- MATH
 $\left\{L(f) \mid f \in I\right\}$
 -->
<IMG
 WIDTH="103" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_941.png"
 ALT="$\left\{L(f) \mid f \in I\right\}$">.
Then <!-- MATH
 $f_1, \ldots, f_s \in I$
 -->
<IMG
 WIDTH="97" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_942.png"
 ALT="$f_1, \ldots, f_s \in I$"> is called a <B>standard basis</B> of <IMG
 WIDTH="12" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_937.png"
 ALT="$I$">
if <!-- MATH
 $L(f_1), \ldots, L(f_s)$
 -->
<IMG
 WIDTH="115" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_943.png"
 ALT="$L(f_1), \ldots, L(f_s)$"> generate <IMG
 WIDTH="36" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_940.png"
 ALT="$L(I)$">.
A standard basis is <B>minimal</B> if <!-- MATH
 $\forall i (f_1,..,f_{i-1},f_{i+1},..,f_s) \neq I$
 -->
<IMG
 WIDTH="202" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_944.png"
 ALT="$\forall i (f_1,..,f_{i-1},f_{i+1},..,f_s) \neq I$">.
A minimal stadard basis is <B>completely reduced</B> if <!-- MATH
 $\forall i reduce(f_i,(f_1,..,f_{i-1},f_{i+1},..,f_s)=f_i$
 -->
<IMG
 WIDTH="279" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_945.png"
 ALT="$\forall i reduce(f_i,(f_1,..,f_{i-1},f_{i+1},..,f_s)=f_i$">|;

$l2h_cache_key = q/$K[x_1,\ldots,x_n]$,/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $K[x_1,\ldots,x_n]$
 -->
<IMG
 WIDTH="97" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_60.png"
 ALT="$K[x_1,\ldots,x_n]$">,|;

$l2h_cache_key = q/$Z\/p^n$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="40" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_66.png"
 ALT="$Z/p^n$">|;

$l2h_cache_key = q/variable $u$ and one supplementary generator $x_1\cdot\ldots\cdot x_n -
u$ (instead of the generator $t\cdot x_1\cdot\ldots\cdot x_n -1$ in
the algorithm of Pottier). The algorithm uses a quite unusual technique to
get rid of the variable $u$ again./;
$l2h_cache{$l2h_cache_key} = q|variable <IMG
 WIDTH="13" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_685.png"
 ALT="$u$"> and one supplementary generator <!-- MATH
 $x_1\cdot\ldots\cdot x_n -
u$
 -->
<IMG
 WIDTH="108" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_686.png"
 ALT="$x_1\cdot\ldots\cdot x_n -
u$"> (instead of the generator <!-- MATH
 $t\cdot x_1\cdot\ldots\cdot x_n -1$
 -->
<IMG
 WIDTH="124" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_664.png"
 ALT="$t\cdot x_1\cdot\ldots\cdot x_n -1$"> in
the algorithm of Pottier). The algorithm uses a quite unusual technique to
get rid of the variable <IMG
 WIDTH="13" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_685.png"
 ALT="$u$"> again.|;

$l2h_cache_key = q/$K[X \times N]$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="76" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_327.png"
 ALT="$K[X \times N]$">|;

$l2h_cache_key = q/$K=Z\/7[a]$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="84" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_46.png"
 ALT="$K=Z/7[a]$">|;

$l2h_cache_key = q/$x^\alpha < x^\beta  \Leftrightarrow  \exists\; 1 \le i \le n :
\alpha_n = \beta_n,
    \ldots, \alpha_{i+1} = \beta_{i+1}, \alpha_i < \beta_i.$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $x^\alpha < x^\beta  \Leftrightarrow  \exists\; 1 \le i \le n :
\alpha_n = \beta_n,
    \ldots, \alpha_{i+1} = \beta_{i+1}, \alpha_i < \beta_i.$
 -->
<IMG
 WIDTH="417" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_451.png"
 ALT="$x^\alpha &lt; x^\beta \Leftrightarrow \exists\; 1 \le i \le n :
\alpha_n = \beta_n,
\ldots, \alpha_{i+1} = \beta_{i+1}, \alpha_i &lt; \beta_i.$">|;

$l2h_cache_key = q/$x^7+y^7+z^7=0$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="119" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_630.png"
 ALT="$x^7+y^7+z^7=0$">|;

$l2h_cache_key = q/$$J=(x_1-f_1(t_1,\ldots,t_r),\ldots,x_n-f_n(t_1,\ldots,t_r))\subseteq
k[t_1,\ldots,t_r,x_1,\ldots,x_n]$$/;
$l2h_cache{$l2h_cache_key} = q|<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
J=(x_1-f_1(t_1,\ldots,t_r),\ldots,x_n-f_n(t_1,\ldots,t_r))\subseteq
k[t_1,\ldots,t_r,x_1,\ldots,x_n]
\end{displaymath}
 -->

<IMG
 WIDTH="504" HEIGHT="28" BORDER="0"
 SRC="sing_347.png"
 ALT="\begin{displaymath}J=(x_1-f_1(t_1,\ldots,t_r),\ldots,x_n-f_n(t_1,\ldots,t_r))\subseteq
k[t_1,\ldots,t_r,x_1,\ldots,x_n]\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>|;

$l2h_cache_key = q/${3 \over 7}, {4 \over 7}, {5 \over 7}, {6 \over 7}, {1 \over 1},
{8 \over 7}, {9 \over 7}, {10 \over 7}, {11 \over 7}, {12 \over 7},
{13 \over 7}, {2 \over 1}, {15 \over 7}, {16 \over 7}, {17 \over 7},
{18 \over 7}$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 ${3 \over 7}, {4 \over 7}, {5 \over 7}, {6 \over 7}, {1 \over 1},
{8 \over 7}, {9 \over 7}, {10 \over 7}, {11 \over 7}, {12 \over 7},
{13 \over 7}, {2 \over 1}, {15 \over 7}, {16 \over 7}, {17 \over 7},
{18 \over 7}$
 -->
<IMG
 WIDTH="324" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_631.png"
 ALT="${3 \over 7}, {4 \over 7}, {5 \over 7}, {6 \over 7}, {1 \over 1},
{8 \over 7}, {...
...3 \over 7}, {2 \over 1}, {15 \over 7}, {16 \over 7}, {17 \over 7},
{18 \over 7}$">|;

$l2h_cache_key = q/$A_1$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="23" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_165.png"
 ALT="$A_1$">|;

$l2h_cache_key = q/  $\sum_{i=1}^k m_i\cdot a_i\cdot x^{e_i}$,/;
$l2h_cache{$l2h_cache_key} = q|  <!-- MATH
 $\sum_{i=1}^k m_i\cdot a_i\cdot x^{e_i}$
 -->
<IMG
 WIDTH="122" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_116.png"
 ALT="$\sum_{i=1}^k m_i\cdot a_i\cdot x^{e_i}$">,|;

$l2h_cache_key = q/$K<$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="36" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_328.png"
 ALT="$K&lt;$">|;

$l2h_cache_key = q/$f_r \not= 0$./;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="48" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_425.png"
 ALT="$f_r \not= 0$">.|;

$l2h_cache_key = q/A discrete monomial valuation $v$ on $R = K[X_1 ,\ldots,X_n]$ is determined by
the values $v(X_j)$ of the indeterminates. This function computes the
subalgebra $S = \{ f \in R : v_i ( f ) \geq 0,\ i = 1,\ldots,r\}$ for several
such valuations $v_i$, $i=1,\ldots,r$. It needs the matrix $V = (v_i(X_j))$ as
its input./;
$l2h_cache{$l2h_cache_key} = q|A discrete monomial valuation <IMG
 WIDTH="12" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_311.png"
 ALT="$v$"> on <!-- MATH
 $R = K[X_1 ,\ldots,X_n]$
 -->
<IMG
 WIDTH="139" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_896.png"
 ALT="$R = K[X_1 ,\ldots,X_n]$"> is determined by
the values <IMG
 WIDTH="45" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_921.png"
 ALT="$v(X_j)$"> of the indeterminates. This function computes the
subalgebra <!-- MATH
 $S = \{ f \in R : v_i ( f ) \geq 0,\ i = 1,\ldots,r\}$
 -->
<IMG
 WIDTH="261" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_922.png"
 ALT="$S = \{ f \in R : v_i ( f ) \geq 0,\ i = 1,\ldots,r\}$"> for several
such valuations <IMG
 WIDTH="17" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_429.png"
 ALT="$v_i$">, <IMG
 WIDTH="82" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_898.png"
 ALT="$i=1,\ldots,r$">. It needs the matrix <!-- MATH
 $V = (v_i(X_j))$
 -->
<IMG
 WIDTH="96" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_923.png"
 ALT="$V = (v_i(X_j))$"> as
its input.|;

$l2h_cache_key = q/$K^3$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="26" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_353.png"
 ALT="$K^3$">|;

$l2h_cache_key = q/${\tt ws}(w_1, \ldots, w_n),\; w_1$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 ${\tt ws}(w_1, \ldots, w_n),\; w_1$
 -->
<IMG
 WIDTH="137" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_465.png"
 ALT="${\tt ws}(w_1, \ldots, w_n),\; w_1$">|;

$l2h_cache_key = q/$\hbox{Ext}^k(R\/i,R)$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $\hbox{Ext}^k(R/i,R)$
 -->
<IMG
 WIDTH="95" HEIGHT="37" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_369.png"
 ALT="$\hbox{Ext}^k(R/i,R)$">|;

$l2h_cache_key = q/  $m\times n$/;
$l2h_cache{$l2h_cache_key} = q|  <IMG
 WIDTH="47" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_67.png"
 ALT="$ m \times n $">|;

$l2h_cache_key = q/$1 \times 1$-minors,/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="40" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_9.png"
 ALT="$1 \times 1$">-minors,|;

$l2h_cache_key = q/$R$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="16" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_51.png"
 ALT="$R$">|;

$l2h_cache_key = q/$R^n$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="25" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_89.png"
 ALT="$R^n$">|;

$l2h_cache_key = q/$R$./;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="16" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_51.png"
 ALT="$R$">.|;

$l2h_cache_key = q/$Z[x,y,z]$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="65" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_56.png"
 ALT="$Z[x,y,z]$">|;

$l2h_cache_key = q/$f$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="14" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_262.png"
 ALT="$f$">|;

$l2h_cache_key = q/$R^T$./;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="26" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_894.png"
 ALT="$R^T$">.|;

$l2h_cache_key = q/$v$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="12" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_311.png"
 ALT="$v$">|;

$l2h_cache_key = q/Let $<$ be a fixed monomial well-ordering on the $G$--algebra $A$ with the Poincar@'e-Birkhoff-Witt (PBW) basis
$\{x^{\alpha} = x^{a_1}_1 x^{a_2}_2 \dots x^{a_n}_n\}$.
For a given free module $A^r$ with the basis $\{e_1,\ldots, e_r\}$, $<$ denotes also a
fixed module ordering on the set of monomials $\{x^{\alpha} e_i \mid \alpha\in {\bf N}^n, 1\leq i\leq r \}$./;
$l2h_cache{$l2h_cache_key} = q|Let <IMG
 WIDTH="17" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_223.png"
 ALT="$&lt;$"> be a fixed monomial well-ordering on the <IMG
 WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_186.png"
 ALT="$G$">-algebra <IMG
 WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_187.png"
 ALT="$A$"> with the Poincar@'e-Birkhoff-Witt (PBW) basis
<!-- MATH
 $\{x^{\alpha} = x^{a_1}_1 x^{a_2}_2 \dots x^{a_n}_n\}$
 -->
<IMG
 WIDTH="154" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_239.png"
 ALT="$\{x^{\alpha} = x^{a_1}_1 x^{a_2}_2 \dots x^{a_n}_n\}$">.
For a given free module <IMG
 WIDTH="23" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_237.png"
 ALT="$A^r$"> with the basis <!-- MATH
 $\{e_1,\ldots, e_r\}$
 -->
<IMG
 WIDTH="84" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_240.png"
 ALT="$\{e_1,\ldots, e_r\}$">, <IMG
 WIDTH="17" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_223.png"
 ALT="$&lt;$"> denotes also a
fixed module ordering on the set of monomials <!-- MATH
 $\{x^{\alpha} e_i \mid \alpha\in {\bf N}^n, 1\leq i\leq r \}$
 -->
<IMG
 WIDTH="188" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_241.png"
 ALT="$\{x^{\alpha} e_i \mid \alpha\in {\bf N}^n, 1\leq i\leq r \}$">.|;

$l2h_cache_key = q/The entry d of the intmat at place (i,j) is the minimal number of
generators in degree i+j of the j-th syzygy module (= module of
relations) of $R^n\/M$, i.e. the 0th (resp.\ 1st) syzygy module of $R^n\/M$ is
$R^n$ (resp.\ $M$)./;
$l2h_cache{$l2h_cache_key} = q|The entry d of the intmat at place (i,j) is the minimal number of
generators in degree i+j of the j-th syzygy module (= module of
relations) of <IMG
 WIDTH="49" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_91.png"
 ALT="$R^n/M$">, i.e. the 0th (resp. 1st) syzygy module of <IMG
 WIDTH="49" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_91.png"
 ALT="$R^n/M$"> is
<IMG
 WIDTH="25" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_89.png"
 ALT="$R^n$"> (resp. <IMG
 WIDTH="21" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_13.png"
 ALT="$M$">).|;

$l2h_cache_key = q/computes the permutation {\tt v}
which orders the ideal, resp.\ module, {\tt I} by its initial terms,
starting with the smallest, that is, {\tt I(v[i]) < I(v[i+1])} for all
{\tt i}./;
$l2h_cache{$l2h_cache_key} = q|computes the permutation <TT>v</TT>
which orders the ideal, resp. module, <TT>I</TT> by its initial terms,
starting with the smallest, that is, <TT>I(v[i]) &lt; I(v[i+1])</TT> for all
<TT>i</TT>.|;

$l2h_cache_key = q/Let $I=(g_1,...,g_s)\subseteq R^r$ and $M= R^r\/I$.
A {\bf free resolution of $M$} is a long exact sequence
$$...\longrightarrow F_2 \buildrel{A_2}\over{\longrightarrow} F_1
\buildrel{A_1}\over{\longrightarrow} F_0\longrightarrow M\longrightarrow
0,$$/;
$l2h_cache{$l2h_cache_key} = q|Let <!-- MATH
 $I=(g_1,...,g_s)\subseteq R^r$
 -->
<IMG
 WIDTH="143" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_561.png"
 ALT="$I=(g_1,...,g_s)\subseteq R^r$"> and <IMG
 WIDTH="78" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_562.png"
 ALT="$M= R^r/I$">.
A <B>free resolution of <IMG
 WIDTH="21" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_13.png"
 ALT="$M$"></B> is a long exact sequence
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
...\longrightarrow F_2 \buildrel{A_2}\over{\longrightarrow} F_1
\buildrel{A_1}\over{\longrightarrow} F_0\longrightarrow M\longrightarrow
0,
\end{displaymath}
 -->

<IMG
 WIDTH="266" HEIGHT="27" BORDER="0"
 SRC="sing_563.png"
 ALT="\begin{displaymath}...\longrightarrow F_2 \buildrel{A_2}\over{\longrightarrow} F...
...1}\over{\longrightarrow} F_0\longrightarrow M\longrightarrow
0,\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>|;

$l2h_cache_key = q/$x_1,x_2,x_3$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="67" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_33.png"
 ALT="$x_1,x_2,x_3$">|;

$l2h_cache_key = q/$x = (x_1, \ldots, x_n)$ and $y = (y_1, \ldots, y_m)$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $x = (x_1, \ldots, x_n)$
 -->
<IMG
 WIDTH="116" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_447.png"
 ALT="$x = (x_1, \ldots, x_n)$"> and <!-- MATH
 $y = (y_1, \ldots, y_m)$
 -->
<IMG
 WIDTH="116" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_509.png"
 ALT="$y = (y_1, \ldots, y_m)$">|;

$l2h_cache_key = q/
$\quad$ lp:
$\left(\matrix{
 1 & 0 & 0 \cr
 0 & 1 & 0 \cr
 0 & 0 & 1 \cr
 }\right)$
\quad dp:
$\left(\matrix{
 1 & 1 & 1 \cr
 0 & 0 &-1 \cr
 0 &-1 & 0 \cr
 }\right)$
\quad Dp:
$\left(\matrix{
 1 & 1 & 1 \cr
 1 & 0 & 0 \cr
 0 & 1 & 0 \cr
 }\right)$

$\quad$ wp(1,2,3):
$\left(\matrix{
 1 & 2 & 3 \cr
 0 & 0 &-1 \cr
 0 &-1 & 0 \cr
 }\right)$
\quad Wp(1,2,3):
$\left(\matrix{
 1 & 2 & 3 \cr
 1 & 0 & 0 \cr
 0 & 1 & 0 \cr
 }\right)$

$\quad$ ls:
$\left(\matrix{
-1 & 0 & 0 \cr
 0 &-1 & 0 \cr
 0 & 0 &-1 \cr
 }\right)$
\quad ds:
$\left(\matrix{
-1 &-1 &-1 \cr
 0 & 0 &-1 \cr
 0 &-1 & 0 \cr
 }\right)$
\quad Ds:
$\left(\matrix{
-1 &-1 &-1 \cr
 1 & 0 & 0 \cr
 0 & 1 & 0 \cr
 }\right)$

$\quad$ ws(1,2,3):
$\left(\matrix{
-1 &-2 &-3 \cr
 0 & 0 &-1 \cr
 0 &-1 & 0 \cr
 }\right)$
\quad Ws(1,2,3):
$\left(\matrix{
-1 &-2 &-3 \cr
 1 & 0 & 0 \cr
 0 & 1 & 0 \cr
 }\right)$/;
$l2h_cache{$l2h_cache_key} = q|
<P>
<IMG
 WIDTH="20" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_494.png"
 ALT="$\quad$"> lp:
<!-- MATH
 $\left(\matrix{
 1 & 0 & 0 \cr
 0 & 1 & 0 \cr
 0 & 0 & 1 \cr
 }\right)$
 -->
<IMG
 WIDTH="93" HEIGHT="73" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_495.png"
 ALT="$\left(\matrix{
1 &amp; 0 &amp; 0 \cr
0 &amp; 1 &amp; 0 \cr
0 &amp; 0 &amp; 1 \cr
}\right)$">
&nbsp;&nbsp;&nbsp;&nbsp;dp:
<!-- MATH
 $\left(\matrix{
 1 & 1 & 1 \cr
 0 & 0 &-1 \cr
 0 &-1 & 0 \cr
 }\right)$
 -->
<IMG
 WIDTH="118" HEIGHT="73" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_496.png"
 ALT="$\left(\matrix{
1 &amp; 1 &amp; 1 \cr
0 &amp; 0 &amp;-1 \cr
0 &amp;-1 &amp; 0 \cr
}\right)$">
&nbsp;&nbsp;&nbsp;&nbsp;Dp:
<!-- MATH
 $\left(\matrix{
 1 & 1 & 1 \cr
 1 & 0 & 0 \cr
 0 & 1 & 0 \cr
 }\right)$
 -->
<IMG
 WIDTH="93" HEIGHT="73" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_497.png"
 ALT="$\left(\matrix{
1 &amp; 1 &amp; 1 \cr
1 &amp; 0 &amp; 0 \cr
0 &amp; 1 &amp; 0 \cr
}\right)$">

<P>
<IMG
 WIDTH="20" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_494.png"
 ALT="$\quad$"> wp(1,2,3):
<!-- MATH
 $\left(\matrix{
 1 & 2 & 3 \cr
 0 & 0 &-1 \cr
 0 &-1 & 0 \cr
 }\right)$
 -->
<IMG
 WIDTH="118" HEIGHT="73" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_498.png"
 ALT="$\left(\matrix{
1 &amp; 2 &amp; 3 \cr
0 &amp; 0 &amp;-1 \cr
0 &amp;-1 &amp; 0 \cr
}\right)$">
&nbsp;&nbsp;&nbsp;&nbsp;Wp(1,2,3):
<!-- MATH
 $\left(\matrix{
 1 & 2 & 3 \cr
 1 & 0 & 0 \cr
 0 & 1 & 0 \cr
 }\right)$
 -->
<IMG
 WIDTH="93" HEIGHT="73" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_499.png"
 ALT="$\left(\matrix{
1 &amp; 2 &amp; 3 \cr
1 &amp; 0 &amp; 0 \cr
0 &amp; 1 &amp; 0 \cr
}\right)$">

<P>
<IMG
 WIDTH="20" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_494.png"
 ALT="$\quad$"> ls:
<!-- MATH
 $\left(\matrix{
-1 & 0 & 0 \cr
 0 &-1 & 0 \cr
 0 & 0 &-1 \cr
 }\right)$
 -->
<IMG
 WIDTH="130" HEIGHT="73" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_500.png"
 ALT="$\left(\matrix{
-1 &amp; 0 &amp; 0 \cr
0 &amp;-1 &amp; 0 \cr
0 &amp; 0 &amp;-1 \cr
}\right)$">
&nbsp;&nbsp;&nbsp;&nbsp;ds:
<!-- MATH
 $\left(\matrix{
-1 &-1 &-1 \cr
 0 & 0 &-1 \cr
 0 &-1 & 0 \cr
 }\right)$
 -->
<IMG
 WIDTH="130" HEIGHT="73" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_501.png"
 ALT="$\left(\matrix{
-1 &amp;-1 &amp;-1 \cr
0 &amp; 0 &amp;-1 \cr
0 &amp;-1 &amp; 0 \cr
}\right)$">
&nbsp;&nbsp;&nbsp;&nbsp;Ds:
<!-- MATH
 $\left(\matrix{
-1 &-1 &-1 \cr
 1 & 0 & 0 \cr
 0 & 1 & 0 \cr
 }\right)$
 -->
<IMG
 WIDTH="130" HEIGHT="73" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_502.png"
 ALT="$\left(\matrix{
-1 &amp;-1 &amp;-1 \cr
1 &amp; 0 &amp; 0 \cr
0 &amp; 1 &amp; 0 \cr
}\right)$">

<P>
<IMG
 WIDTH="20" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_494.png"
 ALT="$\quad$"> ws(1,2,3):
<!-- MATH
 $\left(\matrix{
-1 &-2 &-3 \cr
 0 & 0 &-1 \cr
 0 &-1 & 0 \cr
 }\right)$
 -->
<IMG
 WIDTH="130" HEIGHT="73" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_503.png"
 ALT="$\left(\matrix{
-1 &amp;-2 &amp;-3 \cr
0 &amp; 0 &amp;-1 \cr
0 &amp;-1 &amp; 0 \cr
}\right)$">
&nbsp;&nbsp;&nbsp;&nbsp;Ws(1,2,3):
<!-- MATH
 $\left(\matrix{
-1 &-2 &-3 \cr
 1 & 0 & 0 \cr
 0 & 1 & 0 \cr
 }\right)$
 -->
<IMG
 WIDTH="130" HEIGHT="73" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_504.png"
 ALT="$\left(\matrix{
-1 &amp;-2 &amp;-3 \cr
1 &amp; 0 &amp; 0 \cr
0 &amp; 1 &amp; 0 \cr
}\right)$">|;

$l2h_cache_key = q/$K[x,y,z]\/\hbox{\rm jacob}(f)$./;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $K[x,y,z]/\hbox{\rm jacob}(f)$
 -->
<IMG
 WIDTH="134" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_7.png"
 ALT="$K[x,y,z]/\hbox{\rm jacob}(f)$">.|;

$l2h_cache_key = q/$b$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="11" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_44.png"
 ALT="$b$">|;

$l2h_cache_key = q/  In this way we obtain that the code $C$ is the image of the evaluation above, thus $C=C(I,L)$. In the
  same way by considering a parity check matrix instead of a generator matrix we have that the dual code is also an affine variety code.

  The method of decoding is a generalization of CRHT. One needs to add polynomials
  $(g_l(X_{k1},\dots,X_{ks}))_{l=1,\dots,m; k=1,\dots,t}$ for every error position. We also assume that field equations on $X_{ij}$'s are included
  among the polynomials above. Let $C$ be a $q$-ary $[n,k]$ linear code such that its
  dual is written as an affine variety code of the form $C^{\bot}=C(I,L)$.
  Let ${\bf r}={\bf c}+{\bf e}$ as usual and $t\le e$. Then the syndromes are computed by $s_i=\sum_{j=1}^nr_jf_i(P_j)=\sum_{j=1}^ne_jf_i(P_j)
  \hbox{ for } i=1,\dots,n-k$./;
$l2h_cache{$l2h_cache_key} = q|  In this way we obtain that the code <IMG
 WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_77.png"
 ALT="$C$"> is the image of the evaluation above, thus <IMG
 WIDTH="89" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_827.png"
 ALT="$C=C(I,L)$">. In the
  same way by considering a parity check matrix instead of a generator matrix we have that the dual code is also an affine variety code.

<P>
The method of decoding is a generalization of CRHT. One needs to add polynomials
  <!-- MATH
 $(g_l(X_{k1},\dots,X_{ks}))_{l=1,\dots,m; k=1,\dots,t}$
 -->
<IMG
 WIDTH="233" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_828.png"
 ALT="$(g_l(X_{k1},\dots,X_{ks}))_{l=1,\dots,m; k=1,\dots,t}$"> for every error position. We also assume that field equations on <IMG
 WIDTH="29" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_829.png"
 ALT="$X_{ij}$">'s are included
  among the polynomials above. Let <IMG
 WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_77.png"
 ALT="$C$"> be a <IMG
 WIDTH="12" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_288.png"
 ALT="$q$">-ary <IMG
 WIDTH="38" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_729.png"
 ALT="$[n,k]$"> linear code such that its
  dual is written as an affine variety code of the form <!-- MATH
 $C^{\bot}=C(I,L)$
 -->
<IMG
 WIDTH="100" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_830.png"
 ALT="$C^{\bot}=C(I,L)$">.
  Let <!-- MATH
 ${\bf r}={\bf c}+{\bf e}$
 -->
<IMG
 WIDTH="69" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_731.png"
 ALT="${\bf r}={\bf c}+{\bf e}$"> as usual and <IMG
 WIDTH="39" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_766.png"
 ALT="$t\le e$">. Then the syndromes are computed by <!-- MATH
 $s_i=\sum_{j=1}^nr_jf_i(P_j)=\sum_{j=1}^ne_jf_i(P_j)
  \hbox{ for } i=1,\dots,n-k$
 -->
<IMG
 WIDTH="394" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_831.png"
 ALT="$s_i=\sum_{j=1}^nr_jf_i(P_j)=\sum_{j=1}^ne_jf_i(P_j)
\hbox{ for } i=1,\dots,n-k$">.|;

$l2h_cache_key = q/$C$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_77.png"
 ALT="$C$">|;

$l2h_cache_key = q/$f=x^5+x^2y^2+y^5$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $f=x^5+x^2y^2+y^5$
 -->
<IMG
 WIDTH="137" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_622.png"
 ALT="$f=x^5+x^2y^2+y^5$">|;

$l2h_cache_key = q/$R^n\/M$ (the 0th and 1st syzygy module of $R^n\/M$ is $R^n$ and $M$, resp.)./;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="49" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_91.png"
 ALT="$R^n/M$"> (the 0th and 1st syzygy module of <IMG
 WIDTH="49" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_91.png"
 ALT="$R^n/M$"> is <IMG
 WIDTH="25" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_89.png"
 ALT="$R^n$"> and <IMG
 WIDTH="21" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_13.png"
 ALT="$M$">, resp.).|;

$l2h_cache_key = q/\quad \quad   $x^\alpha e_i <_m x^\beta e_j \Leftrightarrow i < j$ or ($
i = j $ and $ x^\alpha < x^\beta $)./;
$l2h_cache{$l2h_cache_key} = q|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<!-- MATH
 $x^\alpha e_i <_m x^\beta e_j \Leftrightarrow i < j$
 -->
<IMG
 WIDTH="159" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_479.png"
 ALT="$x^\alpha e_i &lt;_m x^\beta e_j \Leftrightarrow i &lt; j$"> or (<IMG
 WIDTH="38" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_480.png"
 ALT="$
i = j $"> and <!-- MATH
 $x^\alpha < x^\beta$
 -->
<IMG
 WIDTH="61" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_441.png"
 ALT="$x^\alpha &lt; x^\beta$">).|;

$l2h_cache_key = q/$Q \rightarrow  Q(a, \ldots)$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $Q \rightarrow  Q(a, \ldots)$
 -->
<IMG
 WIDTH="100" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_74.png"
 ALT="$Q \rightarrow Q(a, \ldots)$">|;

$l2h_cache_key = q/  The code $C$ of dimension $k$ and minimum distance $d$ is denoted as $[n,k,d]$./;
$l2h_cache{$l2h_cache_key} = q|  The code <IMG
 WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_77.png"
 ALT="$C$"> of dimension <IMG
 WIDTH="13" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_273.png"
 ALT="$k$"> and minimum distance <IMG
 WIDTH="13" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_170.png"
 ALT="$d$"> is denoted as <IMG
 WIDTH="54" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_702.png"
 ALT="$[n,k,d]$">.|;

$l2h_cache_key = q/$Z$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_63.png"
 ALT="$Z$">|;

$l2h_cache_key = q/This function computes the ring of invariants of a finite abelian group $G$
acting diagonally on the surrounding polynomial ring $K[X_1,...,X_n]$. The
group is the direct product of cyclic groups generated by finitely many
elements $g_1,...,g_w$. The element $g_i$ acts on the indeterminate $X_j$ by
$g_i(X_j)=\lambda_i^{u_{ij}}X_j$ where $\lambda_i$ is a primitive root of
unity of order equal to $ord(g_i)$. The ring of invariants is generated by all
monomials satisfying the system
$u_{i1}a_1+\ldots+u_{in} a_n \equiv 0$ mod ord$(g_i)$, $i=1,\ldots,w$.
The input to the function is the $w\times(n+1)$ matrix $U$ with rows
$u_{i1}\ldots u_{in}$ ord$(gi)$, $i=1,\ldots,w$. The output is a monomial ideal
listing the algebra generators of the subalgebra of invariants
{$R^G=\{f\in R : g_i f = f$ for all $i=1,\ldots,w\}$}./;
$l2h_cache{$l2h_cache_key} = q|This function computes the ring of invariants of a finite abelian group <IMG
 WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_186.png"
 ALT="$G$">
acting diagonally on the surrounding polynomial ring <!-- MATH
 $K[X_1,...,X_n]$
 -->
<IMG
 WIDTH="97" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_903.png"
 ALT="$K[X_1,...,X_n]$">. The
group is the direct product of cyclic groups generated by finitely many
elements <IMG
 WIDTH="64" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_904.png"
 ALT="$g_1,...,g_w$">. The element <IMG
 WIDTH="17" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_905.png"
 ALT="$g_i$"> acts on the indeterminate <IMG
 WIDTH="24" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_906.png"
 ALT="$X_j$"> by
<!-- MATH
 $g_i(X_j)=\lambda_i^{u_{ij}}X_j$
 -->
<IMG
 WIDTH="118" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_907.png"
 ALT="$g_i(X_j)=\lambda_i^{u_{ij}}X_j$"> where <IMG
 WIDTH="19" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_908.png"
 ALT="$\lambda_i$"> is a primitive root of
unity of order equal to <IMG
 WIDTH="53" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_909.png"
 ALT="$ord(g_i)$">. The ring of invariants is generated by all
monomials satisfying the system
<!-- MATH
 $u_{i1}a_1+\ldots+u_{in} a_n \equiv 0$
 -->
<IMG
 WIDTH="166" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_910.png"
 ALT="$u_{i1}a_1+\ldots+u_{in} a_n \equiv 0$"> mod ord<IMG
 WIDTH="29" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_911.png"
 ALT="$(g_i)$">, <IMG
 WIDTH="86" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_912.png"
 ALT="$i=1,\ldots,w$">.
The input to the function is the <IMG
 WIDTH="85" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_913.png"
 ALT="$w\times(n+1)$"> matrix <IMG
 WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_914.png"
 ALT="$U$"> with rows
<!-- MATH
 $u_{i1}\ldots u_{in}$
 -->
<IMG
 WIDTH="71" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_915.png"
 ALT="$u_{i1}\ldots u_{in}$"> ord<IMG
 WIDTH="30" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_916.png"
 ALT="$(gi)$">, <IMG
 WIDTH="86" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_912.png"
 ALT="$i=1,\ldots,w$">. The output is a monomial ideal
listing the algebra generators of the subalgebra of invariants
<!-- MATH
 $R^G=\{f\in R : g_i f = f$
 -->
<IMG
 WIDTH="164" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_917.png"
 ALT="$R^G=\{f\in R : g_i f = f$"> for all <!-- MATH
 $i=1,\ldots,w\}$
 -->
<IMG
 WIDTH="94" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_918.png"
 ALT="$i=1,\ldots,w\}$">.|;

$l2h_cache_key = q/  $(d\times 1)$-matrix and $m_{i+1,j}, 0\leq i\leq e$,/;
$l2h_cache{$l2h_cache_key} = q|  <IMG
 WIDTH="52" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_103.png"
 ALT="$(d\times 1)$">-matrix and <!-- MATH
 $m_{i+1,j}, 0\leq i\leq e$
 -->
<IMG
 WIDTH="120" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_104.png"
 ALT="$m_{i+1,j}, 0\leq i\leq e$">,|;

$l2h_cache_key = q/let $\deg(x^\alpha) = \alpha_1 + \cdots + \alpha_n,$ then/;
$l2h_cache{$l2h_cache_key} = q|let <!-- MATH
 $\deg(x^\alpha) = \alpha_1 + \cdots + \alpha_n,$
 -->
<IMG
 WIDTH="178" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_452.png"
 ALT="$\deg(x^\alpha) = \alpha_1 + \cdots + \alpha_n,$"> then|;

$l2h_cache_key = q/$N = R^n\/M$ instead of $M$./;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="85" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_430.png"
 ALT="$N = R^n/M$"> instead of <IMG
 WIDTH="21" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_13.png"
 ALT="$M$">.|;

$l2h_cache_key = q/Let \hbox{$I \subseteq K[\underline{x}]^r$} be a homogeneous module, then the Hilbert function
$H_I$ of $I$ (see below)
and the Hilbert function $H_{L(I)}$ of the leading module $L(I)$
coincide, i.e.,
$H_I=H_{L(I)}$./;
$l2h_cache{$l2h_cache_key} = q|Let <!-- MATH
 $I \subseteq K[\underline{x}]^r$
 -->
<IMG
 WIDTH="73" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_534.png"
 ALT="$I \subseteq K[\underline{x}]^r$"> be a homogeneous module, then the Hilbert function
<IMG
 WIDTH="25" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_535.png"
 ALT="$H_I$"> of <IMG
 WIDTH="12" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_248.png"
 ALT="$I$"> (see below)
and the Hilbert function <IMG
 WIDTH="43" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_536.png"
 ALT="$H_{L(I)}$"> of the leading module <IMG
 WIDTH="36" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_524.png"
 ALT="$L(I)$">
coincide, i.e.,
<IMG
 WIDTH="85" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_537.png"
 ALT="$H_I=H_{L(I)}$">.|;

$l2h_cache_key = q/% This is quite a hack, but for now it works.
$Z\/p \rightarrow Q,
\quad
[i]_p \mapsto i \in [-p\/2, \, p\/2]
\subseteq Z$/;
$l2h_cache{$l2h_cache_key} = q| $Z/p \rightarrow Q,
\quad
[i]_p \mapsto i \in [-p/2, \, p/2]
\subseteq Z$
 -->
<IMG
 WIDTH="275" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_83.png"
 ALT="$Z/p \rightarrow Q,
\quad
[i]_p \mapsto i \in [-p/2, \, p/2]
\subseteq Z$">|;

$l2h_cache_key = q/    $x^\alpha < x^\beta \Leftrightarrow \deg(x^\alpha) < \deg(x^\beta)$ or/;
$l2h_cache{$l2h_cache_key} = q|    <!-- MATH
 $x^\alpha < x^\beta \Leftrightarrow \deg(x^\alpha) < \deg(x^\beta)$
 -->
<IMG
 WIDTH="216" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_453.png"
 ALT="$x^\alpha &lt; x^\beta \Leftrightarrow \deg(x^\alpha) &lt; \deg(x^\beta)$"> or|;

$l2h_cache_key = q/$K[X]$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="42" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_330.png"
 ALT="$K[X]$">|;

$l2h_cache_key = q/$Z\/p \rightarrow  (Z\/p)(a, \ldots)$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $Z/p \rightarrow  (Z/p)(a, \ldots)$
 -->
<IMG
 WIDTH="142" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_78.png"
 ALT="$Z/p \rightarrow (Z/p)(a, \ldots)$">|;

$l2h_cache_key = q/$K^3$./;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="26" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_353.png"
 ALT="$K^3$">.|;

$l2h_cache_key = q/$$
\hbox{sat}(i,j)=\{x\in R\;|\; \exists\;n\hbox{ s.t. }
x\cdot(j^n)\subseteq i\}
= \bigcup_{n=1}^\infty i:j^n$$/;
$l2h_cache{$l2h_cache_key} = q|<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
\hbox{sat}(i,j)=\{x\in R\;\|\; \exists\;n\hbox{ s.t. }
x\cdot(j^n)\subseteq i\}
= \bigcup_{n=1}^\infty i:j^n
\end{displaymath}
 -->

<IMG
 WIDTH="359" HEIGHT="53" BORDER="0"
 SRC="sing_341.png"
 ALT="\begin{displaymath}
\hbox{sat}(i,j)=\{x\in R\;\vert\; \exists\;n\hbox{ s.t. }
x\cdot(j^n)\subseteq i\}
= \bigcup_{n=1}^\infty i:j^n\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>|;

$l2h_cache_key = q/$x^a < x^b$
if and only if $M a$ is smaller than $M b$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="58" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_491.png"
 ALT="$x^a &lt; x^b$">
if and only if <IMG
 WIDTH="30" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_492.png"
 ALT="$M a$"> is smaller than <IMG
 WIDTH="28" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_493.png"
 ALT="$M b$">|;

$l2h_cache_key = q/$\forall p,q,s,t \in X$, if $s=p\cdot t \cdot q$ and $s\not=t$, then $t<s$./;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $\forall p,q,s,t \in X$
 -->
<IMG
 WIDTH="97" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_305.png"
 ALT="$\forall p,q,s,t \in X$">, if <!-- MATH
 $s=p\cdot t \cdot q$
 -->
<IMG
 WIDTH="77" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_308.png"
 ALT="$s=p\cdot t \cdot q$"> and <IMG
 WIDTH="39" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_309.png"
 ALT="$s\not=t$">, then <IMG
 WIDTH="39" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_310.png"
 ALT="$t&lt;s$">.|;

$l2h_cache_key = q/$I=\langle Y_1-f_1,\ldots,Y_r-f_r \rangle \subseteq
K[x_1,\ldots,x_n,Y_1,\ldots,Y_r]$./;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $I=\langle Y_1-f_1,\ldots,Y_r-f_r \rangle \subseteq
K[x_1,\ldots,x_n,Y_1,\ldots,Y_r]$
 -->
<IMG
 WIDTH="372" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_383.png"
 ALT="$I=\langle Y_1-f_1,\ldots,Y_r-f_r \rangle \subseteq
K[x_1,\ldots,x_n,Y_1,\ldots,Y_r]$">.|;

$l2h_cache_key = q/  $2\times n$/;
$l2h_cache{$l2h_cache_key} = q|  <IMG
 WIDTH="41" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_100.png"
 ALT="$2\times n$">|;

$l2h_cache_key = q/$C = K \langle x_1, \ldots ,x_n, y_1, \ldots ,y_m \mid$
$\{ x_j x_i=c_{ij} \cdot x_i x_j + d_{ij}, 1 \leq i <j \leq n\}$,
$\{ y_j y_i=q_{ij} \cdot y_i y_j + r_{ij}, 1 \leq i <j \leq m\}$,
$\{ y_j x_i = x_i y_j, 1 \leq j \leq m, 1 \leq i \leq n\}  \rangle$./;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $C = K \langle x_1, \ldots ,x_n, y_1, \ldots ,y_m \mid$
 -->
<IMG
 WIDTH="214" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_197.png"
 ALT="$C = K \langle x_1, \ldots ,x_n, y_1, \ldots ,y_m \mid$">
<!-- MATH
 $\{ x_j x_i=c_{ij} \cdot x_i x_j + d_{ij}, 1 \leq i <j \leq n\}$
 -->
<IMG
 WIDTH="271" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_198.png"
 ALT="$\{ x_j x_i=c_{ij} \cdot x_i x_j + d_{ij}, 1 \leq i &lt;j \leq n\}$">,
<!-- MATH
 $\{ y_j y_i=q_{ij} \cdot y_i y_j + r_{ij}, 1 \leq i <j \leq m\}$
 -->
<IMG
 WIDTH="270" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_199.png"
 ALT="$\{ y_j y_i=q_{ij} \cdot y_i y_j + r_{ij}, 1 \leq i &lt;j \leq m\}$">,
<!-- MATH
 $\{ y_j x_i = x_i y_j, 1 \leq j \leq m, 1 \leq i \leq n\}  \rangle$
 -->
<IMG
 WIDTH="257" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_200.png"
 ALT="$\{ y_j x_i = x_i y_j, 1 \leq j \leq m, 1 \leq i \leq n\} \rangle$">.|;

$l2h_cache_key = q/$j$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="12" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_53.png"
 ALT="$j$">|;

$l2h_cache_key = q/$M$ in $GL(n,R)$,/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="21" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_13.png"
 ALT="$M$"> in <IMG
 WIDTH="69" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_444.png"
 ALT="$GL(n,R)$">,|;

$l2h_cache_key = q/$R^n\/M$, if $R$ denotes the basering,
$M$ is a homogeneous submodule of $R^n$ and the argument represents a
resolution of
$R^n\/M$./;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="49" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_91.png"
 ALT="$R^n/M$">, if <IMG
 WIDTH="16" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_51.png"
 ALT="$R$"> denotes the basering,
<IMG
 WIDTH="21" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_13.png"
 ALT="$M$"> is a homogeneous submodule of <IMG
 WIDTH="25" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_89.png"
 ALT="$R^n$"> and the argument represents a
resolution of
<IMG
 WIDTH="49" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_91.png"
 ALT="$R^n/M$">.|;

$l2h_cache_key = q/$Z_2$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="22" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_291.png"
 ALT="$Z_2$">|;

$l2h_cache_key = q/$H''\/H'$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="54" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_621.png"
 ALT="$H''/H'$">|;

$l2h_cache_key = q/$n \times n$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="43" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_231.png"
 ALT="$n\times n$">|;

$l2h_cache_key = q/$\hbox{dim}_K(\hbox{Loc}_{(x,y,z)}K[x,y,z]\/(\hbox{jacob}(f)+(f)))$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $\hbox{dim}_K(\hbox{Loc}_{(x,y,z)}K[x,y,z]/(\hbox{jacob}(f)+(f)))$
 -->
<IMG
 WIDTH="303" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_397.png"
 ALT="$\hbox{dim}_K(\hbox{Loc}_{(x,y,z)}K[x,y,z]/(\hbox{jacob}(f)+(f)))$">|;

$l2h_cache_key = q/\quad \quad $x^a y^b < x^A y^B \Leftrightarrow x^a <_1 x^A $ or ($x^a =
x^A$ and $y^b <_2 y^B$)./;
$l2h_cache{$l2h_cache_key} = q|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<!-- MATH
 $x^a y^b < x^A y^B \Leftrightarrow x^a <_1 x^A$
 -->
<IMG
 WIDTH="185" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_515.png"
 ALT="$x^a y^b &lt; x^A y^B \Leftrightarrow x^a &lt;_1 x^A $"> or (<IMG
 WIDTH="62" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_516.png"
 ALT="$x^a =
x^A$"> and <IMG
 WIDTH="67" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_517.png"
 ALT="$y^b &lt;_2 y^B$">).|;

$l2h_cache_key = q/For a left Groebner basis $G$ of $I$ the following holds:
$f \in I$ if and only if the left normal form $\hbox{NF}(f|G) = 0$./;
$l2h_cache{$l2h_cache_key} = q|For a left Groebner basis <IMG
 WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_186.png"
 ALT="$G$"> of <IMG
 WIDTH="12" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_248.png"
 ALT="$I$"> the following holds:
<IMG
 WIDTH="41" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_271.png"
 ALT="$f \in I$"> if and only if the left normal form <!-- MATH
 $\hbox{NF}(f\|G) = 0$
 -->
<IMG
 WIDTH="95" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_272.png"
 ALT="$\hbox{NF}(f\vert G) = 0$">.|;

$l2h_cache_key = q/$Z\/p \rightarrow Z\/p^\prime,
\quad
[i]_p \mapsto i \in [-p\/2, \, p\/2] \subseteq Z, \;
i \mapsto [i]_{p^\prime} \in Z\/p^\prime$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $Z/p \rightarrow Z/p^\prime,
\quad
[i]_p \mapsto i \in [-p/2, \, p/2] \subseteq Z, \;
i \mapsto [i]_{p^\prime} \in Z/p^\prime$
 -->
<IMG
 WIDTH="412" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_84.png"
 ALT="$Z/p \rightarrow Z/p^\prime,
\quad
[i]_p \mapsto i \in [-p/2, \, p/2] \subseteq Z, \;
i \mapsto [i]_{p^\prime} \in Z/p^\prime$">|;

$l2h_cache_key = q/A Groebner basis $G\subset A^r$ is called {\bf minimal} (or {\bf reduced}) if $0\notin G$ and if
$\hbox{LM}(g)\notin L(G\setminus \{ g \})$ for all $g\in G$.
Note, that any Groebner basis can be made minimal by deleting successively those
$g$ with $\hbox{LM}(h)\mid \hbox{LM}(g)$ for some $h\in G\setminus\{g \}$.

For $f\in A^r $ and $ G\subset A^r $ we say that $f$ is {\bf completely reduced with
respect to $G$} if no monomial of $f$ is contained in $L(G)$./;
$l2h_cache{$l2h_cache_key} = q|A Groebner basis <IMG
 WIDTH="57" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_256.png"
 ALT="$G\subset A^r$"> is called <B>minimal</B> (or <B>reduced</B>) if <IMG
 WIDTH="44" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_257.png"
 ALT="$0\notin G$"> and if
<!-- MATH
 $\hbox{LM}(g)\notin L(G\setminus \{ g \})$
 -->
<IMG
 WIDTH="143" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_258.png"
 ALT="$\hbox{LM}(g)\notin L(G\setminus \{ g \})$"> for all <IMG
 WIDTH="44" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_251.png"
 ALT="$g\in G$">.
Note, that any Groebner basis can be made minimal by deleting successively those
<IMG
 WIDTH="12" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_148.png"
 ALT="$g$"> with <!-- MATH
 $\hbox{LM}(h)\mid \hbox{LM}(g)$
 -->
<IMG
 WIDTH="109" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_259.png"
 ALT="$\hbox{LM}(h)\mid \hbox{LM}(g)$"> for some <!-- MATH
 $h\in G\setminus\{g \}$
 -->
<IMG
 WIDTH="84" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_260.png"
 ALT="$h\in G\setminus\{g \}$">.

<P>
For <IMG
 WIDTH="52" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_261.png"
 ALT="$f\in A^r $"> and <IMG
 WIDTH="57" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_256.png"
 ALT="$G\subset A^r$"> we say that <IMG
 WIDTH="14" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_262.png"
 ALT="$f$"> is <B>completely reduced with
respect to <IMG
 WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_186.png"
 ALT="$G$"></B> if no monomial of <IMG
 WIDTH="14" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_262.png"
 ALT="$f$"> is contained in <IMG
 WIDTH="40" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_263.png"
 ALT="$L(G)$">.|;

$l2h_cache_key = q/$k_2$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="20" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_98.png"
 ALT="$k_2$">|;

$l2h_cache_key = q/${\tt L[i]}=M_i$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 ${\tt L[i]}=M_i$
 -->
<IMG
 WIDTH="72" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_135.png"
 ALT="${\tt L[i]}=M_i$">|;

$l2h_cache_key = q/$h_1$ and $h_2$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="20" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_154.png"
 ALT="$h_1$"> and <IMG
 WIDTH="20" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_155.png"
 ALT="$h_2$">|;

$l2h_cache_key = q/nrows($v_i$)./;
$l2h_cache{$l2h_cache_key} = q|nrows(<IMG
 WIDTH="17" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_429.png"
 ALT="$v_i$">).|;

$l2h_cache_key = q/$<_m = (<,C)$ denotes the module ordering (giving priority to the coefficients):/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="90" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_474.png"
 ALT="$&lt;_m = (&lt;,C)$"> denotes the module ordering (giving priority to the coefficients):|;

$l2h_cache_key = q/$T^1,T_2$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="46" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_409.png"
 ALT="$T^1,T_2$">|;

$l2h_cache_key = q/section Algorithms./;
$l2h_cache{$l2h_cache_key} = q|section Algorithms.|;

$l2h_cache_key = q/  Then the number of solutions of $J_C(w)$ is equal to $w!$ times the number of codewords of weight $w$. And for $1\le w\le d$, either $J_C(w)$
  has no solutions, which is equivalent to $w<d$, or $J_C(w)$ has some solutions, which is equivalent to $w=d$./;
$l2h_cache{$l2h_cache_key} = q|  Then the number of solutions of <IMG
 WIDTH="48" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_777.png"
 ALT="$J_C(w)$"> is equal to <IMG
 WIDTH="20" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_784.png"
 ALT="$w!$"> times the number of codewords of weight <IMG
 WIDTH="16" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_312.png"
 ALT="$w$">. And for <IMG
 WIDTH="75" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_785.png"
 ALT="$1\le w\le d$">, either <IMG
 WIDTH="48" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_777.png"
 ALT="$J_C(w)$">
  has no solutions, which is equivalent to <IMG
 WIDTH="45" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_786.png"
 ALT="$w&lt;d$">, or <IMG
 WIDTH="48" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_777.png"
 ALT="$J_C(w)$"> has some solutions, which is equivalent to <IMG
 WIDTH="45" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_787.png"
 ALT="$w=d$">.|;

$l2h_cache_key = q/$K[x_1,\ldots,x_n]$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $K[x_1,\ldots,x_n]$
 -->
<IMG
 WIDTH="97" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_60.png"
 ALT="$K[x_1,\ldots,x_n]$">|;

$l2h_cache_key = q/For a $G$--algebra $A$, we denote by ${}_{A} \langle g_1, \dots, g_s \rangle$
the left submodule of a free module $A^r$, generated by elements $\{g_1, \dots, g_s\}\subset A^r$./;
$l2h_cache{$l2h_cache_key} = q|For a <IMG
 WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_186.png"
 ALT="$G$">-algebra <IMG
 WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_187.png"
 ALT="$A$">, we denote by <!-- MATH
 ${}_{A} \langle g_1, \dots, g_s \rangle$
 -->
<IMG
 WIDTH="91" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_236.png"
 ALT="${}_{A} \langle g_1, \dots, g_s \rangle$">
the left submodule of a free module <IMG
 WIDTH="23" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_237.png"
 ALT="$A^r$">, generated by elements <!-- MATH
 $\{g_1, \dots, g_s\}\subset A^r$
 -->
<IMG
 WIDTH="125" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_238.png"
 ALT="$\{g_1, \dots, g_s\}\subset A^r$">.|;

$l2h_cache_key = q/If the principal part of $f$ is $C$-nondegenerate, one can compute the spectrum using the library {\tt spectrum.lib}.
In this case, the V-filtration on $H''$ coincides with the Newton-filtration on $H''$ which allows to compute the spectrum more efficiently./;
$l2h_cache{$l2h_cache_key} = q|If the principal part of <IMG
 WIDTH="14" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_262.png"
 ALT="$f$"> is <IMG
 WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_77.png"
 ALT="$C$">-nondegenerate, one can compute the spectrum using the library <TT>spectrum.lib</TT>.
In this case, the V-filtration on <IMG
 WIDTH="27" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_625.png"
 ALT="$H''$"> coincides with the Newton-filtration on <IMG
 WIDTH="27" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_625.png"
 ALT="$H''$"> which allows to compute the spectrum more efficiently.|;

$l2h_cache_key = q/The ideal $I$ is generated by binomials of type $X^a-X^b$ (multiindex notation)
in the surrounding polynomial ring $K[X]=K[X_1,...,X_n]$. The binomials
represent a congruence on the monoid ${Z}^n$ with residue monoid $M$.
Let $N$ be the image of $M$ in gp($M$)\/torsion. Then $N$ is universal in the
sense that every homomorphism from $M$ to an affine monoid factors through $N$.
If $I$ is a prime ideal, then $K[N]= K[X]\/I$. In general, $K[N]=K[X]\/P$ where
$P$ is the unique minimal prime ideal of $I$ generated by binomials of type
$X^a-X^b$.

The function computes the normalization of $K[N]$ and returns a newly created
polynomial ring of the same Krull dimension, whose variables are
$x(1),...,x(n-r)$, where $r$ is the rank of the matrix with rows $a-b$.
(In general there is no canonical choice for such an embedding.)
Inside this polynomial ring there is an ideal $I$ which lists the algebra
generators of the normalization of $K[N]$./;
$l2h_cache{$l2h_cache_key} = q|The ideal <IMG
 WIDTH="12" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_248.png"
 ALT="$I$"> is generated by binomials of type <IMG
 WIDTH="67" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_885.png"
 ALT="$X^a-X^b$"> (multiindex notation)
in the surrounding polynomial ring <!-- MATH
 $K[X]=K[X_1,...,X_n]$
 -->
<IMG
 WIDTH="156" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_886.png"
 ALT="$K[X]=K[X_1,...,X_n]$">. The binomials
represent a congruence on the monoid <IMG
 WIDTH="25" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_887.png"
 ALT="${Z}^n$"> with residue monoid <IMG
 WIDTH="21" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_13.png"
 ALT="$M$">.
Let <IMG
 WIDTH="19" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_326.png"
 ALT="$N$"> be the image of <IMG
 WIDTH="21" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_13.png"
 ALT="$M$"> in gp(<IMG
 WIDTH="21" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_13.png"
 ALT="$M$">)/torsion. Then <IMG
 WIDTH="19" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_326.png"
 ALT="$N$"> is universal in the
sense that every homomorphism from <IMG
 WIDTH="21" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_13.png"
 ALT="$M$"> to an affine monoid factors through <IMG
 WIDTH="19" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_326.png"
 ALT="$N$">.
If <IMG
 WIDTH="12" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_248.png"
 ALT="$I$"> is a prime ideal, then <IMG
 WIDTH="118" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_888.png"
 ALT="$K[N]= K[X]/I$">. In general, <IMG
 WIDTH="122" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_889.png"
 ALT="$K[N]=K[X]/P$"> where
<IMG
 WIDTH="17" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_890.png"
 ALT="$P$"> is the unique minimal prime ideal of <IMG
 WIDTH="12" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_248.png"
 ALT="$I$"> generated by binomials of type
<IMG
 WIDTH="67" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_885.png"
 ALT="$X^a-X^b$">.

<P>
The function computes the normalization of <IMG
 WIDTH="42" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_891.png"
 ALT="$K[N]$"> and returns a newly created
polynomial ring of the same Krull dimension, whose variables are
<!-- MATH
 $x(1),...,x(n-r)$
 -->
<IMG
 WIDTH="119" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_892.png"
 ALT="$x(1),...,x(n-r)$">, where <IMG
 WIDTH="12" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_296.png"
 ALT="$r$"> is the rank of the matrix with rows <IMG
 WIDTH="39" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_893.png"
 ALT="$a-b$">.
(In general there is no canonical choice for such an embedding.)
Inside this polynomial ring there is an ideal <IMG
 WIDTH="12" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_248.png"
 ALT="$I$"> which lists the algebra
generators of the normalization of <IMG
 WIDTH="42" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_891.png"
 ALT="$K[N]$">.|;

$l2h_cache_key = q/$$
0 \longleftarrow r\/j \longleftarrow r(1)
\buildrel{T[1]}\over{\longleftarrow} r(2) \oplus r^3(3)
\buildrel{T[2]}\over{\longleftarrow} r^4(4)
\buildrel{T[3]}\over{\longleftarrow} r(5)
\longleftarrow 0 \quad .
$$/;
$l2h_cache{$l2h_cache_key} = q|<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
0 \longleftarrow r/j \longleftarrow r(1)
\buildrel{T[1]}\over{\longleftarrow} r(2) \oplus r^3(3)
\buildrel{T[2]}\over{\longleftarrow} r^4(4)
\buildrel{T[3]}\over{\longleftarrow} r(5)
\longleftarrow 0 \quad .
\end{displaymath}
 -->

<IMG
 WIDTH="438" HEIGHT="31" BORDER="0"
 SRC="sing_99.png"
 ALT="\begin{displaymath}
0 \longleftarrow r/j \longleftarrow r(1)
\buildrel{T[1]}\ove...
...ldrel{T[3]}\over{\longleftarrow} r(5)
\longleftarrow 0 \quad .
\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>|;

$l2h_cache_key = q/    $$\deg(x^\alpha) > \deg(x^\beta) \Rightarrow x^\alpha > x^\beta. $$/;
$l2h_cache{$l2h_cache_key} = q|    <BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
\deg(x^\alpha) > \deg(x^\beta) \Rightarrow x^\alpha > x^\beta.
\end{displaymath}
 -->

<IMG
 WIDTH="215" HEIGHT="28" BORDER="0"
 SRC="sing_521.png"
 ALT="\begin{displaymath}\deg(x^\alpha) &gt; \deg(x^\beta) \Rightarrow x^\alpha &gt; x^\beta. \end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>|;

$l2h_cache_key = q/  $wt({\bf e})=t$ and the solution is unique and of multiplicity one satisfying ${\bf u}={\bf u}({\bf e})$./;
$l2h_cache{$l2h_cache_key} = q|  <IMG
 WIDTH="69" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_880.png"
 ALT="$wt({\bf e})=t$"> and the solution is unique and of multiplicity one satisfying <!-- MATH
 ${\bf u}={\bf u}({\bf e})$
 -->
<IMG
 WIDTH="67" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_881.png"
 ALT="${\bf u}={\bf u}({\bf e})$">.|;

$l2h_cache_key = q/$A_1$=matrix(M),/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="23" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_165.png"
 ALT="$A_1$">=matrix(M),|;

$l2h_cache_key = q/$N = R^n\/M$ where $n$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="85" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_430.png"
 ALT="$N = R^n/M$"> where <IMG
 WIDTH="14" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_17.png"
 ALT="$n$">|;

$l2h_cache_key = q/$J$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="14" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_361.png"
 ALT="$J$">|;

$l2h_cache_key = q/  Adding some more polynomials to $F_C$, thus obtaining some $F'_C$, it is possible to prove the following {\bf Theorem}:/;
$l2h_cache{$l2h_cache_key} = q|  Adding some more polynomials to <IMG
 WIDTH="25" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_757.png"
 ALT="$F_C$">, thus obtaining some <IMG
 WIDTH="25" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_759.png"
 ALT="$F'_C$">, it is possible to prove the following <B>Theorem</B>:|;

$l2h_cache_key = q/$\{b \in R^n \mid bJ \subset M\}$./;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $\{b \in R^n \mid bJ \subset M\}$
 -->
<IMG
 WIDTH="136" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_174.png"
 ALT="$\{b \in R^n \mid bJ \subset M\}$">.|;

$l2h_cache_key = q/$h_1\/(h_1 \cap h_2) \cong R^k \/ ker(\overline{H_1})$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $h_1/(h_1 \cap h_2) \cong R^k / ker(\overline{H_1})$
 -->
<IMG
 WIDTH="197" HEIGHT="35" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_161.png"
 ALT="$h_1/(h_1 \cap h_2) \cong R^k / ker(\overline{H_1})$">|;

$l2h_cache_key = q/ $O, \; (O^{opp})^{opp} = O$./;
$l2h_cache{$l2h_cache_key} = q| <!-- MATH
 $O, \; (O^{opp})^{opp} = O$
 -->
<IMG
 WIDTH="127" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_212.png"
 ALT="$O, \; (O^{opp})^{opp} = O$">.|;

$l2h_cache_key = q/$Z\/p \rightarrow  GF(p^n)$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $Z/p \rightarrow  GF(p^n)$
 -->
<IMG
 WIDTH="110" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_79.png"
 ALT="$Z/p \rightarrow GF(p^n)$">|;

$l2h_cache_key = q/$R^n\/M$, if $R$ denotes the basering and
$M$ a homogeneous submodule of $R^n$ and the argument represents a
resolution of
$R^n\/M$./;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="49" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_91.png"
 ALT="$R^n/M$">, if <IMG
 WIDTH="16" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_51.png"
 ALT="$R$"> denotes the basering and
<IMG
 WIDTH="21" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_13.png"
 ALT="$M$"> a homogeneous submodule of <IMG
 WIDTH="25" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_89.png"
 ALT="$R^n$"> and the argument represents a
resolution of
<IMG
 WIDTH="49" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_91.png"
 ALT="$R^n/M$">.|;

$l2h_cache_key = q/$N$,/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="19" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_326.png"
 ALT="$N$">,|;

$l2h_cache_key = q/$x_n$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="22" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_299.png"
 ALT="$x_n$">|;

$l2h_cache_key = q/$\hbox{dim}_K(K[x,y,z]\/(\hbox{jacob}(f)+(f)))$,/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $\hbox{dim}_K(K[x,y,z]/(\hbox{jacob}(f)+(f)))$
 -->
<IMG
 WIDTH="239" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_398.png"
 ALT="$\hbox{dim}_K(K[x,y,z]/(\hbox{jacob}(f)+(f)))$">,|;

$l2h_cache_key = q/This function computes the ring of invariants of a diagonalizable group
$D = T\times G$ where $T$ is a torus and $G$ is a finite abelian group, both
acting diagonally on the polynomial ring $K[X_1,\ldots,X_n]$. The group
actions are specified by the input matrices A and U. The first matrix specifies
the torus action, the second the action of the finite group. See
torusInvariants and finiteDiagInvariants for more detail. The output is a
monomial ideal listing the algebra generators of the subalgebra of invariants./;
$l2h_cache{$l2h_cache_key} = q|This function computes the ring of invariants of a diagonalizable group
<IMG
 WIDTH="82" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_919.png"
 ALT="$D = T\times G$"> where <IMG
 WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_319.png"
 ALT="$T$"> is a torus and <IMG
 WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_186.png"
 ALT="$G$"> is a finite abelian group, both
acting diagonally on the polynomial ring <!-- MATH
 $K[X_1,\ldots,X_n]$
 -->
<IMG
 WIDTH="105" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_920.png"
 ALT="$K[X_1,\ldots,X_n]$">. The group
actions are specified by the input matrices A and U. The first matrix specifies
the torus action, the second the action of the finite group. See
torusInvariants and finiteDiagInvariants for more detail. The output is a
monomial ideal listing the algebra generators of the subalgebra of invariants.|;

$l2h_cache_key = q/$T^2=0$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="52" HEIGHT="17" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_410.png"
 ALT="$T^2=0$">|;

$l2h_cache_key = q/$R^l$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="21" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_156.png"
 ALT="$R^l$">|;

$l2h_cache_key = q/$C$ and $D$./;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_77.png"
 ALT="$C$"> and <IMG
 WIDTH="18" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_235.png"
 ALT="$D$">.|;

$l2h_cache_key = q/$\tilde{E}_6$ on a septic in $P^3$. But $x^7+y^7+z^7$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="23" HEIGHT="37" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_626.png"
 ALT="$\tilde{E}_6$"> on a septic in <IMG
 WIDTH="24" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_634.png"
 ALT="$P^3$">. But <IMG
 WIDTH="90" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_635.png"
 ALT="$x^7+y^7+z^7$">|;

$l2h_cache_key = q/let $w_1, \ldots, w_n$ be positive integers. Then ${\tt Wp}(w_1, \ldots,
w_n)$/;
$l2h_cache{$l2h_cache_key} = q|let <!-- MATH
 $w_1, \ldots, w_n$
 -->
<IMG
 WIDTH="78" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_457.png"
 ALT="$w_1, \ldots, w_n$"> be positive integers. Then <!-- MATH
 ${\tt Wp}(w_1, \ldots,
w_n)$
 -->
<IMG
 WIDTH="107" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_460.png"
 ALT="${\tt Wp}(w_1, \ldots,
w_n)$">|;

$l2h_cache_key = q/$M_i={\tt module}(A_i)$, i=1..k./;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $M_i={\tt module}(A_i)$
 -->
<IMG
 WIDTH="126" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_134.png"
 ALT="$M_i={\tt module} (A_i)$">, i=1..k.|;

$l2h_cache_key = q/$\exp(2\pi iM)$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="81" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_623.png"
 ALT="$\exp(2\pi iM)$">|;

$l2h_cache_key = q/$\alpha$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="14" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_72.png"
 ALT="$\alpha$">|;

$l2h_cache_key = q/$v_1, \ldots, v_k$, then/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $v_1, \ldots, v_k$
 -->
<IMG
 WIDTH="70" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_90.png"
 ALT="$v_1, \ldots, v_k$">, then|;

$l2h_cache_key = q/$f=0$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="43" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_401.png"
 ALT="$f=0$">|;

$l2h_cache_key = q/$H^i(F(d))$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="69" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_929.png"
 ALT="$H^i(F(d))$">|;

$l2h_cache_key = q/$x$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="13" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_38.png"
 ALT="$x$">|;

$l2h_cache_key = q/$\mu(f)$, the geometric genus $p_g(f)$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="36" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_628.png"
 ALT="$\mu(f)$">, the geometric genus <IMG
 WIDTH="41" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_629.png"
 ALT="$p_g(f)$">|;

$l2h_cache_key = q/  {\bf Hamming distance} between {\bf x,y}$\in F_q^n: d(x,y)=\#\{i|x_i\ne y_i\}$.
  {\bf Hamming weight} of {\bf x}$\in F_q^n: wt(x)=\#\{i|x_i\ne 0\}$./;
$l2h_cache{$l2h_cache_key} = q|  <B>Hamming distance</B> between <B>x,y</B><!-- MATH
 $\in F_q^n: d(x,y)=\#\{i\|x_i\ne y_i\}$
 -->
<IMG
 WIDTH="208" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_699.png"
 ALT="$\in F_q^n: d(x,y)=\char93 \{i\vert x_i\ne y_i\}$">.
  <B>Hamming weight</B> of <B>x</B><!-- MATH
 $\in F_q^n: wt(x)=\#\{i\|x_i\ne 0\}$
 -->
<IMG
 WIDTH="197" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_700.png"
 ALT="$\in F_q^n: wt(x)=\char93 \{i\vert x_i\ne 0\}$">.|;

$l2h_cache_key = q/ $\{x_i\}$/;
$l2h_cache{$l2h_cache_key} = q| <IMG
 WIDTH="35" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_229.png"
 ALT="$\{x_i\}$">|;

$l2h_cache_key = q/$P^4$./;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="24" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_352.png"
 ALT="$P^4$">.|;

$l2h_cache_key = q/$$\hbox{pr}:k^r\times(k^n,0)\rightarrow(k^n,0)$$
can be computed./;
$l2h_cache{$l2h_cache_key} = q|<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
\hbox{pr}:k^r\times(k^n,0)\rightarrow(k^n,0)
\end{displaymath}
 -->

<IMG
 WIDTH="177" HEIGHT="28" BORDER="0"
 SRC="sing_351.png"
 ALT="\begin{displaymath}\hbox{pr}:k^r\times(k^n,0)\rightarrow(k^n,0)\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
can be computed.|;

$l2h_cache_key = q/$f\in k[x_1,\ldots,x_n,t]$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $f\in k[x_1,\ldots,x_n,t]$
 -->
<IMG
 WIDTH="133" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_399.png"
 ALT="$f\in k[x_1,\ldots,x_n,t]$">|;

$l2h_cache_key = q/$Z\/n$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="33" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_64.png"
 ALT="$Z/n$">|;

$l2h_cache_key = q/$L(g_i)\neq L(g_j)$ for all $i\neq j$,/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $L(g_i)\neq L(g_j)$
 -->
<IMG
 WIDTH="99" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_141.png"
 ALT="$L(g_i)\neq L(g_j)$"> for all <IMG
 WIDTH="38" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_142.png"
 ALT="$i\neq j$">,|;

$l2h_cache_key = q/$A$ is an integral domain./;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_187.png"
 ALT="$A$"> is an integral domain.|;

$l2h_cache_key = q/$\hbox{GF}(p^n)$ with $p^n$ elements, where $p^n$ has to be less than or equal to $2^{15}$./;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $\hbox{GF}(p^n)$
 -->
<IMG
 WIDTH="56" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_25.png"
 ALT="$\hbox{GF}(p^n)$"> with <IMG
 WIDTH="21" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_26.png"
 ALT="$p^n$"> elements, where <IMG
 WIDTH="21" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_26.png"
 ALT="$p^n$"> has to be less than or equal to <IMG
 WIDTH="26" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_59.png"
 ALT="$2^{15}$">.|;

$l2h_cache_key = q/$\tilde{E}_6$ on a surface $X\subset{P}^3$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="23" HEIGHT="37" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_626.png"
 ALT="$\tilde{E}_6$"> on a surface <IMG
 WIDTH="59" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_627.png"
 ALT="$X\subset{P}^3$">|;

$l2h_cache_key = q/$h_1,\ldots,h_r$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $h_1,\ldots,h_r$
 -->
<IMG
 WIDTH="72" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_411.png"
 ALT="$h_1,\ldots,h_r$">|;

$l2h_cache_key = q/compute $I_A$ without any auxiliary variables, provided that $A$ contains a vector $w$
with positive coefficients in its row space. This is a real restriction,
i.e., the algorithm will not necessarily work in the general case.

A lattice basis $v_1,\ldots,v_r$ is again computed via the
LLL-algorithm.
The saturation step is performed in the following way:
First note that $w$ induces a positive grading w.r.t. which the ideal
$$ I=<x^{v_i^+}-x^{v_i^-}|i=1,\ldots,r> $$
is homogeneous corresponding to our lattice basis. We use the following
lemma:

Let $I$ be a homogeneous ideal w.r.t. the weighted reverse
lexicographical ordering with weight vector $w$ and variable order $x_1
> x_2 > \ldots > x_n$. Let $G$ denote a Groebner basis of $I$ w.r.t.
this ordering.  Then a Groebner basis of $(I:x_n^\infty)$ is obtained by
dividing each element of $G$ by the highest possible power of $x_n$.

From this fact, we can succesively compute
$$ I_A= I:(x_1\cdot\ldots\cdot x_n)^\infty
=(((I:x_1^\infty):x_2^\infty):\ldots :x_n^\infty); $$
in the $i$-th step we take $x_i$ as the smallest variable and apply the
lemma with $x_i$ instead of $x_n$.

This procedure involves $n$ Groebner basis computations. Actually, this
number can be reduced to at most $n\/2$/;
$l2h_cache{$l2h_cache_key} = q|compute <IMG
 WIDTH="22" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_649.png"
 ALT="$I_A$"> without any auxiliary variables, provided that <IMG
 WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_187.png"
 ALT="$A$"> contains a vector <IMG
 WIDTH="16" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_312.png"
 ALT="$w$">
with positive coefficients in its row space. This is a real restriction,
i.e., the algorithm will not necessarily work in the general case.

<P>
A lattice basis <!-- MATH
 $v_1,\ldots,v_r$
 -->
<IMG
 WIDTH="69" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_485.png"
 ALT="$v_1,
\ldots, v_r$"> is again computed via the
LLL-algorithm.
The saturation step is performed in the following way:
First note that <IMG
 WIDTH="16" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_312.png"
 ALT="$w$"> induces a positive grading w.r.t. which the ideal
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
I=<x^{v_i^+}-x^{v_i^-}\|i=1,\ldots,r>
\end{displaymath}
 -->

<IMG
 WIDTH="210" HEIGHT="28" BORDER="0"
 SRC="sing_648.png"
 ALT="\begin{displaymath}I=&lt;x^{v_i^+}-x^{v_i^-}\vert i=1,\ldots,r&gt; \end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
is homogeneous corresponding to our lattice basis. We use the following
lemma:

<P>
Let <IMG
 WIDTH="12" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_248.png"
 ALT="$I$"> be a homogeneous ideal w.r.t. the weighted reverse
lexicographical ordering with weight vector <IMG
 WIDTH="16" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_312.png"
 ALT="$w$"> and variable order <!-- MATH
 $x_1
> x_2 > \ldots > x_n$
 -->
<IMG
 WIDTH="137" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_666.png"
 ALT="$x_1
&gt; x_2 &gt; \ldots &gt; x_n$">. Let <IMG
 WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_186.png"
 ALT="$G$"> denote a Groebner basis of <IMG
 WIDTH="12" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_248.png"
 ALT="$I$"> w.r.t.
this ordering.  Then a Groebner basis of <!-- MATH
 $(I:x_n^\infty)$
 -->
<IMG
 WIDTH="61" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_667.png"
 ALT="$(I:x_n^\infty)$"> is obtained by
dividing each element of <IMG
 WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_186.png"
 ALT="$G$"> by the highest possible power of <IMG
 WIDTH="22" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_299.png"
 ALT="$x_n$">.

<P>
From this fact, we can succesively compute
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
I_A= I:(x_1\cdot\ldots\cdot x_n)^\infty
=(((I:x_1^\infty):x_2^\infty):\ldots :x_n^\infty);
\end{displaymath}
 -->

<IMG
 WIDTH="370" HEIGHT="28" BORDER="0"
 SRC="sing_668.png"
 ALT="\begin{displaymath}I_A= I:(x_1\cdot\ldots\cdot x_n)^\infty
=(((I:x_1^\infty):x_2^\infty):\ldots :x_n^\infty); \end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
in the <IMG
 WIDTH="10" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_55.png"
 ALT="$i$">-th step we take <IMG
 WIDTH="18" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_125.png"
 ALT="$x_i$"> as the smallest variable and apply the
lemma with <IMG
 WIDTH="18" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_125.png"
 ALT="$x_i$"> instead of <IMG
 WIDTH="22" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_299.png"
 ALT="$x_n$">.

<P>
This procedure involves <IMG
 WIDTH="14" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_17.png"
 ALT="$n$"> Groebner basis computations. Actually, this
number can be reduced to at most <IMG
 WIDTH="30" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_669.png"
 ALT="$n/2$">|;

$l2h_cache_key = q/$$A\/(A \cap B)$$/;
$l2h_cache{$l2h_cache_key} = q|<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
A/(A \cap B)
\end{displaymath}
 -->

<IMG
 WIDTH="73" HEIGHT="28" BORDER="0"
 SRC="sing_355.png"
 ALT="\begin{displaymath}A/(A \cap B)\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>|;

$l2h_cache_key = q/$f_i=0$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="46" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_427.png"
 ALT="$f_i=0$">|;

$l2h_cache_key = q/$delta$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="39" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_932.png"
 ALT="$delta$">|;

$l2h_cache_key = q/$$K\left\langle x_1, \ldots, x_n; y_1, \ldots, y_m \mid y_j * y_i = - y_i y_j, j > i \right\rangle \/ \left\langle y_1^2, \ldots, y_m^2  \right\rangle.$$/;
$l2h_cache{$l2h_cache_key} = q|<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
K\left\langle x_1, \ldots, x_n; y_1, \ldots, y_m \mid y_j * y_i = - y_i y_j, j > i \right\rangle / \left\langle y_1^2, \ldots, y_m^2  \right\rangle.
\end{displaymath}
 -->

<IMG
 WIDTH="440" HEIGHT="30" BORDER="0"
 SRC="sing_293.png"
 ALT="\begin{displaymath}K\left\langle x_1, \ldots, x_n; y_1, \ldots, y_m \mid y_j * y...
...right\rangle / \left\langle y_1^2, \ldots, y_m^2 \right\rangle.\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>|;

$l2h_cache_key = q/(in $P^n$),/;
$l2h_cache{$l2h_cache_key} = q|(in <IMG
 WIDTH="25" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_404.png"
 ALT="$P^n$">),|;

$l2h_cache_key = q/$z$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="12" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_40.png"
 ALT="$z$">|;

$l2h_cache_key = q/{\sc Letterpace}/;
$l2h_cache{$l2h_cache_key} = q|L<SMALL>ETTERPACE</SMALL>|;

$l2h_cache_key = q/$\sum x_i \partial \/\partial x_{i+1}$./;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $\sum x_i \partial /\partial x_{i+1}$
 -->
<IMG
 WIDTH="95" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_418.png"
 ALT="$\sum x_i \partial /\partial x_{i+1}$">.|;

$l2h_cache_key = q/  $a_i$/;
$l2h_cache{$l2h_cache_key} = q|  <IMG
 WIDTH="18" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_118.png"
 ALT="$a_i$">|;

$l2h_cache_key = q/$K[x_1,\dots,x_n]$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $K[x_1,\dots,x_n]$
 -->
<IMG
 WIDTH="97" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_338.png"
 ALT="$K[x_1,\dots,x_n]$">|;

$l2h_cache_key = q/$\hbox{Wp}(w_1, \ldots, w_n)$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $\hbox{Wp}(w_1, \ldots, w_n)$
 -->
<IMG
 WIDTH="116" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_435.png"
 ALT="$\hbox{Wp}(w_1, \ldots, w_n)$">|;

$l2h_cache_key = q/\quad  \quad  $x^\alpha e_i <_m x^\beta e_j \Leftrightarrow x^\alpha <
x^\beta$ or ($x^\alpha = x^\beta $ and $ i < j$)./;
$l2h_cache{$l2h_cache_key} = q|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<!-- MATH
 $x^\alpha e_i <_m x^\beta e_j \Leftrightarrow x^\alpha <
x^\beta$
 -->
<IMG
 WIDTH="182" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_475.png"
 ALT="$x^\alpha e_i &lt;_m x^\beta e_j \Leftrightarrow x^\alpha &lt;
x^\beta$"> or (<!-- MATH
 $x^\alpha = x^\beta$
 -->
<IMG
 WIDTH="61" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_476.png"
 ALT="$x^\alpha = x^\beta $"> and <IMG
 WIDTH="38" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_477.png"
 ALT="$ i &lt; j$">).|;

$l2h_cache_key = q/$y$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="12" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_39.png"
 ALT="$y$">|;

$l2h_cache_key = q/$\hbox{Loc}_{(x)}K[x_1,\ldots,x_n])$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $\hbox{Loc}_{(x)}K[x_1,\ldots,x_n])$
 -->
<IMG
 WIDTH="146" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_61.png"
 ALT="$\hbox{Loc}_{(x)}K[x_1,\ldots,x_n])$">|;

$l2h_cache_key = q/$\forall i<j$, $c_{ij} = n$,/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="47" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_209.png"
 ALT="$\forall i&lt;j$">, <IMG
 WIDTH="53" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_210.png"
 ALT="$c_{ij} = n$">,|;

$l2h_cache_key = q/$R(i)[x,y,z]$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="83" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_54.png"
 ALT="$R(i)[x,y,z]$">|;

$l2h_cache_key = q/  A matrix $H$ with the property ${\bf c}\in C\iff H{\bf c}^T=0$ is the {\bf check matrix}./;
$l2h_cache{$l2h_cache_key} = q|  A matrix <IMG
 WIDTH="19" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_703.png"
 ALT="$H$"> with the property <!-- MATH
 ${\bf c}\in C\iff H{\bf c}^T=0$
 -->
<IMG
 WIDTH="153" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_704.png"
 ALT="${\bf c}\in C\iff H{\bf c}^T=0$"> is the <B>check matrix</B>.|;

$l2h_cache_key = q/$GF$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="29" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_80.png"
 ALT="$GF$">|;

$l2h_cache_key = q/$R= K[x_1, \ldots, x_n]$,/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $R= K[x_1, \ldots, x_n]$
 -->
<IMG
 WIDTH="130" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_228.png"
 ALT="$R= K[x_1, \ldots, x_n]$">,|;

$l2h_cache_key = q/$\deg(x^\alpha) = w_1 \alpha_1 + \cdots + w_n\alpha_n$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $\deg(x^\alpha) = w_1 \alpha_1 + \cdots + w_n\alpha_n$
 -->
<IMG
 WIDTH="212" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_519.png"
 ALT="$\deg(x^\alpha) = w_1 \alpha_1 + \cdots + w_n\alpha_n$">|;

$l2h_cache_key = q/  A matrix $G$ whose rows are the base vectors of $C$ is the {\bf generator matrix}./;
$l2h_cache{$l2h_cache_key} = q|  A matrix <IMG
 WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_186.png"
 ALT="$G$"> whose rows are the base vectors of <IMG
 WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_77.png"
 ALT="$C$"> is the <B>generator matrix</B>.|;

$l2h_cache_key = q/  $\eta_i:= Z_i^{n+1}-Z_i=0, 1\le i\le e$, since $a^{j_i}$ are either $n$-th roots of unity or zero;/;
$l2h_cache{$l2h_cache_key} = q|  <!-- MATH
 $\eta_i:= Z_i^{n+1}-Z_i=0, 1\le i\le e$
 -->
<IMG
 WIDTH="215" HEIGHT="35" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_748.png"
 ALT="$\eta_i:= Z_i^{n+1}-Z_i=0, 1\le i\le e$">, since <IMG
 WIDTH="24" HEIGHT="17" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_749.png"
 ALT="$a^{j_i}$"> are either <IMG
 WIDTH="14" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_17.png"
 ALT="$n$">-th roots of unity or zero;|;

$l2h_cache_key = q/$C \rightarrow R, \quad$ by taking the real part/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $C \rightarrow R, \quad$
 -->
<IMG
 WIDTH="74" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_85.png"
 ALT="$C \rightarrow R, \quad$"> by taking the real part|;

$l2h_cache_key = q/$G$-algebras $A$ and $B$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_186.png"
 ALT="$G$">-algebras <IMG
 WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_187.png"
 ALT="$A$"> and <IMG
 WIDTH="17" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_192.png"
 ALT="$B$">|;

$l2h_cache_key = q/{\sc Plural}/;
$l2h_cache{$l2h_cache_key} = q|P<SMALL>LURAL</SMALL>|;

$l2h_cache_key = q/$<_1$ a monomial
ordering on $K[x]$ and $<_2$ a monomial ordering on $K[y]$.   The product
ordering (or block ordering) $<\ := (<_1,<_2)$ on $K[x,y]$ is the following:/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="24" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_510.png"
 ALT="$&lt;_1$"> a monomial
ordering on <IMG
 WIDTH="37" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_448.png"
 ALT="$K[x]$"> and <IMG
 WIDTH="24" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_511.png"
 ALT="$&lt;_2$"> a monomial ordering on <IMG
 WIDTH="36" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_512.png"
 ALT="$K[y]$">.   The product
ordering (or block ordering) <!-- MATH
 $<\ := (<_1,<_2)$
 -->
<IMG
 WIDTH="101" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_513.png"
 ALT="$&lt;\ := (&lt;_1,&lt;_2)$"> on <IMG
 WIDTH="52" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_514.png"
 ALT="$K[x,y]$"> is the following:|;

$l2h_cache_key = q/$\hbox{Ext}^1(M,M)$, resp.\ $\hbox{Ext}^2(M,M)$,/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $\hbox{Ext}^1(M,M)$
 -->
<IMG
 WIDTH="90" HEIGHT="36" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_356.png"
 ALT="$\hbox{Ext}^1(M,M)$">, resp. <!-- MATH
 $\hbox{Ext}^2(M,M)$
 -->
<IMG
 WIDTH="90" HEIGHT="36" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_357.png"
 ALT="$\hbox{Ext}^2(M,M)$">,|;

$l2h_cache_key = q/    \phantom{ $x^\alpha < x^\beta \Leftrightarrow$}$ \deg(x^\alpha) =
    \deg(x^\beta)$ and $\exists\ 1 \le i \le n: \alpha_n = \beta_n,
    \ldots, \alpha_{i+1} = \beta_{i+1}, \alpha_i > \beta_i.$/;
$l2h_cache{$l2h_cache_key} = q|    <!-- MATH
 $\deg(x^\alpha) =
    \deg(x^\beta)$
 -->
<IMG
 WIDTH="134" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_454.png"
 ALT="$ \deg(x^\alpha) =
\deg(x^\beta)$"> and <!-- MATH
 $\exists\ 1 \le i \le n: \alpha_n = \beta_n,
    \ldots, \alpha_{i+1} = \beta_{i+1}, \alpha_i > \beta_i.$
 -->
<IMG
 WIDTH="336" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_455.png"
 ALT="$\exists\ 1 \le i \le n: \alpha_n = \beta_n,
\ldots, \alpha_{i+1} = \beta_{i+1}, \alpha_i &gt; \beta_i.$">|;

$l2h_cache_key = q/  Every cyclic code $C$ possesses a {\bf general error-locator polynomial} $L_C$ from $F_q[X_1,\ldots ,X_{n-k},Z]$ that satisfies the following
  two properties:/;
$l2h_cache{$l2h_cache_key} = q|  Every cyclic code <IMG
 WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_77.png"
 ALT="$C$"> possesses a <B>general error-locator polynomial</B> <IMG
 WIDTH="26" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_760.png"
 ALT="$L_C$"> from <!-- MATH
 $F_q[X_1,\ldots ,X_{n-k},Z]$
 -->
<IMG
 WIDTH="144" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_761.png"
 ALT="$F_q[X_1,\ldots ,X_{n-k},Z]$"> that satisfies the following
  two properties:|;

$l2h_cache_key = q/$x^\alpha < x^\beta  \Leftrightarrow  \exists\; 1 \le i \le n :
\alpha_1 = \beta_1, \ldots, \alpha_{i-1} = \beta_{i-1}, \alpha_i >
\beta_i$./;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $x^\alpha < x^\beta  \Leftrightarrow  \exists\; 1 \le i \le n :
\alpha_1 = \beta_1, \ldots, \alpha_{i-1} = \beta_{i-1}, \alpha_i >
\beta_i$
 -->
<IMG
 WIDTH="410" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_463.png"
 ALT="$x^\alpha &lt; x^\beta \Leftrightarrow \exists\; 1 \le i \le n :
\alpha_1 = \beta_1, \ldots, \alpha_{i-1} = \beta_{i-1}, \alpha_i &gt;
\beta_i$">.|;

$l2h_cache_key = q/$Q \rightarrow  C$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $Q \rightarrow  C$
 -->
<IMG
 WIDTH="54" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_76.png"
 ALT="$Q \rightarrow C$">|;

$l2h_cache_key = q/$Q \rightarrow (Z\/p)(a, \ldots)$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $Q \rightarrow (Z/p)(a, \ldots)$
 -->
<IMG
 WIDTH="127" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_87.png"
 ALT="$Q \rightarrow (Z/p)(a, \ldots)$">|;

$l2h_cache_key = q/  The code $C$ is {\bf cyclic}, if for every codeword ${\bf c}=(c_0,\dots,c_{n-1})$ in $C$ its
  cyclic shift $(c_{n-1},c_0,\dots,c_{n-2})$ is again a codeword in $C$.
  When working with cyclic codes, vectors are usually presented as polynomials.
  So ${\bf c}$ is represented by the polynomial $c(x)=\sum_{i=0}^{n-1}c_ix^i$ with $x^n=1$, more
  precisely $c(x)$ is an element of the factor ring $F_q[X]\/\langle X^n-1 \rangle$.
  Cyclic codes over $F_q$ of length $n$ correspond one-to-one to ideals in this factor ring.
  We assume for cyclic codes that $(q,n)=1$. Let $F=F_{q^m}$ be
  the splitting field of $X^n-1$ over $F_q$. Then $F$ has a {\bf primitive $n$-th root of unity} which will be denoted by $a$.
  A cyclic code is uniquely given by a {\bf defining set} $S_C$ which is a subset of $Z\!\!\! Z_n$ such that
  $$
    c(x) \in C \ \hbox{ if } \ c(a ^i )=0 \ \hbox{ for all } \ i \in S_C.
  $$
  A cyclic code has several defining sets./;
$l2h_cache{$l2h_cache_key} = q|  The code <IMG
 WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_77.png"
 ALT="$C$"> is <B>cyclic</B>, if for every codeword <!-- MATH
 ${\bf c}=(c_0,\dots,c_{n-1})$
 -->
<IMG
 WIDTH="127" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_705.png"
 ALT="${\bf c}=(c_0,\dots,c_{n-1})$"> in <IMG
 WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_77.png"
 ALT="$C$"> its
  cyclic shift <!-- MATH
 $(c_{n-1},c_0,\dots,c_{n-2})$
 -->
<IMG
 WIDTH="137" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_706.png"
 ALT="$(c_{n-1},c_0,\dots,c_{n-2})$"> is again a codeword in <IMG
 WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_77.png"
 ALT="$C$">.
  When working with cyclic codes, vectors are usually presented as polynomials.
  So <IMG
 WIDTH="12" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_707.png"
 ALT="${\bf c}$"> is represented by the polynomial <!-- MATH
 $c(x)=\sum_{i=0}^{n-1}c_ix^i$
 -->
<IMG
 WIDTH="125" HEIGHT="38" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_708.png"
 ALT="$c(x)=\sum_{i=0}^{n-1}c_ix^i$"> with <IMG
 WIDTH="51" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_709.png"
 ALT="$x^n=1$">, more
  precisely <IMG
 WIDTH="32" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_710.png"
 ALT="$c(x)$"> is an element of the factor ring <!-- MATH
 $F_q[X]/\langle X^n-1 \rangle$
 -->
<IMG
 WIDTH="115" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_711.png"
 ALT="$F_q[X]/\langle X^n-1 \rangle$">.
  Cyclic codes over <IMG
 WIDTH="21" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_697.png"
 ALT="$F_q$"> of length <IMG
 WIDTH="14" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_17.png"
 ALT="$n$"> correspond one-to-one to ideals in this factor ring.
  We assume for cyclic codes that <IMG
 WIDTH="70" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_712.png"
 ALT="$(q,n)=1$">. Let <IMG
 WIDTH="66" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_713.png"
 ALT="$F=F_{q^m}$"> be
  the splitting field of <IMG
 WIDTH="55" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_714.png"
 ALT="$X^n-1$"> over <IMG
 WIDTH="21" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_697.png"
 ALT="$F_q$">. Then <IMG
 WIDTH="17" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_607.png"
 ALT="$F$"> has a <B>primitive <IMG
 WIDTH="14" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_17.png"
 ALT="$n$">-th root of unity</B> which will be denoted by <IMG
 WIDTH="13" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_4.png"
 ALT="$a$">.
  A cyclic code is uniquely given by a <B>defining set</B> <IMG
 WIDTH="25" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_715.png"
 ALT="$S_C$"> which is a subset of <IMG
 WIDTH="28" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_716.png"
 ALT="$Z\!\!\! Z_n$"> such that
  <BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
c(x) \in C \ \hbox{ if } \ c(a ^i )=0 \ \hbox{ for all } \ i \in S_C.
\end{displaymath}
 -->

<IMG
 WIDTH="264" HEIGHT="28" BORDER="0"
 SRC="sing_717.png"
 ALT="\begin{displaymath}
c(x) \in C \ \hbox{ if } \ c(a ^i )=0 \ \hbox{ for all } \ i \in S_C.
\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
A cyclic code has several defining sets.|;

$l2h_cache_key = q/${\tt Ws}(w_1, \ldots, w_n),\; w_1$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 ${\tt Ws}(w_1, \ldots, w_n),\; w_1$
 -->
<IMG
 WIDTH="137" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_467.png"
 ALT="${\tt Ws}(w_1, \ldots, w_n),\; w_1$">|;

$l2h_cache_key = q/$X=(x_1,\ldots,x_n)$ and $Y=(Y_1,\ldots,Y_r)$ with $X>Y$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $X=(x_1,\ldots,x_n)$
 -->
<IMG
 WIDTH="122" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_386.png"
 ALT="$X=(x_1,\ldots,x_n)$"> and <!-- MATH
 $Y=(Y_1,\ldots,Y_r)$
 -->
<IMG
 WIDTH="119" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_387.png"
 ALT="$Y=(Y_1,\ldots,Y_r)$"> with <IMG
 WIDTH="53" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_388.png"
 ALT="$X&gt;Y$">|;

$l2h_cache_key = q/  {\bf Complete decoding}: Given $y\in F_q^n$ and a code $C\subseteq F_q^n$, so that $y$ is at distance $d(y,C)$ from
  the code, find $c\in C: d(y,c)=d(y,C)$./;
$l2h_cache{$l2h_cache_key} = q|  <B>Complete decoding</B>: Given <IMG
 WIDTH="53" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_718.png"
 ALT="$y\in F_q^n$"> and a code <!-- MATH
 $C\subseteq F_q^n$
 -->
<IMG
 WIDTH="59" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_719.png"
 ALT="$C\subseteq F_q^n$">, so that <IMG
 WIDTH="12" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_39.png"
 ALT="$y$"> is at distance <IMG
 WIDTH="53" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_720.png"
 ALT="$d(y,C)$"> from
  the code, find <!-- MATH
 $c\in C: d(y,c)=d(y,C)$
 -->
<IMG
 WIDTH="169" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_721.png"
 ALT="$c\in C: d(y,c)=d(y,C)$">.|;

$l2h_cache_key = q/$Z\/p$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_22.png"
 ALT="$Z/p$">|;

$l2h_cache_key = q/$h_1$ or $h_2$,/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="20" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_154.png"
 ALT="$h_1$"> or <IMG
 WIDTH="20" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_155.png"
 ALT="$h_2$">,|;

$l2h_cache_key = q/  $f_1, f_2,\ldots,f_k$/;
$l2h_cache{$l2h_cache_key} = q|  <!-- MATH
 $f_1, f_2,\ldots,f_k$
 -->
<IMG
 WIDTH="92" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_106.png"
 ALT="$f_1, f_2,\ldots,f_k$">|;

$l2h_cache_key = q/$A= k_1 \langle x_1, \ldots ,x_n \mid$
$\{ x_j x_i=c_{ij} \cdot x_i x_j + d_{ij}\}, 1 \leq i <j \leq n \rangle$,
and
$B= k_2 \langle y_1, \ldots ,y_m \mid$
$\{ y_j y_i=q_{ij} \cdot y_i y_j + r_{ij}\}, 1 \leq i <j \leq m \rangle$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $A= k_1 \langle x_1, \ldots ,x_n \mid$
 -->
<IMG
 WIDTH="137" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_193.png"
 ALT="$A= k_1 \langle x_1, \ldots ,x_n \mid$">
<!-- MATH
 $\{ x_j x_i=c_{ij} \cdot x_i x_j + d_{ij}\}, 1 \leq i <j \leq n \rangle$
 -->
<IMG
 WIDTH="278" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_194.png"
 ALT="$\{ x_j x_i=c_{ij} \cdot x_i x_j + d_{ij}\}, 1 \leq i &lt;j \leq n \rangle$">,
and
<!-- MATH
 $B= k_2 \langle y_1, \ldots ,y_m \mid$
 -->
<IMG
 WIDTH="139" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_195.png"
 ALT="$B= k_2 \langle y_1, \ldots ,y_m \mid$">
<!-- MATH
 $\{ y_j y_i=q_{ij} \cdot y_i y_j + r_{ij}\}, 1 \leq i <j \leq m \rangle$
 -->
<IMG
 WIDTH="276" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_196.png"
 ALT="$\{ y_j y_i=q_{ij} \cdot y_i y_j + r_{ij}\}, 1 \leq i &lt;j \leq m \rangle$">|;

$l2h_cache_key = q/For a standard basis $G$ of $I$ the following holds:
$f \in I$ if and only if $\hbox{NF}(f,G) = 0$./;
$l2h_cache{$l2h_cache_key} = q|For a standard basis <IMG
 WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_186.png"
 ALT="$G$"> of <IMG
 WIDTH="12" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_248.png"
 ALT="$I$"> the following holds:
<IMG
 WIDTH="41" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_271.png"
 ALT="$f \in I$"> if and only if <!-- MATH
 $\hbox{NF}(f,G) = 0$
 -->
<IMG
 WIDTH="96" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_533.png"
 ALT="$\hbox{NF}(f,G) = 0$">.|;

$l2h_cache_key = q/$R=K[x,y]_m\/(x^2-y^3)$, $m=(x,y)$./;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $R=K[x,y]_m/(x^2-y^3)$
 -->
<IMG
 WIDTH="169" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_365.png"
 ALT="$R=K[x,y]_m/(x^2-y^3)$">, <IMG
 WIDTH="76" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_366.png"
 ALT="$m=(x,y)$">.|;

$l2h_cache_key = q/$M_i={\tt module}(A_i),\;i = 1,\ldots,k$./;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $M_i={\tt module}(A_i),\;i = 1,\ldots,k$
 -->
<IMG
 WIDTH="216" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_169.png"
 ALT="$M_i={\tt module}(A_i),\;i = 1,\ldots,k$">.|;

$l2h_cache_key = q/$M_1, \ldots, M_n$ the rows of $M$./;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $M_1, \ldots, M_n$
 -->
<IMG
 WIDTH="86" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_488.png"
 ALT="$M_1, \ldots, M_n$"> the rows of <IMG
 WIDTH="21" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_13.png"
 ALT="$M$">.|;

$l2h_cache_key = q/$\{x^{a_1}_1 x^{a_2}_2 \dots x^{a_n}_n\}$./;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $\{x^{a_1}_1 x^{a_2}_2 \dots x^{a_n}_n\}$
 -->
<IMG
 WIDTH="114" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_230.png"
 ALT="$\{x^{a_1}_1 x^{a_2}_2 \dots x^{a_n}_n\}$">.|;

$l2h_cache_key = q/$(h1+h2)\/h1 \cong h2\/(h1 \cap h2)$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $(h1+h2)/h1 \cong h2/(h1 \cap h2)$
 -->
<IMG
 WIDTH="206" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_73.png"
 ALT="$(h1+h2)/h1 \cong h2/(h1 \cap h2)$">|;

$l2h_cache_key = q/  The {\bf error-locator polynomial} is defined by
  $$
    \sigma(Z)=\prod_{l=1}^{t}(Z-z_l).
  $$
  If this product is expanded,
  $$
    \sigma(Z)=Z^t+\sigma_1Z^{t-1}+\dots+\sigma_{t-1}Z+\sigma_t,
  $$
  then the coefficients $\sigma_i$ are the {\bf elementary symmetric functions} in
  the error locations $z_1,\dots,z_t$
  $$
    \sigma_i=(-1)^i\sum_{1\le j_1<j_2<\dots<j_i\le t}z_{j_1}z_{j_2}\dots z_{j_i}, \ 1\le i\le t.
  $$/;
$l2h_cache{$l2h_cache_key} = q|  The <B>error-locator polynomial</B> is defined by
  <BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
\sigma(Z)=\prod_{l=1}^{t}(Z-z_l).
\end{displaymath}
 -->

<IMG
 WIDTH="134" HEIGHT="56" BORDER="0"
 SRC="sing_788.png"
 ALT="\begin{displaymath}
\sigma(Z)=\prod_{l=1}^{t}(Z-z_l).
\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
If this product is expanded,
  <BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
\sigma(Z)=Z^t+\sigma_1Z^{t-1}+\dots+\sigma_{t-1}Z+\sigma_t,
\end{displaymath}
 -->

<IMG
 WIDTH="281" HEIGHT="28" BORDER="0"
 SRC="sing_789.png"
 ALT="\begin{displaymath}
\sigma(Z)=Z^t+\sigma_1Z^{t-1}+\dots+\sigma_{t-1}Z+\sigma_t,
\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
then the coefficients <IMG
 WIDTH="18" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_790.png"
 ALT="$\sigma_i$"> are the <B>elementary symmetric functions</B> in
  the error locations <IMG
 WIDTH="67" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_742.png"
 ALT="$z_1,\dots,z_t$">
  <BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
\sigma_i=(-1)^i\sum_{1\le j_1<j_2<\dots<j_i\le t}z_{j_1}z_{j_2}\dots z_{j_i}, \ 1\le i\le t.
\end{displaymath}
 -->

<IMG
 WIDTH="343" HEIGHT="47" BORDER="0"
 SRC="sing_791.png"
 ALT="\begin{displaymath}
\sigma_i=(-1)^i\sum_{1\le j_1&lt;j_2&lt;\dots&lt;j_i\le t}z_{j_1}z_{j_2}\dots z_{j_i}, \ 1\le i\le t.
\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>|;

$l2h_cache_key = q/$x^\alpha < x^\beta  \Leftrightarrow  \exists\; 1 \le i \le n :
\alpha_1 = \beta_1, \ldots, \alpha_{i-1} = \beta_{i-1}, \alpha_i <
\beta_i$./;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $x^\alpha < x^\beta  \Leftrightarrow  \exists\; 1 \le i \le n :
\alpha_1 = \beta_1, \ldots, \alpha_{i-1} = \beta_{i-1}, \alpha_i <
\beta_i$
 -->
<IMG
 WIDTH="410" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_450.png"
 ALT="$x^\alpha &lt; x^\beta \Leftrightarrow \exists\; 1 \le i \le n :
\alpha_1 = \beta_1, \ldots, \alpha_{i-1} = \beta_{i-1}, \alpha_i &lt;
\beta_i$">.|;

$l2h_cache_key = q/$<_m = (<,c)$ denotes the module ordering (giving priority to the coefficients):/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="84" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_481.png"
 ALT="$&lt;_m = (&lt;,c)$"> denotes the module ordering (giving priority to the coefficients):|;

$l2h_cache_key = q/$\hbox{Loc}_{(x)}K[x_1,\ldots,x_n]$./;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $\hbox{Loc}_{(x)}K[x_1,\ldots,x_n]$
 -->
<IMG
 WIDTH="140" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_393.png"
 ALT="$\hbox{Loc}_{(x)}K[x_1,\ldots,x_n]$">.|;

$l2h_cache_key = q/  Given a $q$-ary $[n,k]$ code $C$ with a generator matrix $G=(g_{ij})$:/;
$l2h_cache{$l2h_cache_key} = q|  Given a <IMG
 WIDTH="12" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_288.png"
 ALT="$q$">-ary <IMG
 WIDTH="38" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_729.png"
 ALT="$[n,k]$"> code <IMG
 WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_77.png"
 ALT="$C$"> with a generator matrix <IMG
 WIDTH="69" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_817.png"
 ALT="$G=(g_{ij})$">:|;

$l2h_cache_key = q/$|a|,|b|<=\sqrt{(N-1)\/2}$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $\|a\|,\|b\|<=\sqrt{(N-1)/2}$
 -->
<IMG
 WIDTH="164" HEIGHT="37" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_124.png"
 ALT="$\vert a\vert,\vert b\vert&lt;=\sqrt{(N-1)/2}$">|;

$l2h_cache_key = q/  Let $G$ be the reduced Gr\"obner basis for $Id_C$ with respect to an elimination order $X_{11}<\dots<X_{1s}<E_1$.
  Then we may solve for the error locations and values by applying elimination theory to the polynomials in $G$./;
$l2h_cache{$l2h_cache_key} = q|  Let <IMG
 WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_186.png"
 ALT="$G$"> be the reduced Gr&#246;bner basis for <IMG
 WIDTH="31" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_835.png"
 ALT="$Id_C$"> with respect to an elimination order <!-- MATH
 $X_{11}<\dots<X_{1s}<E_1$
 -->
<IMG
 WIDTH="158" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_839.png"
 ALT="$X_{11}&lt;\dots&lt;X_{1s}&lt;E_1$">.
  Then we may solve for the error locations and values by applying elimination theory to the polynomials in <IMG
 WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_186.png"
 ALT="$G$">.|;

$l2h_cache_key = q/$\hbox{Ext}^1$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="37" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_358.png"
 ALT="$\hbox{Ext}^1$">|;

$l2h_cache_key = q/The entry d of the intmat at place (i, j) is the minimal number of
generators in degree i+j of the j-th syzygy module (= module of
relations) of $R^n\/M$ (the 0th (resp.\ 1st) syzygy module of $R^n\/M$ is
$R^n$ (resp.\ $M$))./;
$l2h_cache{$l2h_cache_key} = q|The entry d of the intmat at place (i, j) is the minimal number of
generators in degree i+j of the j-th syzygy module (= module of
relations) of <IMG
 WIDTH="49" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_91.png"
 ALT="$R^n/M$"> (the 0th (resp. 1st) syzygy module of <IMG
 WIDTH="49" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_91.png"
 ALT="$R^n/M$"> is
<IMG
 WIDTH="25" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_89.png"
 ALT="$R^n$"> (resp. <IMG
 WIDTH="21" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_13.png"
 ALT="$M$">)).|;

$l2h_cache_key = q/$\hbox{Ws}(w_1, \ldots, w_n)$)/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $\hbox{Ws}(w_1, \ldots, w_n)$
 -->
<IMG
 WIDTH="113" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_436.png"
 ALT="$\hbox{Ws}(w_1, \ldots, w_n)$">)|;

$l2h_cache_key = q/$R[x,y,z]$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="65" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_50.png"
 ALT="$R[x,y,z]$">|;

$l2h_cache_key = q/$w_1$, $\ldots$, $w_n$ of $x_1$, $\ldots$, $x_n$./;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="23" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_437.png"
 ALT="$w_1$">, <IMG
 WIDTH="23" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_438.png"
 ALT="$\ldots$">, <IMG
 WIDTH="24" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_439.png"
 ALT="$w_n$"> of <IMG
 WIDTH="20" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_298.png"
 ALT="$x_1$">, <IMG
 WIDTH="23" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_438.png"
 ALT="$\ldots$">, <IMG
 WIDTH="22" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_299.png"
 ALT="$x_n$">.|;

$l2h_cache_key = q/  Let $B$ be an MDS matrix with structure constants $\mu^{ij}_l$.  Let $H$ be a check matrix of the code $C$ such that $H=AB$ as above.
  Let ${\bf r}={\bf c}+{\bf e}$ be a received word with ${\bf c} \in C$ the codeword sent
  and ${\bf e}$ the error vector. Suppose that  $wt({\bf e})\ne 0$ and $wt({\bf e})\le\lfloor (d(C)-1)\/2\rfloor$.
  Let $t$ be the smallest positive integer such that $J(t,{\bf r})$ has a solution $({\bf u,v})$ over the algebraic closure of
  $F_q$. Then/;
$l2h_cache{$l2h_cache_key} = q|  Let <IMG
 WIDTH="17" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_192.png"
 ALT="$B$"> be an MDS matrix with structure constants <IMG
 WIDTH="25" HEIGHT="38" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_866.png"
 ALT="$\mu^{ij}_l$">.  Let <IMG
 WIDTH="19" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_703.png"
 ALT="$H$"> be a check matrix of the code <IMG
 WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_77.png"
 ALT="$C$"> such that <IMG
 WIDTH="65" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_860.png"
 ALT="$H=AB$"> as above.
  Let <!-- MATH
 ${\bf r}={\bf c}+{\bf e}$
 -->
<IMG
 WIDTH="69" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_731.png"
 ALT="${\bf r}={\bf c}+{\bf e}$"> be a received word with <IMG
 WIDTH="44" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_732.png"
 ALT="${\bf c}\in C$"> the codeword sent
  and <IMG
 WIDTH="13" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_733.png"
 ALT="${\bf e}$"> the error vector. Suppose that  <!-- MATH
 $wt({\bf e})\ne 0$
 -->
<IMG
 WIDTH="72" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_877.png"
 ALT="$wt({\bf e})\ne 0$"> and <!-- MATH
 $wt({\bf e})\le\lfloor (d(C)-1)/2\rfloor$
 -->
<IMG
 WIDTH="167" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_878.png"
 ALT="$wt({\bf e})\le\lfloor (d(C)-1)/2\rfloor$">.
  Let <IMG
 WIDTH="10" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_400.png"
 ALT="$t$"> be the smallest positive integer such that <IMG
 WIDTH="47" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_876.png"
 ALT="$J(t,{\bf r})$"> has a solution <IMG
 WIDTH="44" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_879.png"
 ALT="$({\bf u,v})$"> over the algebraic closure of
  <IMG
 WIDTH="21" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_697.png"
 ALT="$F_q$">. Then|;

$l2h_cache_key = q/ $C=\{c_{ij}, i<j\}$, with nonzero entries $c_{ij}$ of type number ($c_{ij}$ for $i\geq j$ will be ignored)./;
$l2h_cache{$l2h_cache_key} = q| <!-- MATH
 $C=\{c_{ij}, i<j\}$
 -->
<IMG
 WIDTH="113" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_232.png"
 ALT="$C=\{c_{ij}, i&lt;j\}$">, with nonzero entries <IMG
 WIDTH="22" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_207.png"
 ALT="$c_{ij}$"> of type number (<IMG
 WIDTH="22" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_207.png"
 ALT="$c_{ij}$"> for <IMG
 WIDTH="38" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_233.png"
 ALT="$i\geq j$"> will be ignored).|;

$l2h_cache_key = q/$n \times k$,/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="42" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_190.png"
 ALT="$n \times k$">,|;

$l2h_cache_key = q/$\hbox{Ext}^1$, $\hbox{Ext}^2$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="37" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_358.png"
 ALT="$\hbox{Ext}^1$">, <IMG
 WIDTH="37" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_359.png"
 ALT="$\hbox{Ext}^2$">|;

$l2h_cache_key = q/  Let $I=\langle g_1,\dots,g_m \rangle \subseteq F_q[X_1,\dots,X_s]$ be an
  ideal. Define
  $$
    I_q:=I+\langle X_1^q-X_1,\dots,X_s^q-X_s\rangle .
  $$
  So $I_q$ is a zero-dimensional ideal. Define also $V(I_q)=:\{P_1,\dots,P_n\}$.
  Every $q$-ary linear code $C$ with parameters $[n,k]$ can be seen as an
  {\bf affine variety code} $C(I,L)$, that is, the image of a vector space $L$ of the {\bf evaluation map}
  $$
  \phi :R\to F_q ^n
  $$
  $$
  \bar{f}\mapsto(f(P_1),\dots,f(P_n)),
  $$
  where $R:=F_q[U_1,\dots,U_s]\/I_q$, $L$ is a vector subspace of $R$ and $\bar{f}$ the coset of $f$ in $F_q[U_1,\dots,U_s]$ modulo $I_q$./;
$l2h_cache{$l2h_cache_key} = q|  Let <!-- MATH
 $I=\langle g_1,\dots,g_m \rangle \subseteq F_q[X_1,\dots,X_s]$
 -->
<IMG
 WIDTH="239" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_806.png"
 ALT="$I=\langle g_1,\dots,g_m \rangle \subseteq F_q[X_1,\dots,X_s]$"> be an
  ideal. Define
  <BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
I_q:=I+\langle X_1^q-X_1,\dots,X_s^q-X_s\rangle .
\end{displaymath}
 -->

<IMG
 WIDTH="240" HEIGHT="29" BORDER="0"
 SRC="sing_807.png"
 ALT="\begin{displaymath}
I_q:=I+\langle X_1^q-X_1,\dots,X_s^q-X_s\rangle .
\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
So <IMG
 WIDTH="18" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_808.png"
 ALT="$I_q$"> is a zero-dimensional ideal. Define also <!-- MATH
 $V(I_q)=:\{P_1,\dots,P_n\}$
 -->
<IMG
 WIDTH="156" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_809.png"
 ALT="$V(I_q)=:\{P_1,\dots,P_n\}$">.
  Every <IMG
 WIDTH="12" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_288.png"
 ALT="$q$">-ary linear code <IMG
 WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_77.png"
 ALT="$C$"> with parameters <IMG
 WIDTH="38" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_729.png"
 ALT="$[n,k]$"> can be seen as an
  <B>affine variety code</B> <IMG
 WIDTH="55" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_810.png"
 ALT="$C(I,L)$">, that is, the image of a vector space <IMG
 WIDTH="15" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_811.png"
 ALT="$L$"> of the <B>evaluation map</B>
  <BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
\phi :R\to F_q ^n
\end{displaymath}
 -->

<IMG
 WIDTH="81" HEIGHT="30" BORDER="0"
 SRC="sing_812.png"
 ALT="\begin{displaymath}
\phi :R\to F_q ^n
\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
  <BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
\bar{f}\mapsto(f(P_1),\dots,f(P_n)),
\end{displaymath}
 -->

<IMG
 WIDTH="165" HEIGHT="28" BORDER="0"
 SRC="sing_813.png"
 ALT="\begin{displaymath}
\bar{f}\mapsto(f(P_1),\dots,f(P_n)),
\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
where <!-- MATH
 $R:=F_q[U_1,\dots,U_s]/I_q$
 -->
<IMG
 WIDTH="161" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_814.png"
 ALT="$R:=F_q[U_1,\dots,U_s]/I_q$">, <IMG
 WIDTH="15" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_811.png"
 ALT="$L$"> is a vector subspace of <IMG
 WIDTH="16" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_51.png"
 ALT="$R$"> and <IMG
 WIDTH="14" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_815.png"
 ALT="$\bar{f}$"> the coset of <IMG
 WIDTH="14" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_262.png"
 ALT="$f$"> in <!-- MATH
 $F_q[U_1,\dots,U_s]$
 -->
<IMG
 WIDTH="101" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_816.png"
 ALT="$F_q[U_1,\dots,U_s]$"> modulo <IMG
 WIDTH="18" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_808.png"
 ALT="$I_q$">.|;

$l2h_cache_key = q/Loc $K[x]$ = $K[x]_{(x)}$,/;
$l2h_cache{$l2h_cache_key} = q|Loc <IMG
 WIDTH="37" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_448.png"
 ALT="$K[x]$"> = <IMG
 WIDTH="55" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_461.png"
 ALT="$K[x]_{(x)}$">,|;

$l2h_cache_key = q/ be the matrix of size $l \times k$ (resp.\ $l \times m$), having the
generators of $h_1$ (resp.\ $h_2$)/;
$l2h_cache{$l2h_cache_key} = q| be the matrix of size <IMG
 WIDTH="37" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_159.png"
 ALT="$l \times k$"> (resp. <IMG
 WIDTH="43" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_160.png"
 ALT="$l \times m$">), having the
generators of <IMG
 WIDTH="20" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_154.png"
 ALT="$h_1$"> (resp. <IMG
 WIDTH="20" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_155.png"
 ALT="$h_2$">)|;

$l2h_cache_key = q/${\tt L[i]}\neq 0$ for $i \le p$,/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 ${\tt L[i]}\neq 0$
 -->
<IMG
 WIDTH="59" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_166.png"
 ALT="${\tt L[i]}\neq 0$"> for <IMG
 WIDTH="39" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_167.png"
 ALT="$i \le p$">,|;

$l2h_cache_key = q/$p,s \in X$, such that $w = p \cdot v \cdot s$./;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="61" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_313.png"
 ALT="$p,s \in X$">, such that <!-- MATH
 $w = p \cdot v \cdot s$
 -->
<IMG
 WIDTH="84" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_314.png"
 ALT="$w = p \cdot v \cdot s$">.|;

$l2h_cache_key = q/ ($=\hbox{Ext}^2(K,K)$)/;
$l2h_cache{$l2h_cache_key} = q| (<!-- MATH
 $=\hbox{Ext}^2(K,K)$
 -->
<IMG
 WIDTH="101" HEIGHT="36" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_363.png"
 ALT="$=\hbox{Ext}^2(K,K)$">)|;

$l2h_cache_key = q/${\tt a}(w_1, \ldots, w_n),\; $/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 ${\tt a}(w_1, \ldots, w_n),\;$
 -->
<IMG
 WIDTH="108" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_518.png"
 ALT="${\tt a}(w_1, \ldots, w_n),\; $">|;

$l2h_cache_key = q/$T^1$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="23" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_407.png"
 ALT="$T^1$">|;

$l2h_cache_key = q/$k[X,Y]$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="55" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_94.png"
 ALT="$k[X,Y]$">|;

$l2h_cache_key = q/$1 \times 1$-minors/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="40" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_9.png"
 ALT="$1 \times 1$">-minors|;

$l2h_cache_key = q/$n\times n$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="43" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_231.png"
 ALT="$n\times n$">|;

$l2h_cache_key = q/  {\bf Bounded up to half the minimum distance}: With the additional assumption $d({\bf y},C)\le(d(C)-1)\/2$, a codeword with the above property
  is unique./;
$l2h_cache{$l2h_cache_key} = q|  <B>Bounded up to half the minimum distance</B>: With the additional assumption <!-- MATH
 $d({\bf y},C)\le(d(C)-1)/2$
 -->
<IMG
 WIDTH="164" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_722.png"
 ALT="$d({\bf y},C)\le(d(C)-1)/2$">, a codeword with the above property
  is unique.|;

$l2h_cache_key = q/$ i_{1,1} $/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="27" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_71.png"
 ALT="$i_{1,1}$">|;

$l2h_cache_key = q/    \phantom{ $x^\alpha < x^\beta \Leftrightarrow $} $\deg(x^\alpha) =
    \deg(x^\beta)$ and $\exists\ 1 \le i \le n:\alpha_1 = \beta_1,
    \ldots, \alpha_{i-1} = \beta_{i-1}, \alpha_i < \beta_i.$/;
$l2h_cache{$l2h_cache_key} = q|     <!-- MATH
 $\deg(x^\alpha) =
    \deg(x^\beta)$
 -->
<IMG
 WIDTH="134" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_454.png"
 ALT="$ \deg(x^\alpha) =
\deg(x^\beta)$"> and <!-- MATH
 $\exists\ 1 \le i \le n:\alpha_1 = \beta_1,
    \ldots, \alpha_{i-1} = \beta_{i-1}, \alpha_i < \beta_i.$
 -->
<IMG
 WIDTH="333" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_456.png"
 ALT="$\exists\ 1 \le i \le n:\alpha_1 = \beta_1,
\ldots, \alpha_{i-1} = \beta_{i-1}, \alpha_i &lt; \beta_i.$">|;

$l2h_cache_key = q/to $n\/2$ Groebner basis
computations. It needs no auxiliary variables, but a supplementary
precondition; namely, the existence of a vector without zero components
in the kernel of $A$.

The main idea comes from the following observation:

Let $B$ be an integer matrix, $u_1,\ldots,u_r$ a lattice basis of the
integer kernel of $B$. Assume that all components of $u_1$ are
positive. Then
$$ I_B=<x^{u_i^+}-x^{u_i^-}|i=1,\ldots,r>, $$
i.e., the ideal on the right is already saturated w.r.t. all variables.

The algorithm starts by finding a lattice basis $v_1,\ldots,v_r$ of the
kernel of $A$ such that $v_1$ has no zero component. Let
$\{i_1,\ldots,i_l\}$ be the set of indices $i$ with
$v_{1,i}<0$. Multiplying the components $i_1,\ldots,i_l$ of
$v_1,\ldots,v_r$ and the columns $i_1,\ldots,i_l$ of $A$ by $-1$ yields
a matrix $B$ and a lattice basis $u_1,\ldots,u_r$ of the kernel of $B$
that fulfill the assumption of the observation above. It is then possible
to compute a generating set of $I_A$ by applying the following
``variable flip'' successively to $i=i_1,\ldots,i_l$:

Let $>$ be an elimination ordering for $x_i$. Let $A_i$ be the matrix
obtained by multiplying the $i$-th column of $A$ by $-1$. Let
$$\{x_i^{r_j} x^{a_j} - x^{b_j} | j\in J \}$$
be a Groebner basis of $I_{A_i}$ w.r.t. $>$ (where $x_i$ is neither
involved in $x^{a_j}$ nor in $x^{b_j}$). Then
$$\{x^{a_j} - x_i^{r_j} x^{b_j} | j\in J \}$$
is a generating set for $I_A$./;
$l2h_cache{$l2h_cache_key} = q|to <IMG
 WIDTH="30" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_669.png"
 ALT="$n/2$"> Groebner basis
computations. It needs no auxiliary variables, but a supplementary
precondition; namely, the existence of a vector without zero components
in the kernel of <IMG
 WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_187.png"
 ALT="$A$">.

<P>
The main idea comes from the following observation:

<P>
Let <IMG
 WIDTH="17" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_192.png"
 ALT="$B$"> be an integer matrix, <!-- MATH
 $u_1,\ldots,u_r$
 -->
<IMG
 WIDTH="72" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_670.png"
 ALT="$u_1,\ldots,u_r$"> a lattice basis of the
integer kernel of <IMG
 WIDTH="17" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_192.png"
 ALT="$B$">. Assume that all components of <IMG
 WIDTH="20" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_671.png"
 ALT="$u_1$"> are
positive. Then
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
I_B=<x^{u_i^+}-x^{u_i^-}\|i=1,\ldots,r>,
\end{displaymath}
 -->

<IMG
 WIDTH="227" HEIGHT="28" BORDER="0"
 SRC="sing_672.png"
 ALT="\begin{displaymath}I_B=&lt;x^{u_i^+}-x^{u_i^-}\vert i=1,\ldots,r&gt;, \end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
i.e., the ideal on the right is already saturated w.r.t. all variables.

<P>
The algorithm starts by finding a lattice basis <!-- MATH
 $v_1,\ldots,v_r$
 -->
<IMG
 WIDTH="69" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_485.png"
 ALT="$v_1,
\ldots, v_r$"> of the
kernel of <IMG
 WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_187.png"
 ALT="$A$"> such that <IMG
 WIDTH="19" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_673.png"
 ALT="$v_1$"> has no zero component. Let
<!-- MATH
 $\{i_1,\ldots,i_l\}$
 -->
<IMG
 WIDTH="78" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_674.png"
 ALT="$\{i_1,\ldots,i_l\}$"> be the set of indices <IMG
 WIDTH="10" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_55.png"
 ALT="$i$"> with
<IMG
 WIDTH="56" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_675.png"
 ALT="$v_{1,i}&lt;0$">. Multiplying the components <!-- MATH
 $i_1,\ldots,i_l$
 -->
<IMG
 WIDTH="63" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_676.png"
 ALT="$i_1,\ldots,i_l$"> of
<!-- MATH
 $v_1,\ldots,v_r$
 -->
<IMG
 WIDTH="69" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_485.png"
 ALT="$v_1,
\ldots, v_r$"> and the columns <!-- MATH
 $i_1,\ldots,i_l$
 -->
<IMG
 WIDTH="63" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_676.png"
 ALT="$i_1,\ldots,i_l$"> of <IMG
 WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_187.png"
 ALT="$A$"> by <IMG
 WIDTH="24" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_677.png"
 ALT="$-1$"> yields
a matrix <IMG
 WIDTH="17" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_192.png"
 ALT="$B$"> and a lattice basis <!-- MATH
 $u_1,\ldots,u_r$
 -->
<IMG
 WIDTH="72" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_670.png"
 ALT="$u_1,\ldots,u_r$"> of the kernel of <IMG
 WIDTH="17" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_192.png"
 ALT="$B$">
that fulfill the assumption of the observation above. It is then possible
to compute a generating set of <IMG
 WIDTH="22" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_649.png"
 ALT="$I_A$"> by applying the following
``variable flip'' successively to <!-- MATH
 $i=i_1,\ldots,i_l$
 -->
<IMG
 WIDTH="89" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_678.png"
 ALT="$i=i_1,\ldots,i_l$">:

<P>
Let <IMG
 WIDTH="17" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_329.png"
 ALT="$&gt;$"> be an elimination ordering for <IMG
 WIDTH="18" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_125.png"
 ALT="$x_i$">. Let <IMG
 WIDTH="21" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_679.png"
 ALT="$A_i$"> be the matrix
obtained by multiplying the <IMG
 WIDTH="10" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_55.png"
 ALT="$i$">-th column of <IMG
 WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_187.png"
 ALT="$A$"> by <IMG
 WIDTH="24" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_677.png"
 ALT="$-1$">. Let
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
\{x_i^{r_j} x^{a_j} - x^{b_j} \| j\in J \}
\end{displaymath}
 -->

<IMG
 WIDTH="141" HEIGHT="28" BORDER="0"
 SRC="sing_680.png"
 ALT="\begin{displaymath}\{x_i^{r_j} x^{a_j} - x^{b_j} \vert j\in J \}\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
be a Groebner basis of <IMG
 WIDTH="27" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_681.png"
 ALT="$I_{A_i}$"> w.r.t. <IMG
 WIDTH="17" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_329.png"
 ALT="$&gt;$"> (where <IMG
 WIDTH="18" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_125.png"
 ALT="$x_i$"> is neither
involved in <IMG
 WIDTH="27" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_682.png"
 ALT="$x^{a_j}$"> nor in <IMG
 WIDTH="26" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_683.png"
 ALT="$x^{b_j}$">). Then
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
\{x^{a_j} - x_i^{r_j} x^{b_j} \| j\in J \}
\end{displaymath}
 -->

<IMG
 WIDTH="141" HEIGHT="28" BORDER="0"
 SRC="sing_684.png"
 ALT="\begin{displaymath}\{x^{a_j} - x_i^{r_j} x^{b_j} \vert j\in J \}\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
is a generating set for <IMG
 WIDTH="22" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_649.png"
 ALT="$I_A$">.|;

$l2h_cache_key = q/  Let $F_q$ be a field with $q$ elements. A \emph{linear code} $C$ is a linear subspace of $F_q^n$ endowed with the
  {\bf Hamming metric}./;
$l2h_cache{$l2h_cache_key} = q|  Let <IMG
 WIDTH="21" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_697.png"
 ALT="$F_q$"> be a field with <IMG
 WIDTH="12" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_288.png"
 ALT="$q$"> elements. A <I>linear code</I> <IMG
 WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_77.png"
 ALT="$C$"> is a linear subspace of <IMG
 WIDTH="25" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_698.png"
 ALT="$F_q^n$"> endowed with the
  <B>Hamming metric</B>.|;

$l2h_cache_key = q/$R^r \buildrel{A}\over{\longrightarrow}
R^m\longrightarrow
R^m\/\hbox{Im}(B) \;.$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $R^r \buildrel{A}\over{\longrightarrow}
R^m\longrightarrow
R^m/\hbox{Im}(B) \;.$
 -->
<IMG
 WIDTH="202" HEIGHT="44" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_378.png"
 ALT="$R^r \buildrel{A}\over{\longrightarrow}
R^m\longrightarrow
R^m/\hbox{Im}(B) \;.$">|;

$l2h_cache_key = q/$A\otimes_{\bf{K} } B$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $A\otimes_{\bf {K} } B$
 -->
<IMG
 WIDTH="60" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_201.png"
 ALT="$A\otimes_{\bf {K} } B$">|;

$l2h_cache_key = q/$(n \times n)$-matrix/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="55" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_372.png"
 ALT="$(n \times n)$">-matrix|;

$l2h_cache_key = q/$A^n$./;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="25" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_188.png"
 ALT="$A^n$">.|;

$l2h_cache_key = q/$f_i*gen(i)$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="75" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_426.png"
 ALT="$f_i*gen(i)$">|;

$l2h_cache_key = q/$c_{ij}$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="22" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_207.png"
 ALT="$c_{ij}$">|;

$l2h_cache_key = q/$V(i)$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="35" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_342.png"
 ALT="$V(i)$">|;

$l2h_cache_key = q/\quad \quad $x^\alpha e_i <_m x^\beta e_j \Leftrightarrow x^\alpha <
x^\beta$ or ($x^\alpha = x^\beta $ and $ i > j$)./;
$l2h_cache{$l2h_cache_key} = q|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<!-- MATH
 $x^\alpha e_i <_m x^\beta e_j \Leftrightarrow x^\alpha <
x^\beta$
 -->
<IMG
 WIDTH="182" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_475.png"
 ALT="$x^\alpha e_i &lt;_m x^\beta e_j \Leftrightarrow x^\alpha &lt;
x^\beta$"> or (<!-- MATH
 $x^\alpha = x^\beta$
 -->
<IMG
 WIDTH="61" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_476.png"
 ALT="$x^\alpha = x^\beta $"> and <IMG
 WIDTH="38" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_482.png"
 ALT="$ i &gt; j$">).|;

$l2h_cache_key = q/ Let $K$ be a field, and let a $K$-algebra $A$ be given in terms of generators subject to the following relations:

$A= K \langle x_1, \ldots ,x_n \mid \{ x_j x_i=c_{ij} \cdot x_i x_j + d_{ij}\}, 1 \leq i <j \leq n \rangle$,
where $c_{ij} \in K^{*}, d_{ij} \in K[x_1, \ldots, x_n]$.

 $A$ is called \textbf{a $G$--algebra}, if the following conditions hold:/;
$l2h_cache{$l2h_cache_key} = q| Let <IMG
 WIDTH="19" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_48.png"
 ALT="$K$"> be a field, and let a <IMG
 WIDTH="19" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_48.png"
 ALT="$K$">-algebra <IMG
 WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_187.png"
 ALT="$A$"> be given in terms of generators subject to the following relations:

<P>
<!-- MATH
 $A= K \langle x_1, \ldots ,x_n \mid \{ x_j x_i=c_{ij} \cdot x_i x_j + d_{ij}\}, 1 \leq i <j \leq n \rangle$
 -->
<IMG
 WIDTH="414" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_221.png"
 ALT="$A= K \langle x_1, \ldots ,x_n \mid \{ x_j x_i=c_{ij} \cdot x_i x_j + d_{ij}\}, 1 \leq i &lt;j \leq n \rangle$">,
where <!-- MATH
 $c_{ij} \in K^{*}, d_{ij} \in K[x_1, \ldots, x_n]$
 -->
<IMG
 WIDTH="202" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_222.png"
 ALT="$c_{ij} \in K^{*}, d_{ij} \in K[x_1, \ldots, x_n]$">.

<P>
<IMG
 WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_187.png"
 ALT="$A$"> is called <B>a <IMG
 WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_186.png"
 ALT="$G$">-algebra</B>, if the following conditions hold:|;

$l2h_cache_key = q/ Let $K$ be a field, and let a $K$-algebra $A$ be generated by
variables $x_1, \ldots ,x_n$ subject to some relations.
We call $A$ an algebra with {\bf PBW basis} (Poincar\'e-Birkhoff-Witt basis), if a $K$--basis of
$A$ is Mon$(x_1,\dots,x_n)=\{x^{a_1}_1 x^{a_2}_2 \dots x^{a_n}_n \mid a_i \in N \cup \{0\} \}$,
where a power-product $x^{a_1}_1 x^{a_2}_2 \dots x^{a_n}_n$ (in this particular order) is called
{\bf a monomial}. For example, $x_1 x_2$ is a monomial, while $x_2 x_1$ is, in general, not
a monomial./;
$l2h_cache{$l2h_cache_key} = q| Let <IMG
 WIDTH="19" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_48.png"
 ALT="$K$"> be a field, and let a <IMG
 WIDTH="19" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_48.png"
 ALT="$K$">-algebra <IMG
 WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_187.png"
 ALT="$A$"> be generated by
variables <!-- MATH
 $x_1, \ldots ,x_n$
 -->
<IMG
 WIDTH="73" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_216.png"
 ALT="$x_1, \ldots ,x_n$"> subject to some relations.
We call <IMG
 WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_187.png"
 ALT="$A$"> an algebra with <B>PBW basis</B> (Poincar&#233;-Birkhoff-Witt basis), if a <IMG
 WIDTH="19" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_48.png"
 ALT="$K$">-basis of
<IMG
 WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_187.png"
 ALT="$A$"> is Mon<!-- MATH
 $(x_1,\dots,x_n)=\{x^{a_1}_1 x^{a_2}_2 \dots x^{a_n}_n \mid a_i \in N \cup \{0\} \}$
 -->
<IMG
 WIDTH="320" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_217.png"
 ALT="$(x_1,\dots,x_n)=\{x^{a_1}_1 x^{a_2}_2 \dots x^{a_n}_n \mid a_i \in N \cup \{0\} \}$">,
where a power-product <!-- MATH
 $x^{a_1}_1 x^{a_2}_2 \dots x^{a_n}_n$
 -->
<IMG
 WIDTH="99" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_218.png"
 ALT="$x^{a_1}_1 x^{a_2}_2 \dots x^{a_n}_n$"> (in this particular order) is called
<B>a monomial</B>. For example, <IMG
 WIDTH="37" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_219.png"
 ALT="$x_1 x_2$"> is a monomial, while <IMG
 WIDTH="37" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_220.png"
 ALT="$x_2 x_1$"> is, in general, not
a monomial.|;

$l2h_cache_key = q/$N = R^n\/M$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="85" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_430.png"
 ALT="$N = R^n/M$">|;

$l2h_cache_key = q/$N$ and $M \subseteq R^n$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="19" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_326.png"
 ALT="$N$"> and <!-- MATH
 $M \subseteq R^n$
 -->
<IMG
 WIDTH="64" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_431.png"
 ALT="$M \subseteq R^n$">|;

$l2h_cache_key = q/$C = A\otimes_{\bf{K} } B$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $C = A\otimes_{\bf {K} } B$
 -->
<IMG
 WIDTH="94" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_191.png"
 ALT="$C = A\otimes_{\bf {K} } B$">|;

$l2h_cache_key = q/{\tt vandermonde(p,v,d)} computes the (unique) polynomial of degree
{\tt d} with prescribed values {\tt v[1],...,v[N]} at the points
{\tt p}$^0,\dots,$ {\tt p}$^{N-1}$, {\tt N=(d+1)}$^n$, $n$ the
number of ring variables.

The returned polynomial is $\sum
c_{\alpha_1\ldots\alpha_n}\cdot x_1^{\alpha_1} \cdot \dots \cdot
x_n^{\alpha_n}$, where the coefficients
$c_{\alpha_1\ldots\alpha_n}$ are the solution of the (transposed)
Vandermonde system of linear equations
$$ \sum_{\alpha_1+\ldots+\alpha_n\leq d} c_{\alpha_1\ldots\alpha_n} \cdot
{\tt p}_1^{(k-1)\alpha_1}\cdot\dots\cdot {\tt p}_n^{(k-1)\alpha_n} =
{\tt v}[k], \quad k=1,\dots,{\tt N}.$$/;
$l2h_cache{$l2h_cache_key} = q|<TT>vandermonde(p,v,d)</TT> computes the (unique) polynomial of degree
<TT>d</TT> with prescribed values <TT>v[1],...,v[N]</TT> at the points
<TT>p</TT><IMG
 WIDTH="44" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_180.png"
 ALT="$^0,\dots,$"> <TT>p</TT><IMG
 WIDTH="32" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_181.png"
 ALT="$^{N-1}$">, <TT>N=(d+1)</TT><IMG
 WIDTH="13" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_182.png"
 ALT="$^n$">, <IMG
 WIDTH="14" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_17.png"
 ALT="$n$"> the
number of ring variables.

<P>
The returned polynomial is <!-- MATH
 $\sum
c_{\alpha_1\ldots\alpha_n}\cdot x_1^{\alpha_1} \cdot \dots \cdot
x_n^{\alpha_n}$
 -->
<IMG
 WIDTH="177" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_183.png"
 ALT="$\sum
c_{\alpha_1\ldots\alpha_n}\cdot x_1^{\alpha_1} \cdot \dots \cdot
x_n^{\alpha_n}$">, where the coefficients
<!-- MATH
 $c_{\alpha_1\ldots\alpha_n}$
 -->
<IMG
 WIDTH="54" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_184.png"
 ALT="$c_{\alpha_1\ldots\alpha_n}$"> are the solution of the (transposed)
Vandermonde system of linear equations
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
\sum_{\alpha_1+\ldots+\alpha_n\leq d} c_{\alpha_1\ldots\alpha_n} \cdot
{\tt p}_1^{(k-1)\alpha_1}\cdot\dots\cdot {\tt p}_n^{(k-1)\alpha_n} =
{\tt v}[k], \quad k=1,\dots,{\tt N}.
\end{displaymath}
 -->

<IMG
 WIDTH="454" HEIGHT="47" BORDER="0"
 SRC="sing_185.png"
 ALT="\begin{displaymath}\sum_{\alpha_1+\ldots+\alpha_n\leq d} c_{\alpha_1\ldots\alpha...
...\tt p}_n^{(k-1)\alpha_n} =
{\tt v}[k], \quad k=1,\dots,{\tt N}.\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>|;

$l2h_cache_key = q/$x_1$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="20" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_298.png"
 ALT="$x_1$">|;

$l2h_cache_key = q/  $f_u := \sum_{l=1}^e Y_lZ_l^{i_u}-X_u=0, 1\le u\le n-k$;/;
$l2h_cache{$l2h_cache_key} = q|  <!-- MATH
 $f_u := \sum_{l=1}^e Y_lZ_l^{i_u}-X_u=0, 1\le u\le n-k$
 -->
<IMG
 WIDTH="300" HEIGHT="36" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_745.png"
 ALT="$f_u := \sum_{l=1}^e Y_lZ_l^{i_u}-X_u=0, 1\le u\le n-k$">;|;

$l2h_cache_key = q/$t_1,\ldots,t_r$./;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $t_1,\ldots,t_r$
 -->
<IMG
 WIDTH="65" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_348.png"
 ALT="$t_1,\ldots,t_r$">.|;

$l2h_cache_key = q/$(x_1,\ldots,x_n)$./;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $(x_1,\ldots,x_n)$
 -->
<IMG
 WIDTH="86" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_394.png"
 ALT="$(x_1,\ldots,x_n)$">.|;

$l2h_cache_key = q/$R=\hbox{Loc}_< K[\underline{x}]$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $R=\hbox{Loc}_< K[\underline{x}]$
 -->
<IMG
 WIDTH="106" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_522.png"
 ALT="$R = \hbox{Loc}_&lt; K[\underline{x}]$">|;

$l2h_cache_key = q/Global orderings are wellorderings (i.e.,  \hbox{$1 < x_i$} for each variable
$x_i$), local orderings satisfy $1 > x_i$ for each variable.   If some variables are ordered globally and others locally we
call it a mixed ordering.   Local or mixed orderings are not wellorderings.

Let $K$ be the ground field, \hbox{$x = (x_1, \ldots, x_n)$} the
variables and $<$ a monomial ordering, then Loc $K[x]$ denotes the
localization of $K[x]$ with respect to the multiplicatively closed set $$\{1 +
g \mid g = 0 \hbox{ or } g \in K[x]\backslash \{0\} \hbox{ and }L(g) <
1\}.$$   Here, $L(g)$
denotes the leading monomial of $g$, i.e., the biggest monomial of $g$ with
respect to $<$.   The result of any computation which uses standard basis
computations has to be interpreted in Loc $K[x]$./;
$l2h_cache{$l2h_cache_key} = q|Global orderings are wellorderings (i.e.,  <IMG
 WIDTH="48" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_445.png"
 ALT="$1 &lt; x_i$"> for each variable
<IMG
 WIDTH="18" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_125.png"
 ALT="$x_i$">), local orderings satisfy <IMG
 WIDTH="48" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_446.png"
 ALT="$1 &gt; x_i$"> for each variable.   If some variables are ordered globally and others locally we
call it a mixed ordering.   Local or mixed orderings are not wellorderings.

<P>
Let <IMG
 WIDTH="19" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_48.png"
 ALT="$K$"> be the ground field, <!-- MATH
 $x = (x_1, \ldots, x_n)$
 -->
<IMG
 WIDTH="116" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_447.png"
 ALT="$x = (x_1, \ldots, x_n)$"> the
variables and <IMG
 WIDTH="17" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_223.png"
 ALT="$&lt;$"> a monomial ordering, then Loc <IMG
 WIDTH="37" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_448.png"
 ALT="$K[x]$"> denotes the
localization of <IMG
 WIDTH="37" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_448.png"
 ALT="$K[x]$"> with respect to the multiplicatively closed set <BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
\{1 +
g \mid g = 0 \hbox{ or } g \in K[x]\backslash \{0\} \hbox{ and }L(g) <
1\}.
\end{displaymath}
 -->

<IMG
 WIDTH="318" HEIGHT="28" BORDER="0"
 SRC="sing_449.png"
 ALT="\begin{displaymath}\{1 +
g \mid g = 0 \hbox{ or } g \in K[x]\backslash \{0\} \hbox{ and }L(g) &lt;
1\}.\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
Here, <IMG
 WIDTH="36" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_147.png"
 ALT="$L(g)$">
denotes the leading monomial of <IMG
 WIDTH="12" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_148.png"
 ALT="$g$">, i.e., the biggest monomial of <IMG
 WIDTH="12" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_148.png"
 ALT="$g$"> with
respect to <IMG
 WIDTH="17" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_223.png"
 ALT="$&lt;$">.   The result of any computation which uses standard basis
computations has to be interpreted in Loc <IMG
 WIDTH="37" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_448.png"
 ALT="$K[x]$">.|;

$l2h_cache_key = q/$I = \{ e^2, f \}$./;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $I = \{ e^2, f \}$
 -->
<IMG
 WIDTH="81" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_420.png"
 ALT="$I = \{ e^2, f \}$">.|;

$l2h_cache_key = q/$coker(A_1)=F_0\/M$
$$...\longrightarrow F_2 \buildrel{A_2}\over{\longrightarrow} F_1 \buildrel{A_1}\over{\longrightarrow} F_0\longrightarrow F_0\/M\longrightarrow 0,$$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $coker(A_1)=F_0/M$
 -->
<IMG
 WIDTH="137" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_168.png"
 ALT="$coker(A_1)=F_0/M$">
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
...\longrightarrow F_2 \buildrel{A_2}\over{\longrightarrow} F_1 \buildrel{A_1}\over{\longrightarrow} F_0\longrightarrow F_0/M\longrightarrow 0,
\end{displaymath}
 -->

<IMG
 WIDTH="290" HEIGHT="28" BORDER="0"
 SRC="sing_164.png"
 ALT="\begin{displaymath}...\longrightarrow F_2 \buildrel{A_2}\over{\longrightarrow} F...
...er{\longrightarrow} F_0\longrightarrow F_0/M
\longrightarrow 0,\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>|;

$l2h_cache_key = q/In order to set up a $G$--algebra one has to do the following steps:/;
$l2h_cache{$l2h_cache_key} = q|In order to set up a <IMG
 WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_186.png"
 ALT="$G$">-algebra one has to do the following steps:|;

$l2h_cache_key = q/$Z\/7[x,y,z]$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="80" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_31.png"
 ALT="$Z/7[x,y,z]$">|;

$l2h_cache_key = q/$\times$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="17" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_92.png"
 ALT="$\times$">|;

$l2h_cache_key = q/dim$(R^n\/M)$, resp.@: dim$_k(R^n\/M)$/;
$l2h_cache{$l2h_cache_key} = q|dim<IMG
 WIDTH="62" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_433.png"
 ALT="$(R^n/M)$">, resp.@: dim<IMG
 WIDTH="69" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_434.png"
 ALT="$_k(R^n/M)$">|;

$l2h_cache_key = q/$MD$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="35" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_10.png"
 ALT="$MD$">|;

$l2h_cache_key = q/$Q \rightarrow Z\/p$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $Q \rightarrow Z/p$
 -->
<IMG
 WIDTH="68" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_86.png"
 ALT="$Q \rightarrow Z/p$">|;

$l2h_cache_key = q/  $D=\{d_{ij}, i<j\}$, with polynomial entries $d_{ij}$ from $R$ ($d_{ij}$ for $i\geq j$ will be ignored)./;
$l2h_cache{$l2h_cache_key} = q|  <!-- MATH
 $D=\{d_{ij}, i<j\}$
 -->
<IMG
 WIDTH="116" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_234.png"
 ALT="$D=\{d_{ij}, i&lt;j\}$">, with polynomial entries <IMG
 WIDTH="24" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_208.png"
 ALT="$d_{ij}$"> from <IMG
 WIDTH="16" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_51.png"
 ALT="$R$"> (<IMG
 WIDTH="24" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_208.png"
 ALT="$d_{ij}$"> for <IMG
 WIDTH="38" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_233.png"
 ALT="$i\geq j$"> will be ignored).|;

$l2h_cache_key = q/$(h1+h2)\/h1=h2\/(h1 \cap h2)$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $(h1+h2)/h1=h2/(h1 \cap h2)$
 -->
<IMG
 WIDTH="206" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_93.png"
 ALT="$(h1+h2)/h1=h2/(h1 \cap h2)$">|;

$l2h_cache_key = q/  choose $s$, such that $q^s\ge n$, and construct $s$ distinct points $P_1,\dots,P_s$ in $F_q^s$./;
$l2h_cache{$l2h_cache_key} = q|  choose <IMG
 WIDTH="12" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_176.png"
 ALT="$s$">, such that <IMG
 WIDTH="49" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_818.png"
 ALT="$q^s\ge n$">, and construct <IMG
 WIDTH="12" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_176.png"
 ALT="$s$"> distinct points <IMG
 WIDTH="74" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_819.png"
 ALT="$P_1,\dots,P_s$"> in <IMG
 WIDTH="23" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_820.png"
 ALT="$F_q^s$">.|;

$l2h_cache_key = q/$$
R^r \buildrel{A}\over{\longrightarrow}
R^m \buildrel{B}\over{\longleftarrow} R^s\;.
$$/;
$l2h_cache{$l2h_cache_key} = q|<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
R^r \buildrel{A}\over{\longrightarrow}
R^m \buildrel{B}\over{\longleftarrow} R^s\;.
\end{displaymath}
 -->

<IMG
 WIDTH="139" HEIGHT="24" BORDER="0"
 SRC="sing_377.png"
 ALT="\begin{displaymath}
R^r \buildrel{A}\over{\longrightarrow}
R^m \buildrel{B}\over{\longleftarrow} R^s\;.
\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>|;

$l2h_cache_key = q/$\{ a \mid ar^3 \in U \}$./;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $\{ a \mid ar^3 \in U \}$
 -->
<IMG
 WIDTH="97" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_15.png"
 ALT="$\{ a \mid ar^3 \in U \}$">.|;

$l2h_cache_key = q/  We have $ s_{i+n}=s_i, \hbox{ for all }  i\in Z\!\!\! Z_n$, since $s_{i+n}=r(a^{i+n})=r(a^i)$. Furthermore
  $$
    s_i^q=(e(a^i))^q=e(a^{iq})=s_{qi}, \hbox{ for all } i \in Z_n,
  $$
  and $\sigma_i^{q^m}=\sigma_i, \hbox{ for all } 1\le i \le t$.
  Replace the syndromes by variables and obtain the following set of polynomials $Newton_t$ in the variables
  $S_1,\dots,S_n$ and $\sigma_1,\dots,\sigma_t$:
  $$
  \sigma_i^{q^m}-\sigma_i, \ \  \forall \ 1\le i \le t,
  $$
  $$
  S_{i+n}-S_i, \ \  \forall \  i\in Z\!\!\! Z_n,
  $$
  $$
  S_i^q-S_{qi}, \ \  \forall \  i\in Z\!\!\! Z_n,
  $$
  $$
  S_i+\sum_{j=1}^{t}\sigma_jS_{i-j}, \ \  \forall \  i\in Z\!\!\! Z_n,
  $$
  $$
  S_i-s_i(r) \ \ \forall \ i\in S_C.
  $$/;
$l2h_cache{$l2h_cache_key} = q|  We have <!-- MATH
 $s_{i+n}=s_i, \hbox{ for all }  i\in Z\!\!\! Z_n$
 -->
<IMG
 WIDTH="176" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_794.png"
 ALT="$ s_{i+n}=s_i, \hbox{ for all } i\in Z\!\!\! Z_n$">, since <!-- MATH
 $s_{i+n}=r(a^{i+n})=r(a^i)$
 -->
<IMG
 WIDTH="162" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_795.png"
 ALT="$s_{i+n}=r(a^{i+n})=r(a^i)$">. Furthermore
  <BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
s_i^q=(e(a^i))^q=e(a^{iq})=s_{qi}, \hbox{ for all } i \in Z_n,
\end{displaymath}
 -->

<IMG
 WIDTH="297" HEIGHT="29" BORDER="0"
 SRC="sing_796.png"
 ALT="\begin{displaymath}
s_i^q=(e(a^i))^q=e(a^{iq})=s_{qi}, \hbox{ for all } i \in Z_n,
\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
and <!-- MATH
 $\sigma_i^{q^m}=\sigma_i, \hbox{ for all } 1\le i \le t$
 -->
<IMG
 WIDTH="188" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_797.png"
 ALT="$\sigma_i^{q^m}=\sigma_i, \hbox{ for all } 1\le i \le t$">.
  Replace the syndromes by variables and obtain the following set of polynomials <IMG
 WIDTH="67" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_798.png"
 ALT="$Newton_t$"> in the variables
  <IMG
 WIDTH="75" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_799.png"
 ALT="$S_1,\dots,S_n$"> and <!-- MATH
 $\sigma_1,\dots,\sigma_t$
 -->
<IMG
 WIDTH="70" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_800.png"
 ALT="$\sigma_1,\dots,\sigma_t$">:
  <BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
\sigma_i^{q^m}-\sigma_i, \ \  \forall \ 1\le i \le t,
\end{displaymath}
 -->

<IMG
 WIDTH="159" HEIGHT="28" BORDER="0"
 SRC="sing_801.png"
 ALT="\begin{displaymath}
\sigma_i^{q^m}-\sigma_i, \ \ \forall \ 1\le i \le t,
\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
  <BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
S_{i+n}-S_i, \ \  \forall \  i\in Z\!\!\! Z_n,
\end{displaymath}
 -->

<IMG
 WIDTH="151" HEIGHT="28" BORDER="0"
 SRC="sing_802.png"
 ALT="\begin{displaymath}
S_{i+n}-S_i, \ \ \forall \ i\in Z\!\!\! Z_n,
\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
  <BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
S_i^q-S_{qi}, \ \  \forall \  i\in Z\!\!\! Z_n,
\end{displaymath}
 -->

<IMG
 WIDTH="143" HEIGHT="29" BORDER="0"
 SRC="sing_803.png"
 ALT="\begin{displaymath}
S_i^q-S_{qi}, \ \ \forall \ i\in Z\!\!\! Z_n,
\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
  <BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
S_i+\sum_{j=1}^{t}\sigma_jS_{i-j}, \ \  \forall \  i\in Z\!\!\! Z_n,
\end{displaymath}
 -->

<IMG
 WIDTH="191" HEIGHT="57" BORDER="0"
 SRC="sing_804.png"
 ALT="\begin{displaymath}
S_i+\sum_{j=1}^{t}\sigma_jS_{i-j}, \ \ \forall \ i\in Z\!\!\! Z_n,
\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
  <BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
S_i-s_i(r) \ \ \forall \ i\in S_C.
\end{displaymath}
 -->

<IMG
 WIDTH="140" HEIGHT="28" BORDER="0"
 SRC="sing_805.png"
 ALT="\begin{displaymath}
S_i-s_i(r) \ \ \forall \ i\in S_C.
\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>|;

$l2h_cache_key = q/Here, $L(g)$ denotes the leading term of $g$ and
$ecart(g):=deg(g)-deg(L(g))$./;
$l2h_cache{$l2h_cache_key} = q|Here, <IMG
 WIDTH="36" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_147.png"
 ALT="$L(g)$"> denotes the leading term of <IMG
 WIDTH="12" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_148.png"
 ALT="$g$"> and
<!-- MATH
 $ecart(g):=deg(g)-deg(L(g))$
 -->
<IMG
 WIDTH="218" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_149.png"
 ALT="$ecart(g):=deg(g)-deg(L(g))$">.|;

$l2h_cache_key = q/$a$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="13" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_4.png"
 ALT="$a$">|;

$l2h_cache_key = q/$P^4$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="24" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_352.png"
 ALT="$P^4$">|;

$l2h_cache_key = q/$i, j$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="24" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_340.png"
 ALT="$i, j$">|;

$l2h_cache_key = q/$i+i+i$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="59" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_68.png"
 ALT="$i+i+i$">|;

$l2h_cache_key = q/$I \cap K[U]=(0)$,/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $I \cap K[U]=(0)$
 -->
<IMG
 WIDTH="108" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_136.png"
 ALT="$I \cap K[U]=(0)$">,|;

$l2h_cache_key = q/{\sc Letterplace}/;
$l2h_cache{$l2h_cache_key} = q|L<SMALL>ETTERPLACE</SMALL>|;

$l2h_cache_key = q/$\Omega(G-D)$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="74" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_931.png"
 ALT="$\Omega(G-D)$">|;

$l2h_cache_key = q/nrows($M$)/;
$l2h_cache{$l2h_cache_key} = q|nrows(<IMG
 WIDTH="21" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_13.png"
 ALT="$M$">)|;

$l2h_cache_key = q/$(f_1,\dots,f_n) = (g_1,\dots,g_s)$,/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $(f_1,\dots,f_n) = (g_1,\dots,g_s)$
 -->
<IMG
 WIDTH="181" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_140.png"
 ALT="$(f_1,\dots,f_n) = (g_1,\dots,g_s)$">,|;

$l2h_cache_key = q/$v_1,...,v_k$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="62" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_428.png"
 ALT="$v_1,...,v_k$">|;

$l2h_cache_key = q/$v_1, \ldots, v_k$ which generate $M$./;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $v_1, \ldots, v_k$
 -->
<IMG
 WIDTH="70" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_90.png"
 ALT="$v_1, \ldots, v_k$"> which generate <IMG
 WIDTH="21" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_13.png"
 ALT="$M$">.|;

$l2h_cache_key = q/$<_m = (C, <)$ denotes the module ordering (giving priority to the component):/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="89" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_478.png"
 ALT="$&lt;_m = (C, &lt;)$"> denotes the module ordering (giving priority to the component):|;

$l2h_cache_key = q/    given a syndrome ${\bf s}=(s_{i_1},\dots,s_{i_{n-k}})\in F^{n-k}$ corresponding to an error of weight $t\le e$
    and error locations $\{k_1,\dots,k_{t}\}$, if we evaluate the $X_u=s_{i_u}$ for all $1\le u \le n-k$,
    then the roots of $L_C({\bf s},Z)$ are exactly $a^{k_1},\dots,a^{k_t}$ and 0 of multiplicity $e-t$, in other words
    $L_C({\bf s},Z)=Z^{e-t}\prod_{i=1}^{t}(Z-a ^{k_i}).$/;
$l2h_cache{$l2h_cache_key} = q|    given a syndrome <!-- MATH
 ${\bf s}=(s_{i_1},\dots,s_{i_{n-k}})\in F^{n-k}$
 -->
<IMG
 WIDTH="192" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_765.png"
 ALT="${\bf s}=(s_{i_1},\dots,s_{i_{n-k}})\in F^{n-k}$"> corresponding to an error of weight <IMG
 WIDTH="39" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_766.png"
 ALT="$t\le e$">
    and error locations <!-- MATH
 $\{k_1,\dots,k_{t}\}$
 -->
<IMG
 WIDTH="85" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_767.png"
 ALT="$\{k_1,\dots,k_{t}\}$">, if we evaluate the <IMG
 WIDTH="67" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_768.png"
 ALT="$X_u=s_{i_u}$"> for all <!-- MATH
 $1\le u \le n-k$
 -->
<IMG
 WIDTH="101" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_769.png"
 ALT="$1\le u \le n-k$">,
    then the roots of <!-- MATH
 $L_C({\bf s},Z)$
 -->
<IMG
 WIDTH="64" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_770.png"
 ALT="$L_C({\bf s},Z)$"> are exactly <!-- MATH
 $a^{k_1},\dots,a^{k_t}$
 -->
<IMG
 WIDTH="83" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_771.png"
 ALT="$a^{k_1},\dots,a^{k_t}$"> and 0 of multiplicity <IMG
 WIDTH="37" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_772.png"
 ALT="$e-t$">, in other words
    <!-- MATH
 $L_C({\bf s},Z)=Z^{e-t}\prod_{i=1}^{t}(Z-a ^{k_i}).$
 -->
<IMG
 WIDTH="228" HEIGHT="37" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_773.png"
 ALT="$L_C({\bf s},Z)=Z^{e-t}\prod_{i=1}^{t}(Z-a ^{k_i}).$">|;

$l2h_cache_key = q/$T^2$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="23" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_408.png"
 ALT="$T^2$">|;

$l2h_cache_key = q/  $(dk\times s)$-matrix and $m_{(j-1)d+i+1,r}, 0\leq i\leq e, 1\leq j\leq k, 1\leq r\leq s$,/;
$l2h_cache{$l2h_cache_key} = q|  <IMG
 WIDTH="60" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_113.png"
 ALT="$(dk\times s)$">-matrix and <!-- MATH
 $m_{(j-1)d+i+1,r}, 0\leq i\leq e, 1\leq j\leq k, 1\leq r\leq s$
 -->
<IMG
 WIDTH="315" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_114.png"
 ALT="$m_{(j-1)d+i+1,r}, 0\leq i\leq e, 1\leq j\leq k, 1\leq r\leq s$">,|;

$l2h_cache_key = q/$L(g_i)$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="40" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_143.png"
 ALT="$L(g_i)$">|;

$l2h_cache_key = q/Let $A$ be a GR-algebra. A {\bf left} (resp. {\bf right}) {\bf syzygy}
between $k$ elements $\{f_1,\dots,f_k\} \subset A^r $ is
a $k$-tuple $(g_1,\dots ,g_k)\in A^k$ satisfying
$$\sum_{i=1}^{k} g_i f_i = 0 \;\;\; {\rm resp. } \;\;\; \sum_{i=1}^{k} f_i g_i = 0. $$
The set of all left (resp. right) syzygies between $\{f_1,...,f_k\}$ is a left (resp. right) submodule $S$ of $A^k$./;
$l2h_cache{$l2h_cache_key} = q|Let <IMG
 WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_187.png"
 ALT="$A$"> be a GR-algebra. A <B>left</B> (resp. <B>right</B>) <B>syzygy</B>
between <IMG
 WIDTH="13" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_273.png"
 ALT="$k$"> elements <!-- MATH
 $\{f_1,\dots,f_k\} \subset A^r$
 -->
<IMG
 WIDTH="126" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_274.png"
 ALT="$\{f_1,\dots,f_k\} \subset A^r $"> is
a <IMG
 WIDTH="13" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_273.png"
 ALT="$k$">-tuple <!-- MATH
 $(g_1,\dots ,g_k)\in A^k$
 -->
<IMG
 WIDTH="121" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_275.png"
 ALT="$(g_1,\dots ,g_k)\in A^k$"> satisfying
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
\sum_{i=1}^{k} g_i f_i = 0 \;\;\; {\rm resp. } \;\;\; \sum_{i=1}^{k} f_i g_i = 0.
\end{displaymath}
 -->

<IMG
 WIDTH="226" HEIGHT="56" BORDER="0"
 SRC="sing_276.png"
 ALT="\begin{displaymath}\sum_{i=1}^{k} g_i f_i = 0 \;\;\; {\rm resp. } \;\;\; \sum_{i=1}^{k} f_i g_i = 0. \end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
The set of all left (resp. right) syzygies between <!-- MATH
 $\{f_1,...,f_k\}$
 -->
<IMG
 WIDTH="78" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_277.png"
 ALT="$\{f_1,...,f_k\}$"> is a left (resp. right) submodule <IMG
 WIDTH="15" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_244.png"
 ALT="$S$"> of <IMG
 WIDTH="24" HEIGHT="17" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_278.png"
 ALT="$A^k$">.|;

$l2h_cache_key = q/$Z\/p \rightarrow  R$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $Z/p \rightarrow  R$
 -->
<IMG
 WIDTH="68" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_81.png"
 ALT="$Z/p \rightarrow R$">|;

$l2h_cache_key = q/there is a monomial well-ordering $<$ on $K[x_1,x_2,\ldots,x_n]$ such that
                        $\forall i<j \;\; \hbox{LM}(d_{ij})< x_i x_j$,/;
$l2h_cache{$l2h_cache_key} = q|there is a monomial well-ordering <IMG
 WIDTH="17" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_223.png"
 ALT="$&lt;$"> on <!-- MATH
 $K[x_1,x_2,\ldots,x_n]$
 -->
<IMG
 WIDTH="120" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_224.png"
 ALT="$K[x_1,x_2,\ldots,x_n]$"> such that
                        <!-- MATH
 $\forall i<j \;\; \hbox{LM}(d_{ij})< x_i x_j$
 -->
<IMG
 WIDTH="164" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_225.png"
 ALT="$\forall i&lt;j \;\; \hbox{LM}(d_{ij})&lt; x_i x_j$">,|;

$l2h_cache_key = q/  $f_j$./;
$l2h_cache{$l2h_cache_key} = q|  <IMG
 WIDTH="19" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_109.png"
 ALT="$f_j$">.|;

$l2h_cache_key = q/$epsilon + genus$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $epsilon + genus$
 -->
<IMG
 WIDTH="116" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_933.png"
 ALT="$epsilon + genus$">|;

$l2h_cache_key = q/be the matrices of size $l \times k$, resp.\ $l \times m$, having the
generators of $h_1$, resp.\ $h_2$,/;
$l2h_cache{$l2h_cache_key} = q|be the matrices of size <IMG
 WIDTH="37" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_159.png"
 ALT="$l \times k$">, resp. <IMG
 WIDTH="43" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_160.png"
 ALT="$l \times m$">, having the
generators of <IMG
 WIDTH="20" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_154.png"
 ALT="$h_1$">, resp. <IMG
 WIDTH="20" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_155.png"
 ALT="$h_2$">,|;

$l2h_cache_key = q/$m\in Z$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="50" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_29.png"
 ALT="$m\in Z$">|;

$l2h_cache_key = q/$m\times r$ and $m\times s$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="45" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_375.png"
 ALT="$m\times r$"> and <IMG
 WIDTH="45" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_376.png"
 ALT="$m\times s$">|;

$l2h_cache_key = q/    $x^\alpha < x^\beta \Leftrightarrow \deg(x^\alpha) > \deg(x^\beta)$ or/;
$l2h_cache{$l2h_cache_key} = q|    <!-- MATH
 $x^\alpha < x^\beta \Leftrightarrow \deg(x^\alpha) > \deg(x^\beta)$
 -->
<IMG
 WIDTH="216" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_464.png"
 ALT="$x^\alpha &lt; x^\beta \Leftrightarrow \deg(x^\alpha) &gt; \deg(x^\beta)$"> or|;

$l2h_cache_key = q/$f \circ g$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="37" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_88.png"
 ALT="$f \circ g$">|;

$l2h_cache_key = q/$H_1$ (resp.\ $H_2$)/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="25" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_157.png"
 ALT="$H_1$"> (resp. <IMG
 WIDTH="25" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_158.png"
 ALT="$H_2$">)|;

$l2h_cache_key = q/Input: $f_1,\dots,f_n$/;
$l2h_cache{$l2h_cache_key} = q|Input: <IMG
 WIDTH="71" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_137.png"
 ALT="$f_1,\dots,f_n$">|;

$l2h_cache_key = q/$t$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="10" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_400.png"
 ALT="$t$">|;

$l2h_cache_key = q/$\hbox{GF}(p^n)$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $\hbox{GF}(p^n)$
 -->
<IMG
 WIDTH="56" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_25.png"
 ALT="$\hbox{GF}(p^n)$">|;

$l2h_cache_key = q/$$
    \hbox{deg}(e_{a,j}) \le s+j-1 \quad \hbox{for all $j$.}
$$/;
$l2h_cache{$l2h_cache_key} = q|<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
\hbox{deg}(e_{a,j}) \le s+j-1 \quad \hbox{for all $j$.}
\end{displaymath}
 -->

<IMG
 WIDTH="217" HEIGHT="29" BORDER="0"
 SRC="sing_570.png"
 ALT="\begin{displaymath}
\hbox{deg}(e_{a,j}) \le s+j-1 \quad \hbox{for all $j$.}
\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>|;

$l2h_cache_key = q/$A$ has a PBW (Poincar\'e-Birkhoff-Witt) basis,/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_187.png"
 ALT="$A$"> has a PBW (Poincar&#233;-Birkhoff-Witt) basis,|;

$l2h_cache_key = q/Generalizing this to quasihomogeneous modules we get
$$\hbox{HP}_M(t)={Q(t)\over {\Pi_{i=1}^n(1-t^{w_i})}}$$
where $Q(t)$ is a polynomial in ${\bf Z}[t]$.
$Q(t)$ is called the {\bf first (weighted) Hilbert series} of M./;
$l2h_cache{$l2h_cache_key} = q|Generalizing this to quasihomogeneous modules we get
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
\hbox{HP}_M(t)={Q(t)\over {\Pi_{i=1}^n(1-t^{w_i})}}
\end{displaymath}
 -->

<IMG
 WIDTH="172" HEIGHT="45" BORDER="0"
 SRC="sing_555.png"
 ALT="\begin{displaymath}\hbox{HP}_M(t)={Q(t)\over {\Pi_{i=1}^n(1-t^{w_i})}}\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
where <IMG
 WIDTH="35" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_547.png"
 ALT="$Q(t)$"> is a polynomial in <IMG
 WIDTH="30" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_549.png"
 ALT="${\bf Z}[t]$">.
<IMG
 WIDTH="35" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_547.png"
 ALT="$Q(t)$"> is called the <B>first (weighted) Hilbert series</B> of M.|;

$l2h_cache_key = q/$f_1$, \dots, $f_r$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="19" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_380.png"
 ALT="$f_1$">, ..., <IMG
 WIDTH="19" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_382.png"
 ALT="$f_r$">|;

$l2h_cache_key = q/$<_m = (c, <)$ denotes the module ordering (giving priority to the component):/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="84" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_483.png"
 ALT="$&lt;_m = (c, &lt;)$"> denotes the module ordering (giving priority to the component):|;

$l2h_cache_key = q/${\tt transpose}(B_{i+1}) \cdot {\tt transpose}(B_i) =0$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 ${\tt transpose}(B_{i+1}) \cdot {\tt transpose}(B_i) =0$
 -->
<IMG
 WIDTH="271" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_284.png"
 ALT="${\tt transpose}(B_{i+1}) \cdot {\tt transpose}(B_i) =0$">|;

$l2h_cache_key = q/$x^3,$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="25" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_6.png"
 ALT="$x^3,$">|;

$l2h_cache_key = q/$\forall i<j$, $d_{ij} = p$,/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="47" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_209.png"
 ALT="$\forall i&lt;j$">, <IMG
 WIDTH="53" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_211.png"
 ALT="$d_{ij} = p$">,|;

$l2h_cache_key = q/We call a total ordering $<$ on the free monoid $X := \langle x_1,\dots,x_n \rangle$ (where $1$ is identified with the identity element) a
\textbf{monomial ordering} if the following conditions hold:/;
$l2h_cache{$l2h_cache_key} = q|We call a total ordering <IMG
 WIDTH="17" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_223.png"
 ALT="$&lt;$"> on the free monoid <!-- MATH
 $X := \langle x_1,\dots,x_n \rangle$
 -->
<IMG
 WIDTH="126" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_302.png"
 ALT="$X := \langle x_1,\dots,x_n \rangle$"> (where <IMG
 WIDTH="12" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_290.png"
 ALT="$1$"> is identified with the identity element) a
<B>monomial ordering</B> if the following conditions hold:|;

$l2h_cache_key = q/$ x_1, \ldots, x_k ,\;$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $x_1, \ldots, x_k ,\;$
 -->
<IMG
 WIDTH="82" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_205.png"
 ALT="$ x_1, \ldots, x_k ,\;$">|;

$l2h_cache_key = q/$f=(f_1,\ldots,f_n):k^r\rightarrow k^n$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $f=(f_1,\ldots,f_n):k^r\rightarrow k^n$
 -->
<IMG
 WIDTH="185" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_345.png"
 ALT="$f=(f_1,\ldots,f_n):k^r\rightarrow k^n$">|;

$l2h_cache_key = q/$H_1$, resp.\ $H_2$,/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="25" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_157.png"
 ALT="$H_1$">, resp. <IMG
 WIDTH="25" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_158.png"
 ALT="$H_2$">,|;

$l2h_cache_key = q/$g \in K[f_1,\ldots,f_r]$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $g \in K[f_1,\ldots,f_r]$
 -->
<IMG
 WIDTH="120" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_385.png"
 ALT="$g \in K [f_1,\ldots,f_r]$">|;

$l2h_cache_key = q/$(n \times n)$-matrix./;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="55" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_372.png"
 ALT="$(n \times n)$">-matrix.|;

$l2h_cache_key = q/$n>1$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="43" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_301.png"
 ALT="$n&gt;1$">|;

$l2h_cache_key = q/  $\epsilon_j:=X_j^{q^m}-X_j=0, 1\le j\le n-k,$ since $s_j\in F$;/;
$l2h_cache{$l2h_cache_key} = q|  <!-- MATH
 $\epsilon_j:=X_j^{q^m}-X_j=0, 1\le j\le n-k,$
 -->
<IMG
 WIDTH="251" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_746.png"
 ALT="$\epsilon_j:=X_j^{q^m}-X_j=0, 1\le j\le n-k,$"> since <IMG
 WIDTH="50" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_747.png"
 ALT="$s_j\in F$">;|;

$l2h_cache_key = q/  $K\cdot A=M$./;
$l2h_cache{$l2h_cache_key} = q|  <IMG
 WIDTH="81" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_121.png"
 ALT="$K\cdot A=M$">.|;

$l2h_cache_key = q/$B$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="17" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_192.png"
 ALT="$B$">|;

$l2h_cache_key = q/  the reduced Gr\"{o}bner basis $G$ for the ideal $J(t,{\bf r})$ w.r.t any
  monomial ordering is
  $$
  U_i-u_i({\bf e}), i=1,\dots,n,
  $$
  $$
  V_j-v_j, j=1,\dots,t,
  $$
  where $({\bf u}({\bf e}),{\bf v})$ is the unique solution./;
$l2h_cache{$l2h_cache_key} = q|  the reduced Gr&#246;bner basis <IMG
 WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_186.png"
 ALT="$G$"> for the ideal <IMG
 WIDTH="47" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_876.png"
 ALT="$J(t,{\bf r})$"> w.r.t any
  monomial ordering is
  <BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
U_i-u_i({\bf e}), i=1,\dots,n,
\end{displaymath}
 -->

<IMG
 WIDTH="160" HEIGHT="28" BORDER="0"
 SRC="sing_882.png"
 ALT="\begin{displaymath}
U_i-u_i({\bf e}), i=1,\dots,n,
\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
  <BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
V_j-v_j, j=1,\dots,t,
\end{displaymath}
 -->

<IMG
 WIDTH="138" HEIGHT="29" BORDER="0"
 SRC="sing_883.png"
 ALT="\begin{displaymath}
V_j-v_j, j=1,\dots,t,
\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
where <!-- MATH
 $({\bf u}({\bf e}),{\bf v})$
 -->
<IMG
 WIDTH="64" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_884.png"
 ALT="$({\bf u}({\bf e}),{\bf v})$"> is the unique solution.|;

$l2h_cache_key = q/$\mu_a=a^2+a+3$,/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="114" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_49.png"
 ALT="$\mu_a=a^2+a+3$">,|;

$l2h_cache_key = q/$12-4=8$./;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="77" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_8.png"
 ALT="$12-4=8$">.|;

$l2h_cache_key = q/  Let $B$ be an MDS matrix with structure constants $\mu^{ij}_l$.
  Define $U_{ij}$ in the variables $U_1, \dots ,U_n$ by
  $$
    U_{ij}=\sum _{l=1}^n \mu^{ij}_lU_l.
  $$
  The ideal $J({\bf r})$ in $F_q[U_1,\dots,U_n]$ is generated by
  $$
     \sum_{l=1}^n a_{jl}U_l-s_j({\bf r})  \hbox{ for }   j=1,\dots,n-k.
  $$
  The ideal $I(t,U,V)$ in $F_q[U_1,\dots,U_n,V_1,\dots,V_t]$
  is generated by
  $$
    \sum_{j=1}^t U_{ij}V_j-U_{i,t+1} \hbox{ for } i=1,\dots,n
  $$
  Let $J(t,{\bf r})$ be the ideal in $F_q[U_1,\dots,U_n,V_1,\dots,V_t]$
  generated by $J({\bf r})$ and $I(t,U,V)$./;
$l2h_cache{$l2h_cache_key} = q|  Let <IMG
 WIDTH="17" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_192.png"
 ALT="$B$"> be an MDS matrix with structure constants <IMG
 WIDTH="25" HEIGHT="38" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_866.png"
 ALT="$\mu^{ij}_l$">.
  Define <IMG
 WIDTH="26" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_867.png"
 ALT="$U_{ij}$"> in the variables <!-- MATH
 $U_1, \dots ,U_n$
 -->
<IMG
 WIDTH="77" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_868.png"
 ALT="$U_1, \dots ,U_n$"> by
  <BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
U_{ij}=\sum _{l=1}^n \mu^{ij}_lU_l.
\end{displaymath}
 -->

<IMG
 WIDTH="107" HEIGHT="54" BORDER="0"
 SRC="sing_869.png"
 ALT="\begin{displaymath}
U_{ij}=\sum _{l=1}^n \mu^{ij}_lU_l.
\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
The ideal <IMG
 WIDTH="34" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_870.png"
 ALT="$J({\bf r})$"> in <!-- MATH
 $F_q[U_1,\dots,U_n]$
 -->
<IMG
 WIDTH="103" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_871.png"
 ALT="$F_q[U_1,\dots,U_n]$"> is generated by
  <BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
\sum_{l=1}^n a_{jl}U_l-s_j({\bf r})  \hbox{ for }   j=1,\dots,n-k.
\end{displaymath}
 -->

<IMG
 WIDTH="255" HEIGHT="54" BORDER="0"
 SRC="sing_872.png"
 ALT="\begin{displaymath}
\sum_{l=1}^n a_{jl}U_l-s_j({\bf r}) \hbox{ for } j=1,\dots,n-k.
\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
The ideal <IMG
 WIDTH="68" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_873.png"
 ALT="$I(t,U,V)$"> in <!-- MATH
 $F_q[U_1,\dots,U_n,V_1,\dots,V_t]$
 -->
<IMG
 WIDTH="177" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_874.png"
 ALT="$F_q[U_1,\dots,U_n,V_1,\dots,V_t]$">
  is generated by
  <BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
\sum_{j=1}^t U_{ij}V_j-U_{i,t+1} \hbox{ for } i=1,\dots,n
\end{displaymath}
 -->

<IMG
 WIDTH="232" HEIGHT="57" BORDER="0"
 SRC="sing_875.png"
 ALT="\begin{displaymath}
\sum_{j=1}^t U_{ij}V_j-U_{i,t+1} \hbox{ for } i=1,\dots,n
\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
Let <IMG
 WIDTH="47" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_876.png"
 ALT="$J(t,{\bf r})$"> be the ideal in <!-- MATH
 $F_q[U_1,\dots,U_n,V_1,\dots,V_t]$
 -->
<IMG
 WIDTH="177" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_874.png"
 ALT="$F_q[U_1,\dots,U_n,V_1,\dots,V_t]$">
  generated by <IMG
 WIDTH="34" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_870.png"
 ALT="$J({\bf r})$"> and <IMG
 WIDTH="68" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_873.png"
 ALT="$I(t,U,V)$">.|;

$l2h_cache_key = q/$0$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="12" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_2.png"
 ALT="$0$">|;

$l2h_cache_key = q/$Z\/32003[x,y,z]$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $Z/32003[x,y,z]$
 -->
<IMG
 WIDTH="112" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_5.png"
 ALT="$Z/32003[x,y,z]$">|;

$l2h_cache_key = q/$\tilde{E}_6$./;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="23" HEIGHT="37" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_626.png"
 ALT="$\tilde{E}_6$">.|;

$l2h_cache_key = q/$p^k$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="20" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_344.png"
 ALT="$p^k$">|;

$l2h_cache_key = q/finite fields $\hbox{GF}(p^n)$ with $p^n$ elements, $p$ a prime, $p^n \le 2^{16}$,/;
$l2h_cache{$l2h_cache_key} = q|finite fields <!-- MATH
 $\hbox{GF}(p^n)$
 -->
<IMG
 WIDTH="56" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_25.png"
 ALT="$\hbox{GF}(p^n)$"> with <IMG
 WIDTH="21" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_26.png"
 ALT="$p^n$"> elements, <IMG
 WIDTH="12" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_23.png"
 ALT="$p$"> a prime, <!-- MATH
 $p^n \le 2^{16}$
 -->
<IMG
 WIDTH="64" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_27.png"
 ALT="$p^n \le 2^{16}$">,|;

$l2h_cache_key = q/$M$./;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="21" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_13.png"
 ALT="$M$">.|;

$l2h_cache_key = q/Let $I \subset A^r$ be a left $A$--submodule.
A finite set $G\subset I$ is called {\bf a left  Groebner basis} of $I$ if and
only if $L(G)=L(I)$, that is for any $f \in I\setminus \{ 0 \}$ there exists a $g\in G$
satisfying $ \hbox{LM}(g) \mid \hbox{LM}(f)$, i.e., if $\hbox{LM}(f) = x^{\alpha}e_i$, then
$\hbox{LM}(f) = x^{\beta}e_i$ with $\beta_j \leq \alpha_j, \; 1\leq j \leq n$./;
$l2h_cache{$l2h_cache_key} = q|Let <IMG
 WIDTH="53" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_246.png"
 ALT="$I \subset A^r$"> be a left <IMG
 WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_187.png"
 ALT="$A$">-submodule.
A finite set <IMG
 WIDTH="46" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_247.png"
 ALT="$G\subset I$"> is called <B>a left  Groebner basis</B> of <IMG
 WIDTH="12" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_248.png"
 ALT="$I$"> if and
only if <IMG
 WIDTH="93" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_249.png"
 ALT="$L(G)=L(I)$">, that is for any <!-- MATH
 $f \in I\setminus \{ 0 \}$
 -->
<IMG
 WIDTH="80" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_250.png"
 ALT="$f \in I\setminus \{ 0 \}$"> there exists a <IMG
 WIDTH="44" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_251.png"
 ALT="$g\in G$">
satisfying <!-- MATH
 $\hbox{LM}(g) \mid \hbox{LM}(f)$
 -->
<IMG
 WIDTH="109" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_252.png"
 ALT="$ \hbox{LM}(g) \mid \hbox{LM}(f)$">, i.e., if <!-- MATH
 $\hbox{LM}(f) = x^{\alpha}e_i$
 -->
<IMG
 WIDTH="103" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_253.png"
 ALT="$\hbox{LM}(f) = x^{\alpha}e_i$">, then
<!-- MATH
 $\hbox{LM}(f) = x^{\beta}e_i$
 -->
<IMG
 WIDTH="102" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_254.png"
 ALT="$\hbox{LM}(f) = x^{\beta}e_i$"> with <!-- MATH
 $\beta_j \leq \alpha_j, \; 1\leq j \leq n$
 -->
<IMG
 WIDTH="137" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_255.png"
 ALT="$\beta_j \leq \alpha_j, \; 1\leq j \leq n$">.|;

$l2h_cache_key = q/$V$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_297.png"
 ALT="$V$">|;

$l2h_cache_key = q/$epsilon:=[(deg(G)-3*genus+1)\/2]$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $epsilon:=[(deg(G)-3*genus+1)/2]$
 -->
<IMG
 WIDTH="278" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_934.png"
 ALT="$epsilon:=[(deg(G)-3*genus+1)/2]$">|;

$l2h_cache_key = q/ ($=\hbox{Ext}^1(K,K)$)/;
$l2h_cache{$l2h_cache_key} = q| (<!-- MATH
 $=\hbox{Ext}^1(K,K)$
 -->
<IMG
 WIDTH="101" HEIGHT="36" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_362.png"
 ALT="$=\hbox{Ext}^1(K,K)$">)|;

$l2h_cache_key = q/$Z\/7$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_43.png"
 ALT="$Z/7$">|;

$l2h_cache_key = q/    \phantom{$x^\alpha < x^\beta \Leftrightarrow $}$ \deg(x^\alpha) =
    \deg(x^\beta)$ and $\exists\ 1 \le i \le n: \alpha_n = \beta_n,
    \ldots, \alpha_{i+1} = \beta_{i+1}, \alpha_i > \beta_i.$/;
$l2h_cache{$l2h_cache_key} = q|    <!-- MATH
 $\deg(x^\alpha) =
    \deg(x^\beta)$
 -->
<IMG
 WIDTH="134" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_454.png"
 ALT="$ \deg(x^\alpha) =
\deg(x^\beta)$"> and <!-- MATH
 $\exists\ 1 \le i \le n: \alpha_n = \beta_n,
    \ldots, \alpha_{i+1} = \beta_{i+1}, \alpha_i > \beta_i.$
 -->
<IMG
 WIDTH="336" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_455.png"
 ALT="$\exists\ 1 \le i \le n: \alpha_n = \beta_n,
\ldots, \alpha_{i+1} = \beta_{i+1}, \alpha_i &gt; \beta_i.$">|;

$l2h_cache_key = q/  {\bf Generic decoding}: Solve some system $S(C)$ and obtain some "closed" formulas $CF$. Evaluating these formulas
  at data specific to a received word ${\bf r}$ should yield a solution to the decoding problem. For example for
  $f\in CF: f(syndrome({\bf r}),x)=poly(x)$. The roots of $poly(x)=0$ yield error positions, see the section on the
  general error-locator polynomial./;
$l2h_cache{$l2h_cache_key} = q|  <B>Generic decoding</B>: Solve some system <IMG
 WIDTH="40" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_723.png"
 ALT="$S(C)$"> and obtain some "closed" formulas <IMG
 WIDTH="29" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_724.png"
 ALT="$CF$">. Evaluating these formulas
  at data specific to a received word <IMG
 WIDTH="12" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_725.png"
 ALT="${\bf r}$"> should yield a solution to the decoding problem. For example for
  <!-- MATH
 $f\in CF: f(syndrome({\bf r}),x)=poly(x)$
 -->
<IMG
 WIDTH="271" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_726.png"
 ALT="$f\in CF: f(syndrome({\bf r}),x)=poly(x)$">. The roots of <IMG
 WIDTH="84" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_727.png"
 ALT="$poly(x)=0$"> yield error positions, see the section on the
  general error-locator polynomial.|;

$l2h_cache_key = q/$\hbox{Loc}_{(x)}K[x_1,\ldots,x_n])$./;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $\hbox{Loc}_{(x)}K[x_1,\ldots,x_n])$
 -->
<IMG
 WIDTH="146" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_61.png"
 ALT="$\hbox{Loc}_{(x)}K[x_1,\ldots,x_n])$">.|;

$l2h_cache_key = q/$A$
is left and right noetherian,/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_187.png"
 ALT="$A$">
is left and right noetherian,|;

$l2h_cache_key = q/$\forall \; 1 \leq i<j<k \leq n \; \; : \; {\cal NDC}_{ijk} =0$, where
$$
{\cal NDC}_{ijk} = c_{ik}c_{jk} \cdot d_{ij}x_k - x_k d_{ij} +
c_{jk} \cdot x_j d_{ik} - c_{ij} \cdot d_{ik}x_j + d_{jk}x_i
- c_{ij}c_{ik} \cdot x_i d_{jk}.
$$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $\forall \; 1 \leq i<j<k \leq n \; \; : \; {\cal NDC}_{ijk} =0$
 -->
<IMG
 WIDTH="253" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_226.png"
 ALT="$\forall \; 1 \leq i&lt;j&lt;k \leq n \; \; : \; {\cal NDC}_{ijk} =0$">, where
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
{\cal NDC}_{ijk} = c_{ik}c_{jk} \cdot d_{ij}x_k - x_k d_{ij} +
c_{jk} \cdot x_j d_{ik} - c_{ij} \cdot d_{ik}x_j + d_{jk}x_i
- c_{ij}c_{ik} \cdot x_i d_{jk}.
\end{displaymath}
 -->

<IMG
 WIDTH="555" HEIGHT="29" BORDER="0"
 SRC="sing_227.png"
 ALT="\begin{displaymath}
{\cal NDC}_{ijk} = c_{ik}c_{jk} \cdot d_{ij}x_k - x_k d_{ij}...
...} \cdot d_{ik}x_j + d_{jk}x_i
- c_{ij}c_{ik} \cdot x_i d_{jk}.
\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>|;

$l2h_cache_key = q/Let $A$ be an $m\times n$ matrix with integral coefficients, $b\in
Z\!\!\! Z^m$ and $c\in Z\!\!\! Z^n$. The problem
$$ \min\{c^T x | x\in Z\!\!\! Z^n, Ax=b, x\geq 0\hbox{
component-wise}\} $$
is called an instance of the \bf integer programming problem \rm or
\bf IP problem. \rm

The IP problem is very hard; namely, it is NP-complete.

For the following discussion let $c\geq 0$ (component-wise). We
consider $c$ as a weight vector; because of its nonnegativity, $c$ can
be refined into a monomial ordering $>_c$. It turns out that we can
solve such an IP instance with the help of toric ideals:

First we assume that an initial solution $v$ (i.e., $v\in Z\!\!\!
Z^n, v\geq 0, Av=b$) is already known. We obtain the optimal solution
$v_0$ (i.e., with $c^T v_0$ minimal) by the following procedure:/;
$l2h_cache{$l2h_cache_key} = q|Let <IMG
 WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_187.png"
 ALT="$A$"> be an <IMG
 WIDTH="47" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_67.png"
 ALT="$ m \times n $"> matrix with integral coefficients, <!-- MATH
 $b\in
Z\!\!\! Z^m$
 -->
<IMG
 WIDTH="59" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_687.png"
 ALT="$b\in
Z\!\!\! Z^m$"> and <!-- MATH
 $c\in Z\!\!\! Z^n$
 -->
<IMG
 WIDTH="55" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_688.png"
 ALT="$c\in Z\!\!\! Z^n$">. The problem
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
\min\{c^T x \| x\in Z\!\!\! Z^n, Ax=b, x\geq 0\hbox{
component-wise}\}
\end{displaymath}
 -->

<IMG
 WIDTH="343" HEIGHT="28" BORDER="0"
 SRC="sing_689.png"
 ALT="\begin{displaymath}\min\{c^T x \vert x\in Z\!\!\! Z^n, Ax=b, x\geq 0\hbox{
component-wise}\} \end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
is called an instance of the <B>integer programming problem </B>or
<B>IP problem. </B>
<P>
The IP problem is very hard; namely, it is NP-complete.

<P>
For the following discussion let <IMG
 WIDTH="40" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_690.png"
 ALT="$c\geq 0$"> (component-wise). We
consider <IMG
 WIDTH="11" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_45.png"
 ALT="$c$"> as a weight vector; because of its nonnegativity, <IMG
 WIDTH="11" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_45.png"
 ALT="$c$"> can
be refined into a monomial ordering <IMG
 WIDTH="23" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_691.png"
 ALT="$&gt;_c$">. It turns out that we can
solve such an IP instance with the help of toric ideals:

<P>
First we assume that an initial solution <IMG
 WIDTH="12" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_311.png"
 ALT="$v$"> (i.e., <!-- MATH
 $v\in Z\!\!\!
Z^n, v\geq 0, Av=b$
 -->
<IMG
 WIDTH="156" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_692.png"
 ALT="$v\in Z\!\!\!
Z^n, v\geq 0, Av=b$">) is already known. We obtain the optimal solution
<IMG
 WIDTH="19" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_693.png"
 ALT="$v_0$"> (i.e., with <IMG
 WIDTH="36" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_694.png"
 ALT="$c^T v_0$"> minimal) by the following procedure:|;

$l2h_cache_key = q/Starts a standard basis computation in which elements are freely divided by the generators of J.
Hence returns a standard basis of an ideal between I and the saturation $I:J^\infty$.
In particular, if I is saturated with respect to J, returns a standard basis of I./;
$l2h_cache{$l2h_cache_key} = q|Starts a standard basis computation in which elements are freely divided by the generators of J.
Hence returns a standard basis of an ideal between I and the saturation <IMG
 WIDTH="50" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_935.png"
 ALT="$I:J^\infty$">.
In particular, if I is saturated with respect to J, returns a standard basis of I.|;

$l2h_cache_key = q/nrows($v$)/;
$l2h_cache{$l2h_cache_key} = q|nrows(<IMG
 WIDTH="12" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_311.png"
 ALT="$v$">)|;

$l2h_cache_key = q/$M_i={\tt module}(A_i)$, $i= 1 \ldots k$./;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $M_i={\tt module}(A_i)$
 -->
<IMG
 WIDTH="126" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_134.png"
 ALT="$M_i={\tt module} (A_i)$">, <IMG
 WIDTH="72" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_204.png"
 ALT="$i= 1 \ldots k$">.|;

$l2h_cache_key = q/$\hbox{depth}(\hbox{D}_k(R))\geq m(m+1)\/2 + m-1$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $\hbox{depth}(\hbox{D}_k(R))\geq m(m+1)/2 + m-1$
 -->
<IMG
 WIDTH="266" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_373.png"
 ALT="$\hbox{depth}(\hbox{D}_k(R))\geq m(m+1)/2 + m-1$">|;

$l2h_cache_key = q/$m$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_292.png"
 ALT="$m$">|;

$l2h_cache_key = q/  $(d\times k)$-matrix and $m_{i+1,j}, 0\leq i\leq e, 1\leq j\leq k$,/;
$l2h_cache{$l2h_cache_key} = q|  <IMG
 WIDTH="53" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_107.png"
 ALT="$(d\times k)$">-matrix and <!-- MATH
 $m_{i+1,j}, 0\leq i\leq e, 1\leq j\leq k$
 -->
<IMG
 WIDTH="193" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_108.png"
 ALT="$m_{i+1,j}, 0\leq i\leq e, 1\leq j\leq k$">,|;

$l2h_cache_key = q/(in $(k^n,0)$),/;
$l2h_cache{$l2h_cache_key} = q|(in <IMG
 WIDTH="49" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_406.png"
 ALT="$(k^n,0)$">),|;

$l2h_cache_key = q/Faug\`ere,/;
$l2h_cache{$l2h_cache_key} = q|Faug&#232;re,|;

$l2h_cache_key = q/$$
\hbox{milnor}(f) = \hbox{dim}_K(K[[x_1,\ldots,x_n]]\/\hbox{jacob}(f)),
$$
respectively
$$
\hbox{tjurina}(f) = \hbox{dim}_K(K[[x_1,\ldots,x_n]]\/((f)+\hbox{jacob}(f)))
$$
where/;
$l2h_cache{$l2h_cache_key} = q|<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
\hbox{milnor}(f) = \hbox{dim}_K(K[[x_1,\ldots,x_n]]/\hbox{jacob}(f)),
\end{displaymath}
 -->

<IMG
 WIDTH="311" HEIGHT="28" BORDER="0"
 SRC="sing_391.png"
 ALT="\begin{displaymath}
\hbox{milnor}(f) = \hbox{dim}_K(K[[x_1,\ldots,x_n]]/\hbox{jacob}(f)),
\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
respectively
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
\hbox{tjurina}(f) = \hbox{dim}_K(K[[x_1,\ldots,x_n]]/((f)+\hbox{jacob}(f)))
\end{displaymath}
 -->

<IMG
 WIDTH="362" HEIGHT="28" BORDER="0"
 SRC="sing_392.png"
 ALT="\begin{displaymath}
\hbox{tjurina}(f) = \hbox{dim}_K(K[[x_1,\ldots,x_n]]/((f)+\hbox{jacob}(f)))
\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
where|;

$l2h_cache_key = q/$(k-1)$-st/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="53" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_559.png"
 ALT="$(k-1)$">-st|;

$l2h_cache_key = q/  $(m_{ij})$/;
$l2h_cache{$l2h_cache_key} = q|  <IMG
 WIDTH="42" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_102.png"
 ALT="$(m_{ij})$">|;

$l2h_cache_key = q/D$_k$(R)/;
$l2h_cache{$l2h_cache_key} = q|D<IMG
 WIDTH="12" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_370.png"
 ALT="$_k$">(R)|;

$l2h_cache_key = q/$s$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="12" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_176.png"
 ALT="$s$">|;

$l2h_cache_key = q/$V(\partial f\/\partial x_1,\ldots,\partial f\/\partial x_n)$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $V(\partial f/\partial x_1,\ldots,\partial f/\partial x_n)$
 -->
<IMG
 WIDTH="171" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_403.png"
 ALT="$V(\partial f/\partial x_1,\ldots,\partial f/\partial x_n)$">|;

$l2h_cache_key = q/  $\lambda_i:=Y_i^{q-1}-1=0, 1\le i\le e$, since $y_l\in F_q \setminus\{0\}$./;
$l2h_cache{$l2h_cache_key} = q|  <!-- MATH
 $\lambda_i:=Y_i^{q-1}-1=0, 1\le i\le e$
 -->
<IMG
 WIDTH="207" HEIGHT="37" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_750.png"
 ALT="$\lambda_i:=Y_i^{q-1}-1=0, 1\le i\le e$">, since <!-- MATH
 $y_l\in F_q \setminus\{0\}$
 -->
<IMG
 WIDTH="92" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_751.png"
 ALT="$y_l\in F_q \setminus\{0\}$">.|;

$l2h_cache_key = q/$\{a \in R \mid aJ \subset I\}$,/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $\{a \in R \mid aJ \subset I\}$
 -->
<IMG
 WIDTH="122" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_173.png"
 ALT="$\{a \in R \mid aJ \subset I\}$">,|;

$l2h_cache_key = q/$K=R\/m$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="74" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_364.png"
 ALT="$K=R/m$">|;

$l2h_cache_key = q/$${\rm contract}(x^A ,  x^B) := \cases{ x^{(B-A)}, &if $B\ge A$
componentwise\cr 0,&otherwise.\cr}$$/;
$l2h_cache{$l2h_cache_key} = q|<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
{\rm contract}(x^A ,  x^B) := \cases{ x^{(B-A)}, &if $B\ge A$
componentwise\cr 0,&otherwise.\cr}
\end{displaymath}
 -->

<IMG
 WIDTH="396" HEIGHT="45" BORDER="0"
 SRC="sing_123.png"
 ALT="\begin{displaymath}{\rm contract}(x^A , x^B) := \cases{ x^{(B-A)}, &amp;if $B\ge A$
componentwise\cr 0,&amp;otherwise.\cr}\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>|;

$l2h_cache_key = q/(in $k^n$)/;
$l2h_cache{$l2h_cache_key} = q|(in <IMG
 WIDTH="22" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_405.png"
 ALT="$k^n$">)|;

$l2h_cache_key = q/$g$, $f_1$, \dots, $f_r\in K[x_1,\ldots,x_n]$./;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="12" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_148.png"
 ALT="$g$">, <IMG
 WIDTH="19" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_380.png"
 ALT="$f_1$">, ..., <!-- MATH
 $f_r\in K[x_1,\ldots,x_n]$
 -->
<IMG
 WIDTH="131" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_381.png"
 ALT="$f_r\in K[x_1,\ldots,x_n]$">.|;

$l2h_cache_key = q/$K[x_1,x_2,\ldots,x_r]$,/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $K[x_1,x_2,\ldots,x_r]$
 -->
<IMG
 WIDTH="119" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_150.png"
 ALT="$K[x_1,x_2,\ldots,x_r]$">,|;

$l2h_cache_key = q/$T(V)$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="41" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_300.png"
 ALT="$T(V)$">|;

$l2h_cache_key = q/{\sc Signular}/;
$l2h_cache{$l2h_cache_key} = q|S<SMALL>IGNULAR</SMALL>|;

$l2h_cache_key = q/  $L_C=Z^e+a_{t-1}Z^{e-1}+\dots +a_0$  with $a_j\in F_q[X_1,\dots ,X_{n-k}],\ 0\le j\le e-1$, where $e$ is the error-correcting
  capacity;/;
$l2h_cache{$l2h_cache_key} = q|  <!-- MATH
 $L_C=Z^e+a_{t-1}Z^{e-1}+\dots +a_0$
 -->
<IMG
 WIDTH="224" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_762.png"
 ALT="$L_C=Z^e+a_{t-1}Z^{e-1}+\dots +a_0$"> with <!-- MATH
 $a_j\in F_q[X_1,\dots ,X_{n-k}],\ 0\le j\le e-1$
 -->
<IMG
 WIDTH="264" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_763.png"
 ALT="$a_j\in F_q[X_1,\dots ,X_{n-k}],\ 0\le j\le e-1$">, where <IMG
 WIDTH="12" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_764.png"
 ALT="$e$"> is the error-correcting
  capacity;|;

$l2h_cache_key = q/$I\subset K[x_1,\dots,x_n]$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $I\subset K[x_1,\dots,x_n]$
 -->
<IMG
 WIDTH="127" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_336.png"
 ALT="$I\subset K[x_1,\dots,x_n]$">|;

$l2h_cache_key = q/$ecart(g_i) > ecart(g_j)$./;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $ecart(g_i) > ecart(g_j)$
 -->
<IMG
 WIDTH="149" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_146.png"
 ALT="$ecart(g_i) &gt; ecart(g_j)$">.|;

$l2h_cache_key = q/$K$-algebra operations of the letterplace algebra and simultaneous shifting of places by any natural number $n$./;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="19" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_48.png"
 ALT="$K$">-algebra operations of the letterplace algebra and simultaneous shifting of places by any natural number <IMG
 WIDTH="14" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_17.png"
 ALT="$n$">.|;

$l2h_cache_key = q/H.\ Sch\"onemann; Humboldt-Universit\"at/;
$l2h_cache{$l2h_cache_key} = q|H. Sch&#246;nemann; Humboldt-Universit&#228;t|;

$l2h_cache_key = q/ Let $T = (K^*)^r$ be the $r$-dimensional torus acting on the polynomial ring
 $R = K[X_1 ,\ldots,X_n]$ diagonally. Such an action can be described as
 follows: there are integers $a_{i,j}$, $i=1,\ldots,r$, $j=1,\ldots,n$, such
 that $(\lambda_1,\ldots,\lambda_r)\in T$ acts by the substitution
$$ X_j \mapsto \lambda_1^{a_{1,j}} \cdots \lambda_r^{a_{r,j}}X_j,
   \quad j=1,\ldots,n.$$
In order to compute the ring of invariants $R^T$ one must specify the matrix
$A=(a_{i,j})$./;
$l2h_cache{$l2h_cache_key} = q| Let <IMG
 WIDTH="78" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_895.png"
 ALT="$T = (K^*)^r$"> be the <IMG
 WIDTH="12" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_296.png"
 ALT="$r$">-dimensional torus acting on the polynomial ring
 <!-- MATH
 $R = K[X_1 ,\ldots,X_n]$
 -->
<IMG
 WIDTH="139" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_896.png"
 ALT="$R = K[X_1 ,\ldots,X_n]$"> diagonally. Such an action can be described as
 follows: there are integers <IMG
 WIDTH="27" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_897.png"
 ALT="$a_{i,j}$">, <IMG
 WIDTH="82" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_898.png"
 ALT="$i=1,\ldots,r$">, <IMG
 WIDTH="86" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_899.png"
 ALT="$j=1,\ldots,n$">, such
 that <!-- MATH
 $(\lambda_1,\ldots,\lambda_r)\in T$
 -->
<IMG
 WIDTH="116" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_900.png"
 ALT="$(\lambda_1,\ldots,\lambda_r)\in T$"> acts by the substitution
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
X_j \mapsto \lambda_1^{a_{1,j}} \cdots \lambda_r^{a_{r,j}}X_j,
   \quad j=1,\ldots,n.
\end{displaymath}
 -->

<IMG
 WIDTH="260" HEIGHT="29" BORDER="0"
 SRC="sing_901.png"
 ALT="\begin{displaymath}X_j \mapsto \lambda_1^{a_{1,j}} \cdots \lambda_r^{a_{r,j}}X_j,
\quad j=1,\ldots,n.\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
In order to compute the ring of invariants <IMG
 WIDTH="26" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_894.png"
 ALT="$R^T$"> one must specify the matrix
<IMG
 WIDTH="73" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_902.png"
 ALT="$A=(a_{i,j})$">.|;

$l2h_cache_key = q/  Let $C$ be the binary $[n,k,d]$ cyclic code with the defining set $S_C=\{i_1,\dots,i_v\}$. Let $1\le w\le n$ and let $J_C(w)$ denote the system:
  $$
  Z_1^{i_1}+\dots+Z_w^{i_1}=0,
  $$
  $$
  \vdots
  $$
  $$
  Z_1^{i_v}+\dots+Z_w^{i_v}=0,
  $$
  $$
  Z_1^n-1=0,
  $$
  $$
  \vdots
  $$
  $$
  Z_w^n-1=0,
  $$
  $$
  p(n,Z_i,Z_j)=0, 1\le i<j\le w.
  $$/;
$l2h_cache{$l2h_cache_key} = q|  Let <IMG
 WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_77.png"
 ALT="$C$"> be the binary <IMG
 WIDTH="54" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_702.png"
 ALT="$[n,k,d]$"> cyclic code with the defining set <!-- MATH
 $S_C=\{i_1,\dots,i_v\}$
 -->
<IMG
 WIDTH="123" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_775.png"
 ALT="$S_C=\{i_1,\dots,i_v\}$">. Let <IMG
 WIDTH="76" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_776.png"
 ALT="$1\le w\le n$"> and let <IMG
 WIDTH="48" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_777.png"
 ALT="$J_C(w)$"> denote the system:
  <BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
Z_1^{i_1}+\dots+Z_w^{i_1}=0,
\end{displaymath}
 -->

<IMG
 WIDTH="136" HEIGHT="28" BORDER="0"
 SRC="sing_778.png"
 ALT="\begin{displaymath}
Z_1^{i_1}+\dots+Z_w^{i_1}=0,
\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
  <BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
\vdots
\end{displaymath}
 -->

<IMG
 WIDTH="2" HEIGHT="31" BORDER="0"
 SRC="sing_779.png"
 ALT="\begin{displaymath}
\vdots
\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
  <BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
Z_1^{i_v}+\dots+Z_w^{i_v}=0,
\end{displaymath}
 -->

<IMG
 WIDTH="138" HEIGHT="28" BORDER="0"
 SRC="sing_780.png"
 ALT="\begin{displaymath}
Z_1^{i_v}+\dots+Z_w^{i_v}=0,
\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
  <BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
Z_1^n-1=0,
\end{displaymath}
 -->

<IMG
 WIDTH="80" HEIGHT="28" BORDER="0"
 SRC="sing_781.png"
 ALT="\begin{displaymath}
Z_1^n-1=0,
\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
  <BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
\vdots
\end{displaymath}
 -->

<IMG
 WIDTH="2" HEIGHT="31" BORDER="0"
 SRC="sing_779.png"
 ALT="\begin{displaymath}
\vdots
\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
  <BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
Z_w^n-1=0,
\end{displaymath}
 -->

<IMG
 WIDTH="80" HEIGHT="28" BORDER="0"
 SRC="sing_782.png"
 ALT="\begin{displaymath}
Z_w^n-1=0,
\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
  <BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
p(n,Z_i,Z_j)=0, 1\le i<j\le w.
\end{displaymath}
 -->

<IMG
 WIDTH="215" HEIGHT="29" BORDER="0"
 SRC="sing_783.png"
 ALT="\begin{displaymath}
p(n,Z_i,Z_j)=0, 1\le i&lt;j\le w.
\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>|;

$l2h_cache_key = q/$g$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="12" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_148.png"
 ALT="$g$">|;

$l2h_cache_key = q/    $$\deg(x^\alpha) < \deg(x^\beta) \Rightarrow x^\alpha < x^\beta,$$/;
$l2h_cache{$l2h_cache_key} = q|    <BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
\deg(x^\alpha) < \deg(x^\beta) \Rightarrow x^\alpha < x^\beta,
\end{displaymath}
 -->

<IMG
 WIDTH="216" HEIGHT="28" BORDER="0"
 SRC="sing_520.png"
 ALT="\begin{displaymath}\deg(x^\alpha) &lt; \deg(x^\beta) \Rightarrow x^\alpha &lt; x^\beta,\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>|;

$l2h_cache_key = q/$\hbox{Ext}^1(m,m)$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $\hbox{Ext}^1(m,m)$
 -->
<IMG
 WIDTH="84" HEIGHT="36" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_367.png"
 ALT="$\hbox{Ext}^1(m,m)$">|;

$l2h_cache_key = q/Let $A$ be a $G$-algebra. Then/;
$l2h_cache{$l2h_cache_key} = q|Let <IMG
 WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_187.png"
 ALT="$A$"> be a <IMG
 WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_186.png"
 ALT="$G$">-algebra. Then|;

$l2h_cache_key = q/$n=0$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="43" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_18.png"
 ALT="$n=0$">|;

$l2h_cache_key = q/$\deg(x^\alpha) = w_1 \alpha_1 + \cdots + w_n\alpha_n.$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $\deg(x^\alpha) = w_1 \alpha_1 + \cdots + w_n\alpha_n.$
 -->
<IMG
 WIDTH="217" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_459.png"
 ALT="$\deg(x^\alpha) = w_1 \alpha_1 + \cdots + w_n\alpha_n.$">|;

$l2h_cache_key = q/$i_{1,1}$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="27" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_71.png"
 ALT="$i_{1,1}$">|;

$l2h_cache_key = q/    \phantom{ $ x^\alpha < x^\beta \Leftrightarrow$}$ \deg(x^\alpha) =
    \deg(x^\beta)$ and $\exists\ 1 \le i \le n:\alpha_1 = \beta_1,
    \ldots, \alpha_{i-1} = \beta_{i-1}, \alpha_i < \beta_i.$/;
$l2h_cache{$l2h_cache_key} = q|    <!-- MATH
 $\deg(x^\alpha) =
    \deg(x^\beta)$
 -->
<IMG
 WIDTH="134" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_454.png"
 ALT="$ \deg(x^\alpha) =
\deg(x^\beta)$"> and <!-- MATH
 $\exists\ 1 \le i \le n:\alpha_1 = \beta_1,
    \ldots, \alpha_{i-1} = \beta_{i-1}, \alpha_i < \beta_i.$
 -->
<IMG
 WIDTH="333" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_456.png"
 ALT="$\exists\ 1 \le i \le n:\alpha_1 = \beta_1,
\ldots, \alpha_{i-1} = \beta_{i-1}, \alpha_i &lt; \beta_i.$">|;

$l2h_cache_key = q/ Loc $K[x]^r$/;
$l2h_cache{$l2h_cache_key} = q| Loc <IMG
 WIDTH="44" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_469.png"
 ALT="$K[x]^r$">|;

$l2h_cache_key = q/Let $R = \hbox{Loc}_< K[\underline{x}]$ and let $I$ be a submodule of $R^r$.
Note that for r=1 this means that $I$ is an ideal in $R$.
Denote by $L(I)$ the submodule of $R^r$ generated by the leading terms
of elements of $I$, i.e. by $\left\{L(f) \mid f \in I\right\}$.
Then $f_1, \ldots, f_s \in I$ is called a {\bf standard basis} of $I$
if $L(f_1), \ldots, L(f_s)$ generate $L(I)$.
A standard basis is {\bf minimal} if $\forall i: (f_1,..,f_{i-1},f_{i+1},..,f_s) \neq I$.
A minimal stadard basis is {\bf completely reduced} if $\forall i: {\tt reduce}(f_i,(f_1,..,f_{i-1},f_{i+1},..,f_s)=f_i$/;
$l2h_cache{$l2h_cache_key} = q|Let <!-- MATH
 $R = \hbox{Loc}_< K[\underline{x}]$
 -->
<IMG
 WIDTH="106" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_946.png"
 ALT="$R = \hbox{Loc}_&lt; K[\underline{x}]$"> and let <IMG
 WIDTH="12" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_947.png"
 ALT="$I$"> be a submodule of <IMG
 WIDTH="23" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_948.png"
 ALT="$R^r$">.
Note that for r=1 this means that <IMG
 WIDTH="12" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_947.png"
 ALT="$I$"> is an ideal in <IMG
 WIDTH="16" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_949.png"
 ALT="$R$">.
Denote by <IMG
 WIDTH="36" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_950.png"
 ALT="$L(I)$"> the submodule of <IMG
 WIDTH="23" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_948.png"
 ALT="$R^r$"> generated by the leading terms
of elements of <IMG
 WIDTH="12" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_947.png"
 ALT="$I$">, i.e. by <!-- MATH
 $\left\{L(f) \mid f \in I\right\}$
 -->
<IMG
 WIDTH="103" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_951.png"
 ALT="$\left\{L(f) \mid f \in I\right\}$">.
Then <!-- MATH
 $f_1, \ldots, f_s \in I$
 -->
<IMG
 WIDTH="97" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_952.png"
 ALT="$f_1, \ldots, f_s \in I$"> is called a <B>standard basis</B> of <IMG
 WIDTH="12" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_947.png"
 ALT="$I$">
if <!-- MATH
 $L(f_1), \ldots, L(f_s)$
 -->
<IMG
 WIDTH="115" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_953.png"
 ALT="$L(f_1), \ldots, L(f_s)$"> generate <IMG
 WIDTH="36" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_950.png"
 ALT="$L(I)$">.
A standard basis is <B>minimal</B> if <!-- MATH
 $\forall i: (f_1,..,f_{i-1},f_{i+1},..,f_s) \neq I$
 -->
<IMG
 WIDTH="215" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_954.png"
 ALT="$\forall i: (f_1,..,f_{i-1},f_{i+1},..,f_s) \neq I$">.
A minimal stadard basis is <B>completely reduced</B> if <!-- MATH
 $\forall i: {\tt reduce}(f_i,(f_1,..,f_{i-1},f_{i+1},..,f_s)=f_i$
 -->
<IMG
 WIDTH="296" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_955.png"
 ALT="$\forall i: {\tt reduce}(f_i,(f_1,..,f_{i-1},f_{i+1},..,f_s)=f_i$">|;

$l2h_cache_key = q/  Let ${\bf b}_1,\dots,{\bf b}_n$ be a basis of $F_q^n$ and let $B$ be the $n \times n$ matrix with
  ${\bf b}_1,\dots,{\bf b}_n$ as rows. The {\bf unknown syndrome} ${\bf u}(B,{\bf e})$ of a word ${\bf e}$ w.r.t $B$
  is the column vector ${\bf u}(B,{\bf e})=B{\bf e}^T$ with entries $u_i(B,{\bf e})={\bf b}_i\cdot {\bf e}$ for $i=1,\dots,n$.

  For two vectors ${\bf x,y} \in F_q^n$ define
  ${\bf x*y}=(x_1y_1,\dots,x_ny_n)$. Then ${\bf b}_i*{\bf b_j}$ is a linear combination of
  ${\bf b}_1,\dots,{\bf b}_n$, so there are constants $\mu^{ij}_l\in F_q $ such that
  ${\bf b}_i*{\bf b}_j = \sum_{l=1}^n \mu^{ij}_l{\bf b}_l.$
  The elements $\mu^{ij}_l\in F_q$ are the {\bf structure constants} of the basis ${\bf b}_1,\dots,{\bf b}_n$.

  Let $B_s$ be the $s \times n$ matrix with ${\bf b}_1,\dots,{\bf b}_s$ as rows ($B=B_n$).
  Then ${\bf b}_1,\dots,{\bf b}_n$ is an {\bf ordered MDS basis} and $B$ an {\bf MDS matrix} if all
  the $s\times s$ submatrices of $B_s$ have rank $s$ for all $s=1 ,\dots ,n$./;
$l2h_cache{$l2h_cache_key} = q|  Let <!-- MATH
 ${\bf b}_1,\dots,{\bf b}_n$
 -->
<IMG
 WIDTH="76" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_840.png"
 ALT="${\bf b}_1,\dots,{\bf b}_n$"> be a basis of <IMG
 WIDTH="25" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_698.png"
 ALT="$F_q^n$"> and let <IMG
 WIDTH="17" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_192.png"
 ALT="$B$"> be the <IMG
 WIDTH="43" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_231.png"
 ALT="$n\times n$"> matrix with
  <!-- MATH
 ${\bf b}_1,\dots,{\bf b}_n$
 -->
<IMG
 WIDTH="76" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_840.png"
 ALT="${\bf b}_1,\dots,{\bf b}_n$"> as rows. The <B>unknown syndrome</B> <!-- MATH
 ${\bf u}(B,{\bf e})$
 -->
<IMG
 WIDTH="55" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_841.png"
 ALT="${\bf u}(B,{\bf e})$"> of a word <IMG
 WIDTH="13" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_733.png"
 ALT="${\bf e}$"> w.r.t <IMG
 WIDTH="17" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_192.png"
 ALT="$B$">
  is the column vector <!-- MATH
 ${\bf u}(B,{\bf e})=B{\bf e}^T$
 -->
<IMG
 WIDTH="108" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_842.png"
 ALT="${\bf u}(B,{\bf e})=B{\bf e}^T$"> with entries <!-- MATH
 $u_i(B,{\bf e})={\bf b}_i\cdot {\bf e}$
 -->
<IMG
 WIDTH="116" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_843.png"
 ALT="$u_i(B,{\bf e})={\bf b}_i\cdot {\bf e}$"> for <IMG
 WIDTH="84" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_844.png"
 ALT="$i=1,\dots,n$">.

<P>
For two vectors <!-- MATH
 ${\bf x,y} \in F_q^n$
 -->
<IMG
 WIDTH="71" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_845.png"
 ALT="${\bf x,y} \in F_q^n$"> define
  <!-- MATH
 ${\bf x*y}=(x_1y_1,\dots,x_ny_n)$
 -->
<IMG
 WIDTH="173" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_846.png"
 ALT="${\bf x*y}=(x_1y_1,\dots,x_ny_n)$">. Then <!-- MATH
 ${\bf b}_i*{\bf b_j}$
 -->
<IMG
 WIDTH="50" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_847.png"
 ALT="${\bf b}_i*{\bf b_j}$"> is a linear combination of
  <!-- MATH
 ${\bf b}_1,\dots,{\bf b}_n$
 -->
<IMG
 WIDTH="76" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_840.png"
 ALT="${\bf b}_1,\dots,{\bf b}_n$">, so there are constants <!-- MATH
 $\mu^{ij}_l\in F_q$
 -->
<IMG
 WIDTH="62" HEIGHT="38" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_848.png"
 ALT="$\mu^{ij}_l\in F_q $"> such that
  <!-- MATH
 ${\bf b}_i*{\bf b}_j = \sum_{l=1}^n \mu^{ij}_l{\bf b}_l.$
 -->
<IMG
 WIDTH="153" HEIGHT="38" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_849.png"
 ALT="${\bf b}_i*{\bf b}_j = \sum_{l=1}^n \mu^{ij}_l{\bf b}_l.$">
  The elements <!-- MATH
 $\mu^{ij}_l\in F_q$
 -->
<IMG
 WIDTH="62" HEIGHT="38" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_848.png"
 ALT="$\mu^{ij}_l\in F_q $"> are the <B>structure constants</B> of the basis <!-- MATH
 ${\bf b}_1,\dots,{\bf b}_n$
 -->
<IMG
 WIDTH="76" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_840.png"
 ALT="${\bf b}_1,\dots,{\bf b}_n$">.

<P>
Let <IMG
 WIDTH="23" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_850.png"
 ALT="$B_s$"> be the <IMG
 WIDTH="41" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_851.png"
 ALT="$s \times n$"> matrix with <!-- MATH
 ${\bf b}_1,\dots,{\bf b}_s$
 -->
<IMG
 WIDTH="74" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_852.png"
 ALT="${\bf b}_1,\dots,{\bf b}_s$"> as rows (<IMG
 WIDTH="59" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_853.png"
 ALT="$B=B_n$">).
  Then <!-- MATH
 ${\bf b}_1,\dots,{\bf b}_n$
 -->
<IMG
 WIDTH="76" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_840.png"
 ALT="${\bf b}_1,\dots,{\bf b}_n$"> is an <B>ordered MDS basis</B> and <IMG
 WIDTH="17" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_192.png"
 ALT="$B$"> an <B>MDS matrix</B> if all
  the <IMG
 WIDTH="39" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_854.png"
 ALT="$s\times s$"> submatrices of <IMG
 WIDTH="23" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_850.png"
 ALT="$B_s$"> have rank <IMG
 WIDTH="12" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_176.png"
 ALT="$s$"> for all <IMG
 WIDTH="86" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_855.png"
 ALT="$s=1 ,\dots ,n$">.|;

$l2h_cache_key = q/$m > 0$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="47" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_294.png"
 ALT="$m &gt; 0$">|;

$l2h_cache_key = q/$\overline{H_1}: R^k \rightarrow R^l\/Im(H_2)=R^l\/h_2$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $\overline{H_1}: R^k \rightarrow R^l/Im(H_2)=R^l/h_2$
 -->
<IMG
 WIDTH="225" HEIGHT="35" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_162.png"
 ALT="$\overline{H_1}: R^k \rightarrow R^l/Im(H_2)=R^l/h_2$">|;

$l2h_cache_key = q/represents $h_1\/(h_1 \cap h_2) \cong (h_1+h_2)\/h_2$/;
$l2h_cache{$l2h_cache_key} = q|represents <!-- MATH
 $h_1/(h_1 \cap h_2) \cong (h_1+h_2)/h_2$
 -->
<IMG
 WIDTH="201" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_153.png"
 ALT="$h_1/(h_1 \cap h_2) \cong (h_1+h_2)/h_2$">|;

$l2h_cache_key = q/let $w_1, \ldots, w_n$ be positive integers. Then ${\tt wp}(w_1, \ldots,
w_n)$/;
$l2h_cache{$l2h_cache_key} = q|let <!-- MATH
 $w_1, \ldots, w_n$
 -->
<IMG
 WIDTH="78" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_457.png"
 ALT="$w_1, \ldots, w_n$"> be positive integers. Then <!-- MATH
 ${\tt wp}(w_1, \ldots,
w_n)$
 -->
<IMG
 WIDTH="107" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_458.png"
 ALT="${\tt wp}(w_1, \ldots,
w_n)$">|;

$l2h_cache_key = q/$coker(A_1)=F_0\/M$
$$...\longrightarrow F_2 \buildrel{A_2}\over{\longrightarrow} F_1 \buildrel{A_1}\over{\longrightarrow} F_0\longrightarrow F_0\/M\longrightarrow 0.$$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $coker(A_1)=F_0/M$
 -->
<IMG
 WIDTH="137" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_168.png"
 ALT="$coker(A_1)=F_0/M$">
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
...\longrightarrow F_2 \buildrel{A_2}\over{\longrightarrow} F_1 \buildrel{A_1}\over{\longrightarrow} F_0\longrightarrow F_0/M\longrightarrow 0.
\end{displaymath}
 -->

<IMG
 WIDTH="289" HEIGHT="28" BORDER="0"
 SRC="sing_179.png"
 ALT="\begin{displaymath}...\longrightarrow F_2 \buildrel{A_2}\over{\longrightarrow} F...
...ver{\longrightarrow} F_0\longrightarrow F_0/M\longrightarrow 0.\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>|;

$l2h_cache_key = q/$M_i={\tt module}(A_i)$, i=1...k./;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $M_i={\tt module}(A_i)$
 -->
<IMG
 WIDTH="126" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_134.png"
 ALT="$M_i={\tt module} (A_i)$">, i=1...k.|;

$l2h_cache_key = q/$x_i>1$ then $x_i$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="48" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_126.png"
 ALT="$x_i&gt;1$"> then <IMG
 WIDTH="18" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_125.png"
 ALT="$x_i$">|;

$l2h_cache_key = q/Let $<$ be the lexicographical ordering on $R=K[x_1,...,x_n]$ with $x_1
< ... < x_n$.
For $f \in R$ let lvar($f$) (the leading variable of $f$) be the largest
variable in $f$,
i.e., if $f=a_s(x_1,...,x_{k-1})x_k^s+...+a_0(x_1,...,x_{k-1})$ for some
$k \leq n$ then lvar$(f)=x_k$.

Moreover, let
\hbox{ini}$(f):=a_s(x_1,...,x_{k-1})$. The pseudoremainder
$r=\hbox{prem}(g,f)$ of $g$ with respect to $f$ is
defined by the equality $\hbox{ini}(f)^a\cdot g = qf+r$ with
$\hbox{deg}_{lvar(f)}(r)<\hbox{deg}_{lvar(f)}(f)$ and $a$
minimal.

A set $T=\{f_1,...,f_r\} \subset R$ is called triangular if
$\hbox{lvar}(f_1)<...<\hbox{lvar}(f_r)$. Moreover, let $ U \subset T $,
then $(T,U)$ is called a triangular system, if $T$ is a triangular set
such that $\hbox{ini}(T)$ does not vanish on $V(T) \setminus V(U)
(=:V(T\setminus U))$.

$T$ is called irreducible if for every $i$ there are no
$d_i$,$f_i'$,$f_i''$ such that
$$   \hbox{lvar}(d_i)<\hbox{lvar}(f_i) =
\hbox{lvar}(f_i')=\hbox{lvar}(f_i''),$$
$$   0 \not\in \hbox{prem}(\{ d_i, \hbox{ini}(f_i'),
\hbox{ini}(f_i'')\},\{ f_1,...,f_{i-1}\}),$$
$$\hbox{prem}(d_if_i-f_i'f_i'',\{f_1,...,f_{i-1}\})=0.$$
Furthermore, $(T,U)$ is called irreducible if $T$ is irreducible.

The main result on triangular sets is the following: Let
$G=\{g_1,...,g_s\} \subset R$, then there are irreducible triangular sets $T_1,...,T_l$
such that $V(G)=\bigcup_{i=1}^{l}(V(T_i\setminus I_i))$
where $I_i=\{\hbox{ini}(f) \mid f \in T_i \}$. Such a set
$\{T_1,...,T_l\}$ is called an {\bf irreducible characteristic series} of
the ideal $(G)$./;
$l2h_cache{$l2h_cache_key} = q|Let <IMG
 WIDTH="17" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_223.png"
 ALT="$&lt;$"> be the lexicographical ordering on <!-- MATH
 $R=K[x_1,...,x_n]$
 -->
<IMG
 WIDTH="123" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_571.png"
 ALT="$R=K[x_1,...,x_n]$"> with <!-- MATH
 $x_1
< ... < x_n$
 -->
<IMG
 WIDTH="94" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_572.png"
 ALT="$x_1
&lt; ... &lt; x_n$">.
For <IMG
 WIDTH="45" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_573.png"
 ALT="$f \in R$"> let lvar(<IMG
 WIDTH="14" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_262.png"
 ALT="$f$">) (the leading variable of <IMG
 WIDTH="14" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_262.png"
 ALT="$f$">) be the largest
variable in <IMG
 WIDTH="14" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_262.png"
 ALT="$f$">,
i.e., if <!-- MATH
 $f=a_s(x_1,...,x_{k-1})x_k^s+...+a_0(x_1,...,x_{k-1})$
 -->
<IMG
 WIDTH="313" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_574.png"
 ALT="$f=a_s(x_1,...,x_{k-1})x_k^s+...+a_0(x_1,...,x_{k-1})$"> for some
<IMG
 WIDTH="44" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_575.png"
 ALT="$k \leq n$"> then lvar<IMG
 WIDTH="64" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_576.png"
 ALT="$(f)=x_k$">.

<P>
Moreover, let
ini<!-- MATH
 $(f):=a_s(x_1,...,x_{k-1})$
 -->
<IMG
 WIDTH="156" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_577.png"
 ALT="$(f):=a_s(x_1,...,x_{k-1})$">. The pseudoremainder
<!-- MATH
 $r=\hbox{prem}(g,f)$
 -->
<IMG
 WIDTH="105" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_578.png"
 ALT="$r=\hbox{prem}(g,f)$"> of <IMG
 WIDTH="12" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_148.png"
 ALT="$g$"> with respect to <IMG
 WIDTH="14" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_262.png"
 ALT="$f$"> is
defined by the equality <!-- MATH
 $\hbox{ini}(f)^a\cdot g = qf+r$
 -->
<IMG
 WIDTH="137" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_579.png"
 ALT="$\hbox{ini}(f)^a\cdot g = qf+r$"> with
<!-- MATH
 $\hbox{deg}_{lvar(f)}(r)<\hbox{deg}_{lvar(f)}(f)$
 -->
<IMG
 WIDTH="199" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_580.png"
 ALT="$\hbox{deg}_{lvar(f)}(r)&lt;\hbox{deg}_{lvar(f)}(f)$"> and <IMG
 WIDTH="13" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_4.png"
 ALT="$a$">
minimal.

<P>
A set <!-- MATH
 $T=\{f_1,...,f_r\} \subset R$
 -->
<IMG
 WIDTH="143" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_581.png"
 ALT="$T=\{f_1,...,f_r\} \subset R$"> is called triangular if
<!-- MATH
 $\hbox{lvar}(f_1)<...<\hbox{lvar}(f_r)$
 -->
<IMG
 WIDTH="167" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_582.png"
 ALT="$\hbox{lvar}(f_1)&lt;...&lt;\hbox{lvar}(f_r)$">. Moreover, let <IMG
 WIDTH="50" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_583.png"
 ALT="$ U \subset T $">,
then <IMG
 WIDTH="47" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_584.png"
 ALT="$(T,U)$"> is called a triangular system, if <IMG
 WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_319.png"
 ALT="$T$"> is a triangular set
such that <IMG
 WIDTH="46" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_585.png"
 ALT="$\hbox{ini}(T)$"> does not vanish on <!-- MATH
 $V(T) \setminus V(U)
(=:V(T\setminus U))$
 -->
<IMG
 WIDTH="192" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_586.png"
 ALT="$V(T) \setminus V(U)
(=:V(T\setminus U))$">.

<P>
<IMG
 WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_319.png"
 ALT="$T$"> is called irreducible if for every <IMG
 WIDTH="10" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_55.png"
 ALT="$i$"> there are no
<IMG
 WIDTH="18" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_587.png"
 ALT="$d_i$">,<IMG
 WIDTH="18" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_588.png"
 ALT="$f_i'$">,<IMG
 WIDTH="22" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_589.png"
 ALT="$f_i''$"> such that
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
\hbox{lvar}(d_i)<\hbox{lvar}(f_i) =
\hbox{lvar}(f_i')=\hbox{lvar}(f_i''),
\end{displaymath}
 -->

<IMG
 WIDTH="280" HEIGHT="28" BORDER="0"
 SRC="sing_590.png"
 ALT="\begin{displaymath}\hbox{lvar}(d_i)&lt;\hbox{lvar}(f_i) =
\hbox{lvar}(f_i')=\hbox{lvar}(f_i''),\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
0 \not\in \hbox{prem}(\{ d_i, \hbox{ini}(f_i'),
\hbox{ini}(f_i'')\},\{ f_1,...,f_{i-1}\}),
\end{displaymath}
 -->

<IMG
 WIDTH="309" HEIGHT="28" BORDER="0"
 SRC="sing_591.png"
 ALT="\begin{displaymath}0 \not\in \hbox{prem}(\{ d_i, \hbox{ini}(f_i'),
\hbox{ini}(f_i'')\},\{ f_1,...,f_{i-1}\}),\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
\hbox{prem}(d_if_i-f_i'f_i'',\{f_1,...,f_{i-1}\})=0.
\end{displaymath}
 -->

<IMG
 WIDTH="252" HEIGHT="28" BORDER="0"
 SRC="sing_592.png"
 ALT="\begin{displaymath}\hbox{prem}(d_if_i-f_i'f_i'',\{f_1,...,f_{i-1}\})=0.\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
Furthermore, <IMG
 WIDTH="47" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_584.png"
 ALT="$(T,U)$"> is called irreducible if <IMG
 WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_319.png"
 ALT="$T$"> is irreducible.

<P>
The main result on triangular sets is the following: Let
<!-- MATH
 $G=\{g_1,...,g_s\} \subset R$
 -->
<IMG
 WIDTH="144" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_593.png"
 ALT="$G=\{g_1,...,g_s\} \subset R$">, then there are irreducible triangular sets <IMG
 WIDTH="62" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_594.png"
 ALT="$T_1,...,T_l$">
such that <!-- MATH
 $V(G)=\bigcup_{i=1}^{l}(V(T_i\setminus I_i))$
 -->
<IMG
 WIDTH="177" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_595.png"
 ALT="$V(G)=\bigcup_{i=1}^{l}(V(T_i\setminus I_i))$">
where <!-- MATH
 $I_i=\{\hbox{ini}(f) \mid f \in T_i \}$
 -->
<IMG
 WIDTH="150" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_596.png"
 ALT="$I_i=\{\hbox{ini}(f) \mid f \in T_i \}$">. Such a set
<!-- MATH
 $\{T_1,...,T_l\}$
 -->
<IMG
 WIDTH="78" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_597.png"
 ALT="$\{T_1,...,T_l\}$"> is called an <B>irreducible characteristic series</B> of
the ideal <IMG
 WIDTH="29" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_598.png"
 ALT="$(G)$">.|;

$l2h_cache_key = q/A function $\hbox{NF} : R^r \times \{G \mid G\ \hbox{ a standard
basis}\} \to R^r, (p,G) \mapsto \hbox{NF}(p|G)$, is called a {\bf normal
form} if for any $p \in R^r$ and any standard basis $G$ the following
holds: if $\hbox{NF}(p|G) \not= 0$ then $L(g)$ does not divide
$L(\hbox{NF}(p|G))$ for all $g \in G$.
(Note that such a function is not unique).

\noindent
$\hbox{NF}(p|G)$ is called a {\bf normal form of} $p$ {\bf with
respect to} $G$/;
$l2h_cache{$l2h_cache_key} = q|A function <!-- MATH
 $\hbox{NF} : R^r \times \{G \mid G\ \hbox{ a standard
basis}\} \to R^r, (p,G) \mapsto \hbox{NF}(p\|G)$
 -->
<IMG
 WIDTH="432" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_528.png"
 ALT="$\hbox{NF} : R^r \times \{G \mid G\ \hbox{ a standard
basis}\} \to R^r, (p,G) \mapsto \hbox{NF}(p\vert G)$">, is called a <B>normal
form</B> if for any <IMG
 WIDTH="51" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_529.png"
 ALT="$p \in R^r$"> and any standard basis <IMG
 WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_186.png"
 ALT="$G$"> the following
holds: if <!-- MATH
 $\hbox{NF}(p\|G) \not= 0$
 -->
<IMG
 WIDTH="93" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_530.png"
 ALT="$\hbox{NF}(p\vert G) \not= 0$"> then <IMG
 WIDTH="36" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_147.png"
 ALT="$L(g)$"> does not divide
<!-- MATH
 $L(\hbox{NF}(p\|G))$
 -->
<IMG
 WIDTH="87" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_531.png"
 ALT="$L(\hbox{NF}(p\vert G))$"> for all <IMG
 WIDTH="44" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_251.png"
 ALT="$g\in G$">.
(Note that such a function is not unique).

<P>

<!-- MATH
 $\hbox{NF}(p\|G)$
 -->
<IMG
 WIDTH="64" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_532.png"
 ALT="$\hbox{NF}(p\vert G)$"> is called a <B>normal form of</B> <IMG
 WIDTH="12" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_23.png"
 ALT="$p$"> <B>with
respect to</B> <IMG
 WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_186.png"
 ALT="$G$">|;

$l2h_cache_key = q/$d$ in row $i$ and column $j$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="13" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_170.png"
 ALT="$d$"> in row <IMG
 WIDTH="10" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_55.png"
 ALT="$i$"> and column <IMG
 WIDTH="12" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_53.png"
 ALT="$j$">|;

$l2h_cache_key = q/$Z\/m$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="37" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_28.png"
 ALT="$Z/m$">|;

$l2h_cache_key = q/$R\/I$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="33" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_374.png"
 ALT="$R/I$">|;

$l2h_cache_key = q/The output of a vector $v$ in $K[x]^r$ with components $v_1,
\ldots, v_r$ has the format $v_1 * gen(1) + \ldots + v_r * gen(r)$/;
$l2h_cache{$l2h_cache_key} = q|The output of a vector <IMG
 WIDTH="12" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_311.png"
 ALT="$v$"> in <IMG
 WIDTH="44" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_469.png"
 ALT="$K[x]^r$"> with components <!-- MATH
 $v_1,
\ldots, v_r$
 -->
<IMG
 WIDTH="69" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_485.png"
 ALT="$v_1,
\ldots, v_r$"> has the format <!-- MATH
 $v_1 * gen(1) + \ldots + v_r * gen(r)$
 -->
<IMG
 WIDTH="212" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_486.png"
 ALT="$v_1 * gen(1) + \ldots + v_r * gen(r)$">|;

$l2h_cache_key = q/\quad/;
$l2h_cache{$l2h_cache_key} = q|&nbsp;&nbsp;&nbsp;&nbsp;|;

$l2h_cache_key = q/Let $f\colon(C^{n+1},0)\rightarrow(C,0)$ be a complex isolated hypersurface singularity given by a polynomial with algebraic coefficients which we also denote by $f$.
Let $O=C[x_0,\ldots,x_n]_{(x_0,\ldots,x_n)}$ be the local ring at the origin and $J_f$ the Jacobian ideal of $f$.

A {\bf Milnor representative} of $f$ defines a differentiable fibre bundle over the punctured disc with fibres of homotopy type of $\mu$ $n$-spheres.
The $n$-th cohomology bundle is a flat vector bundle of dimension $n$ and carries a natural flat connection with covariant derivative $\partial_t$.
The {\bf monodromy operator} is the action of a positively oriented generator of the fundamental group of the punctured disc on the Milnor fibre.
Sections in the cohomology bundle of {\bf moderate growth} at $0$ form a regular $D=C\{t\}[\partial_t]$-module $G$, the {\bf Gauss-Manin connection}.

By integrating along flat multivalued families of cycles, one can consider fibrewise global holomorphic differential forms as elements of $G$.
This factors through an inclusion of the {\bf Brieskorn lattice} $H'':=\Omega^{n+1}_{C^{n+1},0}\/df\wedge d\Omega^{n-1}_{C^{n+1},0}$ in $G$.

The $D$-module structure defines the {\bf V-filtration} $V$ on $G$ by $V^\alpha:=\sum_{\beta\ge\alpha}C\{t\}ker(t\partial_t-\beta)^{n+1}$.
The Brieskorn lattice defines the {\bf Hodge filtration} $F$ on $G$ by $F_k=\partial_t^kH''$ which comes from the {\bf mixed Hodge structure} on the Milnor fibre.
Note that $F_{-1}=H'$.

The induced V-filtration on the Brieskorn lattice determines the {\bf singularity spectrum} $Sp$ by $Sp(\alpha):=\dim_CGr_V^\alpha Gr^F_0G$.
The spectrum consists of $\mu$ rational numbers $\alpha_1,\dots,\alpha_\mu$ such that $e^{2\pi i\alpha_1},\dots,e^{2\pi i\alpha_\mu}$ are the eigenvalues of the monodromy.
These {\bf spectral numbers} lie in the open interval $(-1,n)$, symmetric about the midpoint $(n-1)\/2$.

The spectrum is constant under $\mu$-constant deformations and has the following semicontinuity property:
The number of spectral numbers in an interval $(a,a+1]$ of all singularities of a small deformation of $f$ is greater than or equal to that of f in this interval.
For semiquasihomogeneous singularities, this also holds for intervals of the form $(a,a+1)$.

Two given isolated singularities $f$ and $g$ determine two spectra and from these spectra we get an integer.
This integer is the maximal positive integer $k$ such that the semicontinuity holds for the spectrum of $f$ and $k$ times the spectrum of $g$.
These numbers give bounds for the maximal number of isolated singularities of a specific type on a hypersurface $X\subset{P}^n$ of degree $d$:
such a hypersurface has a smooth hyperplane section, and the complement is a small deformation of a cone over this hyperplane section.
The cone itself being a $\mu$-constant deformation of $x_0^d+\dots+x_n^d=0$, the singularities are bounded by the spectrum of $x_0^d+\dots+x_n^d$.

Using the library {\tt gmssing.lib} one can compute the {\bf monodromy}, the V-fitration on $H''\/H'$, and the spectrum./;
$l2h_cache{$l2h_cache_key} = q|Let <!-- MATH
 $f\colon(C^{n+1},0)\rightarrow(C,0)$
 -->
<IMG
 WIDTH="149" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_599.png"
 ALT="$f\colon(C^{n+1},0)\rightarrow(C,0)$"> be a complex isolated hypersurface singularity given by a polynomial with algebraic coefficients which we also denote by <IMG
 WIDTH="14" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_262.png"
 ALT="$f$">.
Let <!-- MATH
 $O=C[x_0,\ldots,x_n]_{(x_0,\ldots,x_n)}$
 -->
<IMG
 WIDTH="187" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_600.png"
 ALT="$O=C[x_0,\ldots,x_n]_{(x_0,\ldots,x_n)}$"> be the local ring at the origin and <IMG
 WIDTH="21" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_601.png"
 ALT="$J_f$"> the Jacobian ideal of <IMG
 WIDTH="14" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_262.png"
 ALT="$f$">.

<P>
A <B>Milnor representative</B> of <IMG
 WIDTH="14" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_262.png"
 ALT="$f$"> defines a differentiable fibre bundle over the punctured disc with fibres of homotopy type of <IMG
 WIDTH="14" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_602.png"
 ALT="$\mu$"> <IMG
 WIDTH="14" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_17.png"
 ALT="$n$">-spheres.
The <IMG
 WIDTH="14" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_17.png"
 ALT="$n$">-th cohomology bundle is a flat vector bundle of dimension <IMG
 WIDTH="14" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_17.png"
 ALT="$n$"> and carries a natural flat connection with covariant derivative <IMG
 WIDTH="18" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_603.png"
 ALT="$\partial_t$">.
The <B>monodromy operator</B> is the action of a positively oriented generator of the fundamental group of the punctured disc on the Milnor fibre.
Sections in the cohomology bundle of <B>moderate growth</B> at <IMG
 WIDTH="12" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_2.png"
 ALT="$0$"> form a regular <!-- MATH
 $D=C\{t\}[\partial_t]$
 -->
<IMG
 WIDTH="96" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_604.png"
 ALT="$D=C\{t\}[\partial_t]$">-module <IMG
 WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_186.png"
 ALT="$G$">, the <B>Gauss-Manin connection</B>.

<P>
By integrating along flat multivalued families of cycles, one can consider fibrewise global holomorphic differential forms as elements of <IMG
 WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_186.png"
 ALT="$G$">.
This factors through an inclusion of the <B>Brieskorn lattice</B> <!-- MATH
 $H'':=\Omega^{n+1}_{C^{n+1},0}/df\wedge d\Omega^{n-1}_{C^{n+1},0}$
 -->
<IMG
 WIDTH="209" HEIGHT="35" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_605.png"
 ALT="$H'':=\Omega^{n+1}_{C^{n+1},0}/df\wedge d\Omega^{n-1}_{C^{n+1},0}$"> in <IMG
 WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_186.png"
 ALT="$G$">.

<P>
The <IMG
 WIDTH="18" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_235.png"
 ALT="$D$">-module structure defines the <B>V-filtration</B> <IMG
 WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_297.png"
 ALT="$V$"> on <IMG
 WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_186.png"
 ALT="$G$"> by <!-- MATH
 $V^\alpha:=\sum_{\beta\ge\alpha}C\{t\}ker(t\partial_t-\beta)^{n+1}$
 -->
<IMG
 WIDTH="242" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_606.png"
 ALT="$V^\alpha:=\sum_{\beta\ge\alpha}C\{t\}ker(t\partial_t-\beta)^{n+1}$">.
The Brieskorn lattice defines the <B>Hodge filtration</B> <IMG
 WIDTH="17" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_607.png"
 ALT="$F$"> on <IMG
 WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_186.png"
 ALT="$G$"> by <!-- MATH
 $F_k=\partial_t^kH''$
 -->
<IMG
 WIDTH="83" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_608.png"
 ALT="$F_k=\partial_t^kH''$"> which comes from the <B>mixed Hodge structure</B> on the Milnor fibre.
Note that <IMG
 WIDTH="72" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_609.png"
 ALT="$F_{-1}=H'$">.

<P>
The induced V-filtration on the Brieskorn lattice determines the <B>singularity spectrum</B> <IMG
 WIDTH="23" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_610.png"
 ALT="$Sp$"> by <!-- MATH
 $Sp(\alpha):=\dim_CGr_V^\alpha Gr^F_0G$
 -->
<IMG
 WIDTH="185" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_611.png"
 ALT="$Sp(\alpha):=\dim_CGr_V^\alpha Gr^F_0G$">.
The spectrum consists of <IMG
 WIDTH="14" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_602.png"
 ALT="$\mu$"> rational numbers <!-- MATH
 $\alpha_1,\dots,\alpha_\mu$
 -->
<IMG
 WIDTH="76" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_612.png"
 ALT="$\alpha_1,\dots,\alpha_\mu$"> such that <!-- MATH
 $e^{2\pi i\alpha_1},\dots,e^{2\pi i\alpha_\mu}$
 -->
<IMG
 WIDTH="124" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_613.png"
 ALT="$e^{2\pi i\alpha_1},\dots,e^{2\pi i\alpha_\mu}$"> are the eigenvalues of the monodromy.
These <B>spectral numbers</B> lie in the open interval <IMG
 WIDTH="54" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_614.png"
 ALT="$(-1,n)$">, symmetric about the midpoint <IMG
 WIDTH="69" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_615.png"
 ALT="$(n-1)/2$">.

<P>
The spectrum is constant under <IMG
 WIDTH="14" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_602.png"
 ALT="$\mu$">-constant deformations and has the following semicontinuity property:
The number of spectral numbers in an interval <IMG
 WIDTH="66" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_616.png"
 ALT="$(a,a+1]$"> of all singularities of a small deformation of <IMG
 WIDTH="14" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_262.png"
 ALT="$f$"> is greater than or equal to that of f in this interval.
For semiquasihomogeneous singularities, this also holds for intervals of the form <IMG
 WIDTH="68" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_617.png"
 ALT="$(a,a+1)$">.

<P>
Two given isolated singularities <IMG
 WIDTH="14" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_262.png"
 ALT="$f$"> and <IMG
 WIDTH="12" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_148.png"
 ALT="$g$"> determine two spectra and from these spectra we get an integer.
This integer is the maximal positive integer <IMG
 WIDTH="13" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_273.png"
 ALT="$k$"> such that the semicontinuity holds for the spectrum of <IMG
 WIDTH="14" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_262.png"
 ALT="$f$"> and <IMG
 WIDTH="13" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_273.png"
 ALT="$k$"> times the spectrum of <IMG
 WIDTH="12" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_148.png"
 ALT="$g$">.
These numbers give bounds for the maximal number of isolated singularities of a specific type on a hypersurface <IMG
 WIDTH="61" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_618.png"
 ALT="$X\subset{P}^n$"> of degree <IMG
 WIDTH="13" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_170.png"
 ALT="$d$">:
such a hypersurface has a smooth hyperplane section, and the complement is a small deformation of a cone over this hyperplane section.
The cone itself being a <IMG
 WIDTH="14" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_602.png"
 ALT="$\mu$">-constant deformation of <!-- MATH
 $x_0^d+\dots+x_n^d=0$
 -->
<IMG
 WIDTH="125" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_619.png"
 ALT="$x_0^d+\dots+x_n^d=0$">, the singularities are bounded by the spectrum of <!-- MATH
 $x_0^d+\dots+x_n^d$
 -->
<IMG
 WIDTH="96" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_620.png"
 ALT="$x_0^d+\dots+x_n^d$">.

<P>
Using the library <TT>gmssing.lib</TT> one can compute the <B>monodromy</B>, the V-fitration on <IMG
 WIDTH="54" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_621.png"
 ALT="$H''/H'$">, and the spectrum.|;

$l2h_cache_key = q/$O\/J_f\cong H''\/H'$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $O/J_f\cong H''/H'$
 -->
<IMG
 WIDTH="113" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_624.png"
 ALT="$O/J_f\cong H''/H'$">|;

$l2h_cache_key = q/$M = r^3\/U$,/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="78" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_12.png"
 ALT="$M = r^3/U$">,|;

$l2h_cache_key = q/$K=Z\/7(a,b,c)$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="116" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_42.png"
 ALT="$K=Z/7(a,b,c)$">|;

$l2h_cache_key = q/$V(\partial f\/\partial x_1,\ldots,\partial f\/\partial x_n) \setminus V(f)$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $V(\partial f/\partial x_1,\ldots,\partial f/\partial x_n) \setminus V(f)$
 -->
<IMG
 WIDTH="221" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_402.png"
 ALT="$V(\partial f/\partial x_1,\ldots,\partial f/\partial x_n) \setminus V(f)$">|;

$l2h_cache_key = q/$\hbox{Loc}_{(x)}K[x_1,\ldots,x_n]$,/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $\hbox{Loc}_{(x)}K[x_1,\ldots,x_n]$
 -->
<IMG
 WIDTH="140" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_393.png"
 ALT="$\hbox{Loc}_{(x)}K[x_1,\ldots,x_n]$">,|;

$l2h_cache_key = q/$(Q[a,b,c])[x,y,z]$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $(Q[a,b,c])[x,y,z]$
 -->
<IMG
 WIDTH="123" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_35.png"
 ALT="$(Q[a,b,c])[x,y,z]$">|;

$l2h_cache_key = q/  Define $z_l=a^{j_l}$ and $y_l=e_{j_l}$. Then $z_1,\dots,z_t$ are the error locations and $y_1,\dots,y_t$ are the error values and
  the syndromes above become {\bf generalized power sum functions} $s_{i_m}=\sum_{l=1}^{t}y_lz_l^{i_m}, \ \ 1\le m \le n-k. $/;
$l2h_cache{$l2h_cache_key} = q|  Define <IMG
 WIDTH="57" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_740.png"
 ALT="$z_l=a^{j_l}$"> and <IMG
 WIDTH="56" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_741.png"
 ALT="$y_l=e_{j_l}$">. Then <IMG
 WIDTH="67" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_742.png"
 ALT="$z_1,\dots,z_t$"> are the error locations and <IMG
 WIDTH="68" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_743.png"
 ALT="$y_1,\dots,y_t$"> are the error values and
  the syndromes above become <B>generalized power sum functions</B> <!-- MATH
 $s_{i_m}=\sum_{l=1}^{t}y_lz_l^{i_m}, \ \ 1\le m \le n-k.$
 -->
<IMG
 WIDTH="250" HEIGHT="37" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_744.png"
 ALT="$s_{i_m}=\sum_{l=1}^{t}y_lz_l^{i_m}, \ \ 1\le m \le n-k. $">|;

$l2h_cache_key = q/$i$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="10" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_55.png"
 ALT="$i$">|;

$l2h_cache_key = q/  $v_1, v_2,\ldots,v_s$/;
$l2h_cache{$l2h_cache_key} = q|  <!-- MATH
 $v_1, v_2,\ldots,v_s$
 -->
<IMG
 WIDTH="91" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_112.png"
 ALT="$v_1, v_2,\ldots,v_s$">|;

$l2h_cache_key = q/$ m \times n $/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="47" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_67.png"
 ALT="$ m \times n $">|;

$l2h_cache_key = q/\noindent
Let $0 \rightarrow\ \bigoplus_a K[x]e_{a,n}\ \rightarrow\ \dots
  \rightarrow\ \bigoplus_a K[x]e_{a,0}\ \rightarrow\
  I\ \rightarrow\ 0$
be a minimal resolution of I considered with homogeneous maps of degree 0.
The regularity is the smallest number $s$ with the property deg($e_{a,i})
 \leq s+i$ for all $i$./;
$l2h_cache{$l2h_cache_key} = q|
Let <!-- MATH
 $0 \rightarrow\ \bigoplus_a K[x]e_{a,n}\ \rightarrow\ \dots
  \rightarrow\ \bigoplus_a K[x]e_{a,0}\ \rightarrow\
  I\ \rightarrow\ 0$
 -->
<IMG
 WIDTH="386" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_175.png"
 ALT="$0 \rightarrow\ \bigoplus_a K[x]e_{a,n}\ \rightarrow\ \dots
\rightarrow\ \bigoplus_a K[x]e_{a,0}\ \rightarrow\
I\ \rightarrow\ 0$">
be a minimal resolution of I considered with homogeneous maps of degree 0.
The regularity is the smallest number <IMG
 WIDTH="12" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_176.png"
 ALT="$s$"> with the property deg(<!-- MATH
 $e_{a,i})
 \leq s+i$
 -->
<IMG
 WIDTH="87" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_177.png"
 ALT="$e_{a,i})
\leq s+i$"> for all <IMG
 WIDTH="10" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_55.png"
 ALT="$i$">.|;

$l2h_cache_key = q/$<$ is a well-ordering on $X$, that is $ 1 < x$ $\forall x \in X \setminus \{1\}$,/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="17" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_223.png"
 ALT="$&lt;$"> is a well-ordering on <IMG
 WIDTH="19" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_303.png"
 ALT="$X$">, that is <IMG
 WIDTH="42" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_62.png"
 ALT="$1 &lt; x$"> <!-- MATH
 $\forall x \in X \setminus \{1\}$
 -->
<IMG
 WIDTH="95" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_304.png"
 ALT="$\forall x \in X \setminus \{1\}$">,|;

$l2h_cache_key = q/$\quad$ (dp(3), wp(1,2,3)):
$\left(\matrix{
1&  1&  1&  0&  0&  0 \cr
0&  0&  -1&  0&  0&  0 \cr
0&  -1&  0&  0&  0&  0 \cr
0&  0&  0&  1&  2&  3 \cr
0&  0&  0&  0&  0&  -1 \cr
0&  0&  0&  0&  -1&  0 \cr
 }\right)$

$\quad$ (Dp(3), ds(3)):
$\left(\matrix{
1&  1&  1&  0&  0&  0 \cr
1&  0&  0&  0&  0&  0 \cr
0&  1&  0&  0&  0&  0 \cr
0&  0&  0&  -1&  -1&  -1 \cr
0&  0&  0&  0&  0&  -1 \cr
0&  0&  0&  0&  -1&  0 \cr
 }\right)$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="20" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_494.png"
 ALT="$\quad$"> (dp(3), wp(1,2,3)):
<!-- MATH
 $\left(\matrix{
1&  1&  1&  0&  0&  0 \cr
0&  0&  -1&  0&  0&  0 \cr
0&  -1&  0&  0&  0&  0 \cr
0&  0&  0&  1&  2&  3 \cr
0&  0&  0&  0&  0&  -1 \cr
0&  0&  0&  0&  -1&  0 \cr
 }\right)$
 -->
<IMG
 WIDTH="214" HEIGHT="127" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_505.png"
 ALT="$\left(\matrix{
1&amp; 1&amp; 1&amp; 0&amp; 0&amp; 0 \cr
0&amp; 0&amp; -1&amp; 0&amp; 0&amp; 0 \cr
0&amp; -1&amp; 0&amp; 0&amp; 0&amp; 0 \cr
0&amp; 0&amp; 0&amp; 1&amp; 2&amp; 3 \cr
0&amp; 0&amp; 0&amp; 0&amp; 0&amp; -1 \cr
0&amp; 0&amp; 0&amp; 0&amp; -1&amp; 0 \cr
}\right)$">

<P>
<IMG
 WIDTH="20" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_494.png"
 ALT="$\quad$"> (Dp(3), ds(3)):
<!-- MATH
 $\left(\matrix{
1&  1&  1&  0&  0&  0 \cr
1&  0&  0&  0&  0&  0 \cr
0&  1&  0&  0&  0&  0 \cr
0&  0&  0&  -1&  -1&  -1 \cr
0&  0&  0&  0&  0&  -1 \cr
0&  0&  0&  0&  -1&  0 \cr
 }\right)$
 -->
<IMG
 WIDTH="202" HEIGHT="127" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_506.png"
 ALT="$\left(\matrix{
1&amp; 1&amp; 1&amp; 0&amp; 0&amp; 0 \cr
1&amp; 0&amp; 0&amp; 0&amp; 0&amp; 0 \cr
0&amp; 1&amp; 0&amp; 0&amp; 0&amp; 0 \cr
0&amp; 0&amp; 0&amp; -1&amp; -1&amp; -1 \cr
0&amp; 0&amp; 0&amp; 0&amp; 0&amp; -1 \cr
0&amp; 0&amp; 0&amp; 0&amp; -1&amp; 0 \cr
}\right)$">|;

$l2h_cache_key = q/$Q$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="17" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_3.png"
 ALT="$Q$">|;

$l2h_cache_key = q/\ $(x) = (x_1, ..., x_n)$./;
$l2h_cache{$l2h_cache_key} = q| <!-- MATH
 $(x) = (x_1, ..., x_n)$
 -->
<IMG
 WIDTH="121" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_462.png"
 ALT="$(x) = (x_1, ..., x_n)$">.|;

$l2h_cache_key = q/$Q \rightarrow R$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $Q \rightarrow R$
 -->
<IMG
 WIDTH="54" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_75.png"
 ALT="$Q \rightarrow R$">|;

$l2h_cache_key = q/$w$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="16" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_312.png"
 ALT="$w$">|;

$l2h_cache_key = q/$ 2*genus-2 < deg(G) < size(D) $/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $2*genus-2 < deg(G) < size(D)$
 -->
<IMG
 WIDTH="242" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_930.png"
 ALT="$ 2*genus-2 &lt; deg(G) &lt; size(D) $">|;

$l2h_cache_key = q/  Let $C$ be an $F_q$-linear code with parameters $[n,k,d]$. W.l.o.g $n\le q$. $H$ is a check matrix of $C$.
  Let ${\bf h}_1,\dots,{\bf h}_{n-k}$ be the rows of $H$.
  One can express ${\bf h}_i = \sum _{j=1}^n a_{ij}{\bf b}_j$ with some $a_{ij}\in F_q$.
  In other words $H=AB$ where $A$ is the $(n-k) \times n$ matrix with entries $a_{ij}$.

  Let ${\bf r}={\bf c}+{\bf e}$ be a received word with ${\bf c}\in C$ and ${\bf e}$ an error vector.
  The syndromes of ${\bf r}$ and ${\bf e}$ w.r.t $H$ are equal and known:
  $$
    s_i({\bf r}):={\bf h}_i \cdot {\bf r}={\bf h}_i\cdot {\bf e}=s_i({\bf e}).
  $$
  They can be expressed in the unknown syndromes of ${\bf e}$ w.r.t $B$:
  $$
    s_i({\bf r})=s_i({\bf e}) =\sum _{j=1}^n a_{ij}u_j({\bf e})
  $$
  since ${\bf h}_i = \sum _{j=1}^n a_{ij}{\bf b}_j$ and ${\bf b}_j \cdot {\bf e}=u_j({\bf e})$./;
$l2h_cache{$l2h_cache_key} = q|  Let <IMG
 WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_77.png"
 ALT="$C$"> be an <IMG
 WIDTH="21" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_697.png"
 ALT="$F_q$">-linear code with parameters <IMG
 WIDTH="54" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_702.png"
 ALT="$[n,k,d]$">. W.l.o.g <IMG
 WIDTH="43" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_856.png"
 ALT="$n\le q$">. <IMG
 WIDTH="19" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_703.png"
 ALT="$H$"> is a check matrix of <IMG
 WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_77.png"
 ALT="$C$">.
  Let <!-- MATH
 ${\bf h}_1,\dots,{\bf h}_{n-k}$
 -->
<IMG
 WIDTH="93" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_857.png"
 ALT="${\bf h}_1,\dots,{\bf h}_{n-k}$"> be the rows of <IMG
 WIDTH="19" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_703.png"
 ALT="$H$">.
  One can express <!-- MATH
 ${\bf h}_i = \sum _{j=1}^n a_{ij}{\bf b}_j$
 -->
<IMG
 WIDTH="120" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_858.png"
 ALT="${\bf h}_i = \sum _{j=1}^n a_{ij}{\bf b}_j$"> with some <IMG
 WIDTH="60" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_859.png"
 ALT="$a_{ij}\in F_q$">.
  In other words <IMG
 WIDTH="65" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_860.png"
 ALT="$H=AB$"> where <IMG
 WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_187.png"
 ALT="$A$"> is the <!-- MATH
 $(n-k) \times n$
 -->
<IMG
 WIDTH="83" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_861.png"
 ALT="$(n-k) \times n$"> matrix with entries <IMG
 WIDTH="24" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_862.png"
 ALT="$a_{ij}$">.

<P>
Let <!-- MATH
 ${\bf r}={\bf c}+{\bf e}$
 -->
<IMG
 WIDTH="69" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_731.png"
 ALT="${\bf r}={\bf c}+{\bf e}$"> be a received word with <IMG
 WIDTH="44" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_732.png"
 ALT="${\bf c}\in C$"> and <IMG
 WIDTH="13" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_733.png"
 ALT="${\bf e}$"> an error vector.
  The syndromes of <IMG
 WIDTH="12" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_725.png"
 ALT="${\bf r}$"> and <IMG
 WIDTH="13" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_733.png"
 ALT="${\bf e}$"> w.r.t <IMG
 WIDTH="19" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_703.png"
 ALT="$H$"> are equal and known:
  <BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
s_i({\bf r}):={\bf h}_i \cdot {\bf r}={\bf h}_i\cdot {\bf e}=s_i({\bf e}).
\end{displaymath}
 -->

<IMG
 WIDTH="207" HEIGHT="28" BORDER="0"
 SRC="sing_863.png"
 ALT="\begin{displaymath}
s_i({\bf r}):={\bf h}_i \cdot {\bf r}={\bf h}_i\cdot {\bf e}=s_i({\bf e}).
\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
They can be expressed in the unknown syndromes of <IMG
 WIDTH="13" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_733.png"
 ALT="${\bf e}$"> w.r.t <IMG
 WIDTH="17" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_192.png"
 ALT="$B$">:
  <BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
s_i({\bf r})=s_i({\bf e}) =\sum _{j=1}^n a_{ij}u_j({\bf e})
\end{displaymath}
 -->

<IMG
 WIDTH="189" HEIGHT="55" BORDER="0"
 SRC="sing_864.png"
 ALT="\begin{displaymath}
s_i({\bf r})=s_i({\bf e}) =\sum _{j=1}^n a_{ij}u_j({\bf e})
\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
since <!-- MATH
 ${\bf h}_i = \sum _{j=1}^n a_{ij}{\bf b}_j$
 -->
<IMG
 WIDTH="120" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_858.png"
 ALT="${\bf h}_i = \sum _{j=1}^n a_{ij}{\bf b}_j$"> and <!-- MATH
 ${\bf b}_j \cdot {\bf e}=u_j({\bf e})$
 -->
<IMG
 WIDTH="99" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_865.png"
 ALT="${\bf b}_j \cdot {\bf e}=u_j({\bf e})$">.|;

$l2h_cache_key = q/$x_i$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="18" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_125.png"
 ALT="$x_i$">|;

$l2h_cache_key = q/  Let $C$ be an $[n,k]$ cyclic code over $F_q$; $F$ is a splitting field with $a$ being a primitive n-th root of unity. Let
  $S_C=\{i_1,\dots,i_{n-k}\}$ be the complete defining set of $C$. Let ${\bf r}={\bf c}+{\bf e}$
  be a received word with ${\bf c}\in C$ and ${\bf e}$ an error vector.
  Denote the corresponding polynomials in $F_q[x]\/\langle x^n-1 \rangle$ by $r(x)$, $c(x)$ and $e(x)$, resp. Compute syndromes
  $$
    s_{i_m}=r(a^{i_m})=e(a^{i_m})= \sum_{l=1}^{t}e_{j_l}(a^{i_m})^{j_l}, \ \ 1\le m \le n-k,
  $$
  where $t$ is the number of errors, $j_1,\dots,j_t$ are the {\bf error positions} and $e_{j_1},\dots,e_{j_t}$ are the {\bf
  error values}./;
$l2h_cache{$l2h_cache_key} = q|  Let <IMG
 WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_77.png"
 ALT="$C$"> be an <IMG
 WIDTH="38" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_729.png"
 ALT="$[n,k]$"> cyclic code over <IMG
 WIDTH="21" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_697.png"
 ALT="$F_q$">; <IMG
 WIDTH="17" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_607.png"
 ALT="$F$"> is a splitting field with <IMG
 WIDTH="13" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_4.png"
 ALT="$a$"> being a primitive n-th root of unity. Let
  <!-- MATH
 $S_C=\{i_1,\dots,i_{n-k}\}$
 -->
<IMG
 WIDTH="141" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_730.png"
 ALT="$S_C=\{i_1,\dots,i_{n-k}\}$"> be the complete defining set of <IMG
 WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_77.png"
 ALT="$C$">. Let <!-- MATH
 ${\bf r}={\bf c}+{\bf e}$
 -->
<IMG
 WIDTH="69" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_731.png"
 ALT="${\bf r}={\bf c}+{\bf e}$">
  be a received word with <IMG
 WIDTH="44" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_732.png"
 ALT="${\bf c}\in C$"> and <IMG
 WIDTH="13" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_733.png"
 ALT="${\bf e}$"> an error vector.
  Denote the corresponding polynomials in <!-- MATH
 $F_q[x]/\langle x^n-1 \rangle$
 -->
<IMG
 WIDTH="105" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_734.png"
 ALT="$F_q[x]/\langle x^n-1 \rangle$"> by <IMG
 WIDTH="33" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_735.png"
 ALT="$r(x)$">, <IMG
 WIDTH="32" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_710.png"
 ALT="$c(x)$"> and <IMG
 WIDTH="33" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_736.png"
 ALT="$e(x)$">, resp. Compute syndromes
  <BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
s_{i_m}=r(a^{i_m})=e(a^{i_m})= \sum_{l=1}^{t}e_{j_l}(a^{i_m})^{j_l}, \ \ 1\le m \le n-k,
\end{displaymath}
 -->

<IMG
 WIDTH="390" HEIGHT="56" BORDER="0"
 SRC="sing_737.png"
 ALT="\begin{displaymath}
s_{i_m}=r(a^{i_m})=e(a^{i_m})= \sum_{l=1}^{t}e_{j_l}(a^{i_m})^{j_l}, \ \ 1\le m \le n-k,
\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
where <IMG
 WIDTH="10" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_400.png"
 ALT="$t$"> is the number of errors, <IMG
 WIDTH="65" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_738.png"
 ALT="$j_1,\dots,j_t$"> are the <B>error positions</B> and <!-- MATH
 $e_{j_1},\dots,e_{j_t}$
 -->
<IMG
 WIDTH="78" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_739.png"
 ALT="$e_{j_1},\dots,e_{j_t}$"> are the <B>  error values</B>.|;

$l2h_cache_key = q/$v_1, \ldots, v_k$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $v_1, \ldots, v_k$
 -->
<IMG
 WIDTH="70" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_90.png"
 ALT="$v_1, \ldots, v_k$">|;

$l2h_cache_key = q/$(m+1)$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="58" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_371.png"
 ALT="$(m+1)$">|;

$l2h_cache_key = q/$G$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_186.png"
 ALT="$G$">|;

$l2h_cache_key = q/$A^{-1}=U^{-1}\cdot L^{-1}\cdot P$,/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $A^{-1}=U^{-1}\cdot L^{-1}\cdot P$
 -->
<IMG
 WIDTH="147" HEIGHT="17" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_151.png"
 ALT="$A^{-1}=U^{-1}\cdot L^{-1}\cdot P$">,|;

$l2h_cache_key = q/the ground field has to be the field of rational
numbers. Moreover, {\tt ncols(p)==}$n$, the number of variables in the
basering, and all the given generators have to be numbers different from
0,1 or -1. Finally, {\tt ncols(v)==(d+1)$^n$}, and all given generators have
to be numbers./;
$l2h_cache{$l2h_cache_key} = q|the ground field has to be the field of rational
numbers. Moreover, <TT>ncols(p)==</TT><IMG
 WIDTH="14" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_17.png"
 ALT="$n$">, the number of variables in the
basering, and all the given generators have to be numbers different from
0,1 or -1. Finally, <TT>ncols(v)==(d+1)<IMG
 WIDTH="13" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_182.png"
 ALT="$^n$"></TT>, and all given generators have
to be numbers.|;

$l2h_cache_key = q/ On the Center of $q$-Deformed Algebra $U'_q( \rm so _3)$ Related to
  Quantum Gravity at $q$ a Root of $1$./;
$l2h_cache{$l2h_cache_key} = q| On the Center of <IMG
 WIDTH="12" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_288.png"
 ALT="$q$">-Deformed Algebra <!-- MATH
 $U'_q( \rm so _3)$
 -->
<IMG
 WIDTH="56" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_289.png"
 ALT="$U'_q( \rm so _3)$"> Related to
  Quantum Gravity at <IMG
 WIDTH="12" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_288.png"
 ALT="$q$"> a Root of <IMG
 WIDTH="12" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_290.png"
 ALT="$1$">.|;

$l2h_cache_key = q/A monomial ordering (term ordering) on $K[x_1, \ldots, x_n]$ is
a total ordering $<$ on the
set of monomials (power products) $\{x^\alpha \mid \alpha \in \bf{N}^n\}$
which is compatible with the
natural semigroup structure, i.e., $x^\alpha < x^\beta$ implies $x^\gamma
x^\alpha < x^\gamma x^\beta$ for any $\gamma \in \bf{N}^n$.
We do not require
$<$ to be  a wellordering./;
$l2h_cache{$l2h_cache_key} = q|A monomial ordering (term ordering) on <!-- MATH
 $K[x_1, \ldots, x_n]$
 -->
<IMG
 WIDTH="97" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_60.png"
 ALT="$K[x_1,\ldots,x_n]$"> is
a total ordering <IMG
 WIDTH="17" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_223.png"
 ALT="$&lt;$"> on the
set of monomials (power products) <!-- MATH
 $\{x^\alpha \mid \alpha \in \bf {N}^n\}$
 -->
<IMG
 WIDTH="104" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_440.png"
 ALT="$\{x^\alpha \mid \alpha \in \bf {N}^n\}$">
which is compatible with the
natural semigroup structure, i.e., <!-- MATH
 $x^\alpha < x^\beta$
 -->
<IMG
 WIDTH="61" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_441.png"
 ALT="$x^\alpha &lt; x^\beta$"> implies <!-- MATH
 $x^\gamma
x^\alpha < x^\gamma x^\beta$
 -->
<IMG
 WIDTH="96" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_442.png"
 ALT="$x^\gamma
x^\alpha &lt; x^\gamma x^\beta$"> for any <!-- MATH
 $\gamma \in \bf {N}^n$
 -->
<IMG
 WIDTH="56" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_443.png"
 ALT="$\gamma \in \bf {N}^n$">.
We do not require
<IMG
 WIDTH="17" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_223.png"
 ALT="$&lt;$"> to be  a wellordering.|;

$l2h_cache_key = q/$K$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="19" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_48.png"
 ALT="$K$">|;

$l2h_cache_key = q/A map $\hbox{NF} : A^r \times \{G \mid G\ \hbox{ a (left) Groebner
basis}\} \to A^r, (f|G) \mapsto \hbox{NF}(f|G)$, is called a {\bf (left) normal form}
on $A^r$ if for any $f \in A^r$ and any left Groebner basis $G$ the following
holds:

(i) $\hbox{NF}(0|G) = 0$,

(ii)  if $\hbox{NF}(f|G) \not= 0$ then $\hbox{LM}(g)$ does not divide
$\hbox{LM}(\hbox{NF}(f|G))$ for all $g \in G$,

(iii) $f - \hbox{NF}(f|G)\in {}_{A}\langle G \rangle$.

\noindent
$\hbox{NF}(f|G)$ is called a {\bf left normal form of} $f$ {\bf with
respect to} $G$ (note that such a map is not unique)./;
$l2h_cache{$l2h_cache_key} = q|A map <!-- MATH
 $\hbox{NF} : A^r \times \{G \mid G\ \hbox{ a (left) Groebner
basis}\} \to A^r, (f\|G) \mapsto \hbox{NF}(f\|G)$
 -->
<IMG
 WIDTH="476" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_264.png"
 ALT="$\hbox{NF} : A^r \times \{G \mid G\ \hbox{ a (left) Groebner
basis}\} \to A^r, (f\vert G) \mapsto \hbox{NF}(f\vert G)$">, is called a <B>(left) normal form</B>
on <IMG
 WIDTH="23" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_237.png"
 ALT="$A^r$"> if for any <IMG
 WIDTH="52" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_261.png"
 ALT="$f\in A^r $"> and any left Groebner basis <IMG
 WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_186.png"
 ALT="$G$"> the following
holds:

<P>
(i) <!-- MATH
 $\hbox{NF}(0\|G) = 0$
 -->
<IMG
 WIDTH="93" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_265.png"
 ALT="$\hbox{NF}(0\vert G) = 0$">,

<P>
(ii)  if <!-- MATH
 $\hbox{NF}(f\|G) \not= 0$
 -->
<IMG
 WIDTH="95" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_266.png"
 ALT="$\hbox{NF}(f\vert G) \not= 0$"> then <IMG
 WIDTH="49" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_267.png"
 ALT="$\hbox{LM}(g)$"> does not divide
<!-- MATH
 $\hbox{LM}(\hbox{NF}(f\|G))$
 -->
<IMG
 WIDTH="102" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_268.png"
 ALT="$\hbox{LM}(\hbox{NF}(f\vert G))$"> for all <IMG
 WIDTH="44" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_251.png"
 ALT="$g\in G$">,

<P>
(iii) <!-- MATH
 $f - \hbox{NF}(f\|G)\in {}_{A}\langle G \rangle$
 -->
<IMG
 WIDTH="149" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_269.png"
 ALT="$f - \hbox{NF}(f\vert G)\in {}_{A}\langle G \rangle$">.

<P>

<!-- MATH
 $\hbox{NF}(f\|G)$
 -->
<IMG
 WIDTH="65" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_270.png"
 ALT="$\hbox{NF}(f\vert G)$"> is called a <B>left normal form of</B> <IMG
 WIDTH="14" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_262.png"
 ALT="$f$"> <B>with
respect to</B> <IMG
 WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_186.png"
 ALT="$G$"> (note that such a map is not unique).|;

$l2h_cache_key = q/$x^3+y^3+z^3$./;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="90" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_633.png"
 ALT="$x^3+y^3+z^3$">.|;

$l2h_cache_key = q/$3 \times 3$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="40" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_1.png"
 ALT="$3 \times 3$">|;

$l2h_cache_key = q/$K[x,y,z]$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="67" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_41.png"
 ALT="$K[x,y,z]$">|;

$l2h_cache_key = q/$I \subset R$ is the ideal generated by $f_1,...,f_s$, then any infinitesimal
deformation of $R\/I$ over $K[\varepsilon]\/(\varepsilon^2)$ is given
by $f+\varepsilon g$,
where $f=(f_1,...,f_s)$, and where $g$ is a $K$-linear combination of
the $h_i$./;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="46" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_412.png"
 ALT="$I \subset R$"> is the ideal generated by <IMG
 WIDTH="61" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_413.png"
 ALT="$f_1,...,f_s$">, then any infinitesimal
deformation of <IMG
 WIDTH="33" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_374.png"
 ALT="$R/I$"> over <!-- MATH
 $K[\varepsilon]/(\varepsilon^2)$
 -->
<IMG
 WIDTH="70" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_414.png"
 ALT="$K[\varepsilon]/(\varepsilon^2)$"> is given
by <!-- MATH
 $f+\varepsilon g$
 -->
<IMG
 WIDTH="49" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_415.png"
 ALT="$f+\varepsilon g$">,
where <!-- MATH
 $f=(f_1,...,f_s)$
 -->
<IMG
 WIDTH="104" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_416.png"
 ALT="$f=(f_1,...,f_s)$">, and where <IMG
 WIDTH="12" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_148.png"
 ALT="$g$"> is a <IMG
 WIDTH="19" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_48.png"
 ALT="$K$">-linear combination of
the <IMG
 WIDTH="19" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_417.png"
 ALT="$h_i$">.|;

$l2h_cache_key = q/$M \cdot S \not=0$)./;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $M \cdot S \not=0$
 -->
<IMG
 WIDTH="73" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_279.png"
 ALT="$M \cdot S \not=0$">).|;

$l2h_cache_key = q/  $K\cdot A$/;
$l2h_cache{$l2h_cache_key} = q|  <IMG
 WIDTH="42" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_122.png"
 ALT="$K\cdot A$">|;

$l2h_cache_key = q/$N$ as $N = R^n\/$std($M$))./;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="19" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_326.png"
 ALT="$N$"> as <IMG
 WIDTH="69" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_432.png"
 ALT="$N = R^n/$">std(<IMG
 WIDTH="21" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_13.png"
 ALT="$M$">)).|;

$l2h_cache_key = q/$[f_1,...,f_n]$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="72" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_421.png"
 ALT="$[f_1,...,f_n]$">|;

$l2h_cache_key = q/  $\sum_{i=1}^k m_i\cdot a_i$,/;
$l2h_cache{$l2h_cache_key} = q|  <!-- MATH
 $\sum_{i=1}^k m_i\cdot a_i$
 -->
<IMG
 WIDTH="90" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_120.png"
 ALT="$\sum_{i=1}^k m_i\cdot a_i$">,|;

$l2h_cache_key = q/  $m_i$/;
$l2h_cache{$l2h_cache_key} = q|  <IMG
 WIDTH="23" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_117.png"
 ALT="$m_i$">|;

$l2h_cache_key = q/$gen(i)$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="47" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_423.png"
 ALT="$gen(i)$">|;

$l2h_cache_key = q/Output: $g_1,\dots,g_s$ with $s \leq n$ and the properties/;
$l2h_cache{$l2h_cache_key} = q|Output: <IMG
 WIDTH="69" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_138.png"
 ALT="$g_1,\dots,g_s$"> with <IMG
 WIDTH="42" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_139.png"
 ALT="$s \leq n$"> and the properties|;

$l2h_cache_key = q/$Z_p$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="22" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_65.png"
 ALT="$Z_p$">|;

$l2h_cache_key = q/$A_1={\tt matrix}(M)$./;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $A_1={\tt matrix}(M)$
 -->
<IMG
 WIDTH="124" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_178.png"
 ALT="$A_1={\tt matrix}(M)$">.|;

$l2h_cache_key = q/  $(dk\times 1)$-matrix and $m_{(j-1)d+i+1,1}, 0\leq i\leq e, 1\leq j\leq k$,/;
$l2h_cache{$l2h_cache_key} = q|  <IMG
 WIDTH="61" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_110.png"
 ALT="$(dk\times 1)$">-matrix and <!-- MATH
 $m_{(j-1)d+i+1,1}, 0\leq i\leq e, 1\leq j\leq k$
 -->
<IMG
 WIDTH="242" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_111.png"
 ALT="$m_{(j-1)d+i+1,1}, 0\leq i\leq e, 1\leq j\leq k$">,|;

$l2h_cache_key = q/  {\bf Minimum distance} of the code $C: d(C):=\min_{{\bf x,y}\in C, {\bf x}\ne {\bf y}}(d({\bf x,y}))$./;
$l2h_cache{$l2h_cache_key} = q|  <B>Minimum distance</B> of the code <!-- MATH
 $C: d(C):=\min_{{\bf x,y}\in C, {\bf x}\ne {\bf y}}(d({\bf x,y}))$
 -->
<IMG
 WIDTH="242" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_701.png"
 ALT="$C: d(C):=\min_{{\bf x,y}\in C, {\bf x}\ne {\bf y}}(d({\bf x,y}))$">.|;

$l2h_cache_key = q/$Q[x,y,z]$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="65" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_37.png"
 ALT="$Q[x,y,z]$">|;

$l2h_cache_key = q/$A:=U(sl_2)$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="86" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_419.png"
 ALT="$A:=U(sl_2)$">|;

$l2h_cache_key = q/$v=[f_1,...,f_n]$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $v=[f_1,...,f_n]$
 -->
<IMG
 WIDTH="101" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_424.png"
 ALT="$v=[f_1,...,f_n]$">|;

$l2h_cache_key = q/$$F=R(-2)^2\oplus R(-1)^2\oplus R\,.$$/;
$l2h_cache{$l2h_cache_key} = q|<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
F=R(-2)^2\oplus R(-1)^2\oplus R\,.
\end{displaymath}
 -->

<IMG
 WIDTH="194" HEIGHT="28" BORDER="0"
 SRC="sing_354.png"
 ALT="\begin{displaymath}F=R(-2)^2\oplus R(-1)^2\oplus R\,.\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>|;

$l2h_cache_key = q/$A^{env} = A \otimes_K A^{opp}$, where $A^{opp}$ is the
opposite algebra of $A$./;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $A^{env} = A \otimes_K A^{opp}$
 -->
<IMG
 WIDTH="135" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_202.png"
 ALT="$A^{env} = A \otimes_K A^{opp}$">, where <IMG
 WIDTH="36" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_203.png"
 ALT="$A^{opp}$"> is the
opposite algebra of <IMG
 WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_187.png"
 ALT="$A$">.|;

$l2h_cache_key = q/  The syndromes $s_i=r(a^i)=e(a^i)$ and the coefficients $\sigma_i$ satisfy
  the following {\bf generalized Newton identities}:
  $$
    s_i+\sum_{j=1}^{t}\sigma_js_{i-j}=0,\ \  \hbox{ for all } \ i\in Z\!\!\! Z_n.
  $$/;
$l2h_cache{$l2h_cache_key} = q|  The syndromes <!-- MATH
 $s_i=r(a^i)=e(a^i)$
 -->
<IMG
 WIDTH="127" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_792.png"
 ALT="$s_i=r(a^i)=e(a^i)$"> and the coefficients <IMG
 WIDTH="18" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_790.png"
 ALT="$\sigma_i$"> satisfy
  the following <B>generalized Newton identities</B>:
  <BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
s_i+\sum_{j=1}^{t}\sigma_js_{i-j}=0,\ \  \hbox{ for all } \ i\in Z\!\!\! Z_n.
\end{displaymath}
 -->

<IMG
 WIDTH="258" HEIGHT="57" BORDER="0"
 SRC="sing_793.png"
 ALT="\begin{displaymath}
s_i+\sum_{j=1}^{t}\sigma_js_{i-j}=0,\ \ \hbox{ for all } \ i\in Z\!\!\! Z_n.
\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>|;

$l2h_cache_key = q/$1, A^{-1}$./;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="48" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_152.png"
 ALT="$1, A^{-1}$">.|;

$l2h_cache_key = q/$K[[x_1,\ldots,x_n]]$/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $K[[x_1,\ldots,x_n]]$
 -->
<IMG
 WIDTH="106" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_390.png"
 ALT="$K[[x_1,\ldots,x_n]]$">|;

$l2h_cache_key = q/$M$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="21" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_13.png"
 ALT="$M$">|;

$l2h_cache_key = q/  Consider the ring $F_q[X_{11},\dots,X_{1s},\ldots,X_{t1},\dots,X_{ts},E_1,\dots,E_t]$, where $(X_{i1},\dots,X_{is})$ correspond to
  the $i$-th error position and $E_i$ to the $i$-th error value. Consider the ideal $Id_C$ generated by
  $$
  \sum_{j=1}^tE_jf_i(X_{j1},\dots,X_{js})-s_i, 1\le i\le n-k,
  $$
  $$
  g_l(X_{j1},\dots,X_{js}), 1\le l\le m,
  $$
  $$
  E_k^{q-1}-1.
  $$/;
$l2h_cache{$l2h_cache_key} = q|  Consider the ring <!-- MATH
 $F_q[X_{11},\dots,X_{1s},\ldots,X_{t1},\dots,X_{ts},E_1,\dots,E_t]$
 -->
<IMG
 WIDTH="318" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_832.png"
 ALT="$F_q[X_{11},\dots,X_{1s},\ldots,X_{t1},\dots,X_{ts},E_1,\dots,E_t]$">, where <!-- MATH
 $(X_{i1},\dots,X_{is})$
 -->
<IMG
 WIDTH="101" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_833.png"
 ALT="$(X_{i1},\dots,X_{is})$"> correspond to
  the <IMG
 WIDTH="10" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_55.png"
 ALT="$i$">-th error position and <IMG
 WIDTH="21" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_834.png"
 ALT="$E_i$"> to the <IMG
 WIDTH="10" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="sing_55.png"
 ALT="$i$">-th error value. Consider the ideal <IMG
 WIDTH="31" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_835.png"
 ALT="$Id_C$"> generated by
  <BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
\sum_{j=1}^tE_jf_i(X_{j1},\dots,X_{js})-s_i, 1\le i\le n-k,
\end{displaymath}
 -->

<IMG
 WIDTH="294" HEIGHT="57" BORDER="0"
 SRC="sing_836.png"
 ALT="\begin{displaymath}
\sum_{j=1}^tE_jf_i(X_{j1},\dots,X_{js})-s_i, 1\le i\le n-k,
\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
  <BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
g_l(X_{j1},\dots,X_{js}), 1\le l\le m,
\end{displaymath}
 -->

<IMG
 WIDTH="193" HEIGHT="29" BORDER="0"
 SRC="sing_837.png"
 ALT="\begin{displaymath}
g_l(X_{j1},\dots,X_{js}), 1\le l\le m,
\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
  <BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
 \begin{displaymath}
E_k^{q-1}-1.
\end{displaymath}
 -->

<IMG
 WIDTH="66" HEIGHT="29" BORDER="0"
 SRC="sing_838.png"
 ALT="\begin{displaymath}
E_k^{q-1}-1.
\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>|;

$l2h_cache_key = q/$k_1[X]$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="43" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_95.png"
 ALT="$k_1[X]$">|;

$l2h_cache_key = q/$Z\/6^3[x,y,z]$/;
$l2h_cache{$l2h_cache_key} = q|<IMG
 WIDTH="87" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_57.png"
 ALT="$Z/6^3[x,y,z]$">|;

$l2h_cache_key = q/  $v_r$./;
$l2h_cache{$l2h_cache_key} = q|  <IMG
 WIDTH="19" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_115.png"
 ALT="$v_r$">.|;

$l2h_cache_key = q/$j=J \cap k[x_1,\ldots,x_n]$,/;
$l2h_cache{$l2h_cache_key} = q|<!-- MATH
 $j=J \cap k[x_1,\ldots,x_n]$
 -->
<IMG
 WIDTH="148" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_346.png"
 ALT="$j=J \cap k[x_1,\ldots,x_n]$">,|;

$l2h_cache_key = q/  {\bf Online decoding}: Solve some system $S(C,{\bf r})$. The solutions should solve the decoding problem./;
$l2h_cache{$l2h_cache_key} = q|  <B>Online decoding</B>: Solve some system <IMG
 WIDTH="54" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="sing_728.png"
 ALT="$S(C,{\bf r})$">. The solutions should solve the decoding problem.|;
1;