# Singular

#### D.3.1.31 symmetricPower

Procedure from library `matrix.lib` (see matrix_lib).

Usage:
symmetricPower(A, k); A module, k int

Return:
module: the k-th symmetric power of A

Note:
the chosen bases and most of intermediate data will be shown if printlevel is big enough

Example:
 ```LIB "matrix.lib"; ring r = (0),(a, b, c, d), dp; r; ==> // characteristic : 0 ==> // number of vars : 4 ==> // block 1 : ordering dp ==> // : names a b c d ==> // block 2 : ordering C module B = a*gen(1) + c* gen(2), b * gen(1) + d * gen(2); print(B); ==> a,b, ==> c,d // symmetric power over a commutative K-algebra: print(symmetricPower(B, 2)); ==> d2, cd, c2, ==> 2bd,bc+ad,2ac, ==> b2, ab, a2 print(symmetricPower(B, 3)); ==> d3, cd2, c2d, c3, ==> 3bd2,2bcd+ad2,bc2+2acd,3ac2, ==> 3b2d,b2c+2abd,2abc+a2d,3a2c, ==> b3, ab2, a2b, a3 // symmetric power over an exterior algebra: def g = superCommutative(); setring g; g; ==> // characteristic : 0 ==> // number of vars : 4 ==> // block 1 : ordering dp ==> // : names a b c d ==> // block 2 : ordering C ==> // noncommutative relations: ==> // ba=-ab ==> // ca=-ac ==> // da=-ad ==> // cb=-bc ==> // db=-bd ==> // dc=-cd ==> // quotient ring from ideal ==> _[1]=d2 ==> _[2]=c2 ==> _[3]=b2 ==> _[4]=a2 module B = a*gen(1) + c* gen(2), b * gen(1) + d * gen(2); print(B); ==> a,b, ==> c,d print(symmetricPower(B, 2)); // much smaller! ==> 0,cd, 0, ==> 0,-bc+ad,0, ==> 0,ab, 0 print(symmetricPower(B, 3)); // zero! (over an exterior algebra!) ==> 0,0,0,0 ```