# Singular          #### D.11.2.11 canonize

Procedure from library `control.lib` (see control_lib).

Usage:
canonize(L); L a list

Return:
list

Purpose:
modules in the list are canonized by computing their reduced minimal (= unique up to constant factor w.r.t. the given ordering) Groebner bases

Assume:
L is the output of control/autonomy procedures

Example:
 ```LIB "control.lib"; // TwoPendula with L1=L2=L ring r=(0,m1,m2,M,g,L),Dt,dp; module RR = [m1*L*Dt^2, m2*L*Dt^2, -1, (M+m1+m2)*Dt^2], [m1*L^2*Dt^2-m1*L*g, 0, 0, m1*L*Dt^2], [0, m2*L^2*Dt^2-m2*L*g, 0, m2*L*Dt^2]; module R = transpose(RR); list C = control(R); list CC = canonize(C); view(CC); ==> number of first nonzero Ext: ==> ==> 1 ==> ==> not controllable , image representation for controllable part: ==> ==> -Dt^2 , ==> -Dt^2 , ==> (M*L)*Dt^4+(-m1*g-m2*g-M*g)*Dt^2, ==> (L)*Dt^2+(-g) ==> ==> kernel representation for controllable part: ==> ==> 1,0,0, ==> 0,1,0, ==> 0,0,1 ==> ==> obstruction to controllability ==> ==> 1,0,0 , ==> 0,1,0 , ==> 0,0,(L)*Dt^2+(-g) ==> ==> annihilator of torsion module (of obstruction to controllability) ==> ==> (L)*Dt^2+(-g) ==> ==> dimension of the system: ==> ==> 1 ==> ```

### Misc 