3 * Introduction to Affine::
4 * Functions and Variables for Affine::
7 @node Introduction to Affine, Functions and Variables for Affine, Package affine, Package affine
8 @section Introduction to Affine
10 @code{affine} is a package to work with groups of polynomials.
12 @opencatbox{Categories:}
13 @category{Polynomials}
14 @category{Groebner bases}
15 @category{Share packages}
16 @category{Package affine}
20 @node Functions and Variables for Affine, , Introduction to Affine, Package affine
21 @section Functions and Variables for Affine
23 @anchor{fast_linsolve}
24 @deffn {Function} fast_linsolve ([@var{expr_1}, @dots{}, @var{expr_m}], [@var{x_1}, @dots{}, @var{x_n}])
25 Solves the simultaneous linear equations @var{expr_1}, @dots{}, @var{expr_m}
26 for the variables @var{x_1}, @dots{}, @var{x_n}.
27 Each @var{expr_i} may be an equation or a general expression;
28 if given as a general expression, it is treated as an equation of the form @code{@var{expr_i} = 0}.
30 The return value is a list of equations of the form
31 @code{[@var{x_1} = @var{a_1}, @dots{}, @var{x_n} = @var{a_n}]}
32 where @var{a_1}, @dots{}, @var{a_n} are all free of @var{x_1}, @dots{}, @var{x_n}.
34 @code{fast_linsolve} is faster than @code{linsolve} for system of equations which
37 @code{load("affine")} loads this function.
39 @opencatbox{Categories:}
40 @category{Package affine}
44 @anchor{grobner_basis}
45 @deffn {Function} grobner_basis ([@var{expr_1}, @dots{}, @var{expr_m}])
46 Returns a Groebner basis for the equations @var{expr_1}, @dots{}, @var{expr_m}.
47 The function @code{polysimp} can then
48 be used to simplify other functions relative to the equations.
51 grobner_basis ([3*x^2+1, y*x])$
53 polysimp (y^2*x + x^3*9 + 2) ==> -3*x + 2
56 @code{polysimp(f)} yields 0 if and only if @var{f} is in the ideal generated by
57 @var{expr_1}, @dots{}, @var{expr_m}, that is,
58 if and only if @var{f} is a polynomial combination of the elements of
59 @var{expr_1}, @dots{}, @var{expr_m}.
61 @code{load("affine")} loads this function.
63 @opencatbox{Categories:}
64 @category{Package affine}
68 @c NEEDS CLARIFICATION IN A SERIOUS WAY
69 @anchor{set_up_dot_simplifications}
70 @deffn {Function} set_up_dot_simplifications @
71 @fname{set_up_dot_simplifications} (@var{eqns}, @var{check_through_degree}) @
72 @fname{set_up_dot_simplifications} (@var{eqns})
74 The @var{eqns} are polynomial equations in non commutative variables.
75 The value of @code{current_variables} is the
76 list of variables used for computing degrees. The equations must be
77 homogeneous, in order for the procedure to terminate.
79 If you have checked overlapping simplifications in @code{dot_simplifications}
80 above the degree of @var{f}, then the following is true:
81 @code{dotsimp (@var{f})} yields 0 if and only if @var{f} is in the
82 ideal generated by the equations, i.e.,
83 if and only if @var{f} is a polynomial combination
84 of the elements of the equations.
86 The degree is that returned by @code{nc_degree}. This in turn is influenced by
87 the weights of individual variables.
89 @code{load("affine")} loads this function.
91 @opencatbox{Categories:}
92 @category{Package affine}
96 @anchor{declare_weights}
97 @deffn {Function} declare_weights (@var{x_1}, @var{w_1}, @dots{}, @var{x_n}, @var{w_n})
98 Assigns weights @var{w_1}, @dots{}, @var{w_n} to @var{x_1}, @dots{}, @var{x_n}, respectively.
99 These are the weights used in computing @code{nc_degree}.
101 @code{load("affine")} loads this function.
103 @opencatbox{Categories:}
104 @category{Package affine}
109 @deffn {Function} nc_degree (@var{p})
110 Returns the degree of a noncommutative polynomial @var{p}. See @code{declare_weights}.
112 @code{load("affine")} loads this function.
114 @opencatbox{Categories:}
115 @category{Package affine}
119 @c NEEDS CLARIFICATION -- TO WHICH EQUATIONS DOES THIS DESCRIPTION REFER ??
121 @deffn {Function} dotsimp (@var{f})
122 Returns 0 if and only if @var{f} is in the ideal generated by the equations, i.e.,
123 if and only if @var{f} is a polynomial combination of the elements of the equations.
125 @code{load("affine")} loads this function.
127 @opencatbox{Categories:}
128 @category{Package affine}
132 @anchor{fast_central_elements}
133 @deffn {Function} fast_central_elements ([@var{x_1}, @dots{}, @var{x_n}], @var{n})
134 If @code{set_up_dot_simplifications} has been previously done, finds the central polynomials
135 in the variables @var{x_1}, @dots{}, @var{x_n} in the given degree, @var{n}.
139 set_up_dot_simplifications ([y.x + x.y], 3);
140 fast_central_elements ([x, y], 2);
144 @code{load("affine")} loads this function.
146 @opencatbox{Categories:}
147 @category{Package affine}
151 @c THIS IS NOT AT ALL CLEAR
152 @anchor{check_overlaps}
153 @deffn {Function} check_overlaps (@var{n}, @var{add_to_simps})
154 Checks the overlaps thru degree @var{n},
155 making sure that you have sufficient simplification rules in each
156 degree, for @code{dotsimp} to work correctly. This process can be speeded
157 up if you know before hand what the dimension of the space of monomials is.
158 If it is of finite global dimension, then @code{hilbert} should be used. If you
159 don't know the monomial dimensions, do not specify a @code{rank_function}.
160 An optional third argument @code{reset}, @code{false} says don't bother to query
161 about resetting things.
163 @code{load("affine")} loads this function.
165 @opencatbox{Categories:}
166 @category{Package affine}
171 @deffn {Function} mono ([@var{x_1}, @dots{}, @var{x_n}], @var{n})
172 Returns the list of independent
173 monomials relative to the current dot simplifications of degree @var{n}
174 in the variables @var{x_1}, @dots{}, @var{x_n}.
176 @code{load("affine")} loads this function.
178 @opencatbox{Categories:}
179 @category{Package affine}
183 @anchor{monomial_dimensions}
184 @deffn {Function} monomial_dimensions (@var{n})
185 Compute the Hilbert series through degree @var{n} for the current algebra.
187 @code{load("affine")} loads this function.
189 @opencatbox{Categories:}
190 @category{Package affine}
194 @anchor{extract_linear_equations}
195 @deffn {Function} extract_linear_equations ([@var{p_1}, @dots{}, @var{p_n}], [@var{m_1}, @dots{}, @var{m_n}])
197 Makes a list of the coefficients of the noncommutative polynomials @var{p_1}, @dots{}, @var{p_n}
198 of the noncommutative monomials @var{m_1}, @dots{}, @var{m_n}.
199 The coefficients should be scalars. Use @code{list_nc_monomials} to build the list of
202 @code{load("affine")} loads this function.
204 @opencatbox{Categories:}
205 @category{Package affine}
209 @anchor{list_nc_monomials}
210 @deffn {Function} list_nc_monomials @
211 @fname{list_nc_monomials} ([@var{p_1}, @dots{}, @var{p_n}]) @
212 @fname{list_nc_monomials} (@var{p})
214 Returns a list of the non commutative monomials occurring in a polynomial @var{p}
215 or a list of polynomials @var{p_1}, @dots{}, @var{p_n}.
217 @code{load("affine")} loads this function.
219 @opencatbox{Categories:}
220 @category{Package affine}
224 @c THIS FUNCTION DOESN'T SEEM TO BE APPROPRIATE IN USER-LEVEL DOCUMENTATION
225 @c PRESERVE THIS DESCRIPTION PENDING FURTHER DECISION
226 @c @defun pcoeff (poly monom [variables-to-exclude-from-cof (list-variables monom)])
228 @c This function is called from Lisp level, and uses internal poly format.
231 @c CL-MAXIMA>>(setq me (st-rat #$x^2*u+y+1$))
232 @c (#:Y 1 1 0 (#:X 2 (#:U 1 1) 0 1))
234 @c CL-MAXIMA>>(pcoeff me (st-rat #$x^2$))
239 @c Rule: if a variable appears in monom it must be to the exact power,
240 @c and if it is in variables to exclude it may not appear unless it was
241 @c in monom to the exact power. (pcoeff pol 1 ..) will exclude variables
242 @c like substituting them to be zero.
246 @c THIS FUNCTION DOESN'T SEEM TO BE APPROPRIATE IN USER-LEVEL DOCUMENTATION
247 @c PRESERVE THIS DESCRIPTION PENDING FURTHER DECISION
248 @c @defun new-disrep (poly)
250 @c From Lisp this returns the general Maxima format for an arg which is
254 @c (displa(new-disrep (setq me (st-rat #$x^2*u+y+1$))))
262 @anchor{all_dotsimp_denoms}
263 @defvr {Option variable} all_dotsimp_denoms
264 Default value: @code{false}
266 When @code{all_dotsimp_denoms} is a list,
267 the denominators encountered by @code{dotsimp} are appended to the list.
268 @code{all_dotsimp_denoms} may be initialized to an empty list @code{[]}
269 before calling @code{dotsimp}.
271 By default, denominators are not collected by @code{dotsimp}.
273 @opencatbox{Categories:}
274 @category{Package affine}