# Singular

##### 7.7.9.0. involution
Procedure from library `involut.lib` (see involut_lib).

Usage:
involution(m, theta); m is a poly/vector/ideal/matrix/module, theta is a map

Return:
object of the same type as m

Purpose:
applies the involution, presented by theta to the object m

Theory:
for an involution theta and two polynomials a,b from the algebra,
theta(ab) = theta(b) theta(a); theta is linear with respect to the ground field

Note:
This is generalized "theta(m)" for data types unsupported by "map".

Example:
 ```LIB "involut.lib"; ring R = 0,(x,d),dp; def r = nc_algebra(1,1); setring r; // Weyl-Algebra map F = r,x,-d; F(F); // should be maxideal(1) for an involution ==> _[1]=x ==> _[2]=d poly f = x*d^2+d; poly If = involution(f,F); f-If; ==> 0 poly g = x^2*d+2*x*d+3*x+7*d; poly tg = -d*x^2-2*d*x+3*x-7*d; poly Ig = involution(g,F); tg-Ig; ==> 0 ideal I = f,g; ideal II = involution(I,F); II; ==> II[1]=xd2+d ==> II[2]=-x2d-2xd+x-7d-2 matrix(I) - involution(II,F); ==> _[1,1]=0 ==> _[1,2]=0 module M = [f,g,0],[g,0,x^2*d]; module IM = involution(M,F); print(IM); ==> xd2+d, -x2d-2xd+x-7d-2, ==> -x2d-2xd+x-7d-2,0, ==> 0, -x2d-2x print(matrix(M) - involution(IM,F)); ==> 0,0, ==> 0,0, ==> 0,0 ```