# Singular

#### D.15.12.46 derivationContraction

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

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

Return:
the image of the contraction map i_phi applied to df

Remarks:
Since the contraction map is linear, it is only applied to the generators: So the image of df under i_phi is a sum, where the coefficients are multiplied by the image of the generators.

Note:
over the basering, the contraction map is the 0-map

Example:
 ```LIB "difform.lib"; ring R = 0,(x,y,z),lp; diffAlgebra(); ==> // The differential algebra Omega_R was constructed and the differential \ forms dx, dy, dz are available. ///////////////////////////////// // Construction of derivations // ///////////////////////////////// list L_1; L_1[1] = list(dx,dy,dz); L_1[2] = list(x,y,z); derivation phi_1 = L_1; phi_1; ==> Omega_R^1 --> R ==> dx |--> x ==> dy |--> y ==> dz |--> z ==> ==> list L_2; L_2[1] = list(dx,dy,dz); L_2[2] = list(y-x,z-y,x-z); derivation phi_2 = L_2; phi_2; ==> Omega_R^1 --> R ==> dx |--> -x+y ==> dy |--> -y+z ==> dz |--> x-z ==> ==> ///////////////////////////////// // Contractions of derivations // ///////////////////////////////// derivationContraction(phi_1,dx+dy+dz); ==> x+y+z ==> derivationContraction(phi_1,x2*y4-z); ==> 0 ==> derivationContraction(phi_1,x2*dx*dy + dx*dy*dz); ==> (-x2y)*dx+x3*dy+z*dx*dy+(-y)*dx*dz+x*dy*dz ==> derivationContraction(phi_2,dx+dy+dz); ==> 0 ==> derivationContraction(phi_2,dx*dy*dz - dx*dy + dx*dz); ==> (-x-y+2z)*dx+(x-y)*dy+(-x+y)*dz+(x-z)*dx*dy+(y-z)*dx*dz+(-x+y)*dy*dz ==> kill Omega_R,dx,dy,dz,L_1,L_2,phi_1,phi_2; ```
See also: derivationContraction; derivationLie.