# Singular

##### 7.7.16.0. perron
Procedure from library `perron.lib` (see perron_lib).

Usage:
perron( L [, D] )

Return:
commutative ring with ideal `Relations`

Purpose:
computes polynomial relations ('Relations') between pairwise commuting polynomials of L [, up to a given degree bound D]

Note:
the implementation was partially inspired by the Perron's theorem.

Example:
 ```LIB "perron.lib"; int p = 3; ring AA = p,(x,y,z),dp; matrix D[3][3]=0; D[1,2]=-z; D[1,3]=2*x; D[2,3]=-2*y; def A = nc_algebra(1,D); setring A; // this algebra is U(sl_2) ideal I = x^p, y^p, z^p-z, 4*x*y+z^2-2*z; // the center def RA = perron( I, p ); setring RA; RA; ==> // characteristic : 3 ==> // number of vars : 4 ==> // block 1 : ordering dp ==> // : names F(1) F(2) F(3) F(4) ==> // block 2 : ordering C Relations; // it was exported from perron to be in the returned ring. ==> Relations[1]=F(4)^3-F(1)*F(2)-F(3)^2+F(4)^2 // perron can be also used in a commutative case, for example: ring B = 0,(x,y,z),dp; ideal J = xy+z2, z2+y2, x2y2-2xy3+y4; def RB = perron(J); setring RB; Relations; ==> Relations[1]=F(1)^2-2*F(1)*F(2)+F(2)^2-F(3) // one more test: setring A; map T=RA,I; T(Relations); // should be zero ==> _[1]=0 ```