#### 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
    ==>

User manual for Singular version 4-0-3, 2016, generated by texi2html.