# Singular          #### D.15.12.44 derivationEval

Procedure from library `difform.lib` (see difform_lib).

Usage:
phi(df); phi derivation, df difform

Return:
the polynomial phi(df), the derivation phi evaluated at df

Remarks:
- By linearity it is enough to compute the sum of all differential forms: (coefficient of dx_i)*(image of dx_i)
- The coefficient list of df is computed via difformCoef - To avoid searching generators in lists, the coefficient list of df and the structure list of phi are sorted the same way

Note:
- the differential form 0 is allowed as input
- an error will occure if the given differential form is not of degree 1 or -1

Example:
 ```LIB "difform.lib"; ring R = 13,(x,y,z,t),dp; diffAlgebra(); ==> // The differential algebra Omega_R was constructed and the differential \ forms dx, dy, dz, dt are available. ///////////////////////////////// // Construction of derivations // ///////////////////////////////// list L_1; L_1 = list(dx,dt,dz,dy); L_1 = list(x,y,z,t); derivation phi_1 = L_1; phi_1; ==> Omega_R^1 --> R ==> dx |--> x ==> dy |--> t ==> dz |--> z ==> dt |--> y ==> ==> list L_2; L_2 = list(dx,dy,dz,dt); L_2 = list(y2x-zt,zt + y, t3-x, y4-y5); derivation phi_2 = L_2; phi_2; ==> Omega_R^1 --> R ==> dx |--> xy2-zt ==> dy |--> zt+y ==> dz |--> t3-x ==> dt |--> -y5+y4 ==> ==> list L_3; L_3 = list(dx,dy,dz,dt); L_3 = list(0,0,0,0); derivation phi_3 = L_3; phi_3; ==> Omega_R^1 --> R ==> dx |--> 0 ==> dy |--> 0 ==> dz |--> 0 ==> dt |--> 0 ==> ==> /////////////////////////////// // Evaluation of derivations // /////////////////////////////// phi_1(0); ==> 0 phi_1(dx+dy+dz+dt); ==> x+y+z+t phi_1(3*dx - dt); ==> 3x-y phi_2(dt); ==> -y5+y4 phi_2(dx+dt); ==> -y5+y4+xy2-zt phi_2(dx - dy + (x3-y2)*dz + 12*dt); ==> x3t3+y5-y2t3-x4-y4+2xy2-2zt-y phi_3(dx); ==> 0 phi_3(dy); ==> 0 phi_3(dx - 24*(dx + dz) - x4*dy); ==> 0 kill Omega_R,dx,dy,dz,dt,L_1,L_2,L_3,phi_1,phi_2,phi_3; ``` 