# Singular

#### D.8.4.4 triangMH

Procedure from library `triang.lib` (see triang_lib).

Usage:
triangMH(G[,i]); G=ideal, i=integer

Assume:
G is the reduced lexicographical Groebner basis of the zero-dimensional ideal (G), sorted by increasing leading terms.

Return:
a list of finitely many triangular systems, such that the disjoint union of their varieties equals the variety of (G). If i = 2, then each polynomial of the triangular systems is factorized.

Note:
Algorithm of Moeller and Hillebrand (see: Moeller, H.M.: On decomposing systems of polynomial equations with finitely many solutions, Appl. Algebra Eng. Commun. Comput. 4, 217 - 230, 1993 and Hillebrand, D.: Triangulierung nulldimensionaler Ideale - Implementierung und Vergleich zweier Algorithmen, master thesis, Universitaet Dortmund, Fachbereich Mathematik, Prof. Dr. H.M. Moeller, 1999).

Example:
 ```LIB "triang.lib"; ring rC5 = 0,(e,d,c,b,a),lp; triangMH(stdfglm(cyclic(5))); ==> [1]: ==> _[1]=a5-1 ==> _[2]=b-a ==> _[3]=c-a ==> _[4]=d2+3da+a2 ==> _[5]=e+d+3a ==> [2]: ==> _[1]=a10+123a5+1 ==> _[2]=55b2-2ba6-233ba-8a7-987a2 ==> _[3]=55c+a6+144a ==> _[4]=55d+a6+144a ==> _[5]=55e+55b-2a6-233a ==> [3]: ==> _[1]=a5-1 ==> _[2]=b6+4b5a+5b4a2+5b3a3+5b2a4+4b+a ==> _[3]=5c+8b5a+30b4a2+30b3a3+25b2a4+30b+22a ==> _[4]=5d-2b5a-10b4a2-15b3a3-10b2a4-10b-8a ==> _[5]=5e-6b5a-20b4a2-15b3a3-15b2a4-15b-9a ==> [4]: ==> _[1]=a5-1 ==> _[2]=b-a ==> _[3]=c2+3ca+a2 ==> _[4]=d+c+3a ==> _[5]=e-a ```