This function creates a free algebra over $R$ with variables from the BasicList xs. Options are also passed as part of the BasicList. The variables are not in scope after a call to this function by default. If you wish to have them in scope, one may use the return value, or pass the option true to UseVariables.
i1 : A = freeAlgebra(QQ,{x,y,z}) o1 = A o1 : FreeAlgebra |
i2 : use A o2 = A o2 : FreeAlgebra |
i3 : assert(x == A_0) |
Other options are Degrees, DegreeRank, Weights, and Heft which use the same syntax and play the same role as in the case of a commutative polynomial ring.
In particular, to create noncommutative elimination orders, one must use Weights that are chosen accordingly. The following example is the graph ideal of the ring homomorphism from $\mathbb{Q}\langle a,b,c\rangle$ to $\mathbb{Q}\langle x,y\rangle$ satisfying $a \mapsto xyx$, $b \mapsto yxy$ and $c \mapsto xy$.
i4 : B = freeAlgebra(QQ,{x,y,a,b,c,Weights=>{1,1,0,0,0},Degrees=>{1,1,3,3,2}}) o4 = B o4 : FreeAlgebra |
i5 : I = ideal {a - x*y*x, b - y*x*y, c - x*y} o5 = ideal (- x*y*x + a, - y*x*y + b, - x*y + c) o5 : Ideal of B |
i6 : Igb = NCGB(I,10) o6 = | xy-c cx-a yc-b ay-c2 ya-bx xb-c2 c3-ab abx-c2a abc-cab | 1 9 o6 : Matrix B <--- B |
This general construction is automated in ncGraphIdeal and ncKernel.
The object freeAlgebra is a method function.