Polynomial rings are symmetric algebras with explicit generators, and we have already seen how to construct them. But if you have a module, then its symmetric algebra can be constructed with
symmetricAlgebra.
i1 : R = QQ[a..d];
|
i2 : symmetricAlgebra R^3
o2 = R[p ..p ]
0 2
o2 : PolynomialRing
|
Maps between symmetric algebras can be constructed functorially.
i3 : vars R
o3 = | a b c d |
1 4
o3 : Matrix R <--- R
|
i4 : symmetricAlgebra vars R
o4 = map (R[p ], R[p ..p ], {a*p , b*p , c*p , d*p , a, b, c, d})
0 0 3 0 0 0 0
o4 : RingMap R[p ] <--- R[p ..p ]
0 0 3
|
i5 : symmetricAlgebra transpose vars R
o5 = map (R[p ..p ], R[p ], {a*p + b*p + c*p + d*p , a, b, c, d})
0 3 0 0 1 2 3
o5 : RingMap R[p ..p ] <--- R[p ]
0 3 0
|
Until the ring is used with
use or assigned to a global variable, its generators are not assigned to global variables.
i6 : a
o6 = a
o6 : R
|
i7 : p_0
o7 = p
0
o7 : IndexedVariable
|
i8 : S = o2;
|
i9 : a
o9 = a
o9 : R
|
i10 : p_0
o10 = p
0
o10 : S
|
To specify the names of the variables when creating the ring, use the
Variables option or the
VariableBaseName option.
i11 : symmetricAlgebra(R^3, Variables => {t,u,v})
o11 = R[t..v]
o11 : PolynomialRing
|
i12 : symmetricAlgebra(R^3, VariableBaseName => t)
o12 = R[t ..t ]
0 2
o12 : PolynomialRing
|
We can construct the symmetric algebra of a module that isn't necessarily free.
i13 : use R
o13 = R
o13 : PolynomialRing
|
i14 : symmetricAlgebra(R^1/(a,b^3))
R[p ]
0
o14 = ------------
3
(a*p , b p )
0 0
o14 : QuotientRing
|