## 24 Package affine ¶

### 24.1 Introduction to Affine ¶

`affine` is a package to work with groups of polynomials.

Categories: Polynomials · Groebner bases · Share packages · Package affine ·

### 24.2 Functions and Variables for Affine ¶

Function: fast_linsolve ([expr_1, …, expr_m], [x_1, …, x_n]) ¶

  Solves the simultaneous linear equations expr_1, …, expr_m for the variables x_1, …, x_n. Each expr_i may be an equation or a general expression; if given as a general expression, it is treated as an equation of the form `expr_i = 0`.

  The return value is a list of equations of the form `[x_1 = a_1, …, x_n = a_n]` where a_1, …, a_n are all free of x_1, …, x_n.

  `fast_linsolve` is faster than `linsolve` for system of equations which are sparse.

  `load("affine")` loads this function.

  Categories: Package affine ·

Function: grobner_basis ([expr_1, …, expr_m]) ¶

  Returns a Groebner basis for the equations expr_1, …, expr_m. The function `polysimp` can then be used to simplify other functions relative to the equations.

      grobner_basis ([3*x^2+1, y*x])$

      polysimp (y^2*x + x^3*9 + 2) ==> -3*x + 2

  `polysimp(f)` yields 0 if and only if f is in the ideal generated by expr_1, …, expr_m, that is, if and only if f is a polynomial combination of the elements of expr_1, …, expr_m.

  `load("affine")` loads this function.

  Categories: Package affine ·

Function: set_up_dot_simplifications
`set_up_dot_simplifications` (eqns, check_through_degree)
`set_up_dot_simplifications` (eqns) ¶

  The eqns are polynomial equations in non commutative variables. The value of `current_variables` is the list of variables used for computing degrees. The equations must be homogeneous, in order for the procedure to terminate.

  If you have checked overlapping simplifications in `dot_simplifications` above the degree of f, then the following is true: `dotsimp (f)` yields 0 if and only if f is in the ideal generated by the equations, i.e., if and only if f is a polynomial combination of the elements of the equations.

  The degree is that returned by `nc_degree`. This in turn is influenced by the weights of individual variables.

  `load("affine")` loads this function.

  Categories: Package affine ·

Function: declare_weights (x_1, w_1, …, x_n, w_n) ¶

  Assigns weights w_1, …, w_n to x_1, …, x_n, respectively. These are the weights used in computing `nc_degree`.

  `load("affine")` loads this function.

  Categories: Package affine ·

Function: nc_degree (p) ¶

  Returns the degree of a noncommutative polynomial p. See `declare_weights`.

  `load("affine")` loads this function.

  Categories: Package affine ·

Function: dotsimp (f) ¶

  Returns 0 if and only if f is in the ideal generated by the equations, i.e., if and only if f is a polynomial combination of the elements of the equations.

  `load("affine")` loads this function.

  Categories: Package affine ·

Function: fast_central_elements ([x_1, …, x_n], n) ¶

  If `set_up_dot_simplifications` has been previously done, finds the central polynomials in the variables x_1, …, x_n in the given degree, n.

  For example:

      set_up_dot_simplifications ([y.x + x.y], 3);
      fast_central_elements ([x, y], 2);
      [y.y, x.x];

  `load("affine")` loads this function.

  Categories: Package affine ·

Function: check_overlaps (n, add_to_simps) ¶

  Checks the overlaps thru degree n, making sure that you have sufficient simplification rules in each degree, for `dotsimp` to work correctly. This process can be speeded up if you know before hand what the dimension of the space of monomials is. If it is of finite global dimension, then `hilbert` should be used. If you don’t know the monomial dimensions, do not specify a `rank_function`. An optional third argument `reset`, `false` says don’t bother to query about resetting things.

  `load("affine")` loads this function.

  Categories: Package affine ·

Function: mono ([x_1, …, x_n], n) ¶

  Returns the list of independent monomials relative to the current dot simplifications of degree n in the variables x_1, …, x_n.

  `load("affine")` loads this function.

  Categories: Package affine ·

Function: monomial_dimensions (n) ¶

  Compute the Hilbert series through degree n for the current algebra.

  `load("affine")` loads this function.

  Categories: Package affine ·

Function: extract_linear_equations ([p_1, …, p_n], [m_1, …, m_n]) ¶

  Makes a list of the coefficients of the noncommutative polynomials p_1, …, p_n of the noncommutative monomials m_1, …, m_n. The coefficients should be scalars. Use `list_nc_monomials` to build the list of monomials.

  `load("affine")` loads this function.

  Categories: Package affine ·

Function: list_nc_monomials
`list_nc_monomials` ([p_1, …, p_n])
`list_nc_monomials` (p) ¶

  Returns a list of the non commutative monomials occurring in a polynomial p or a list of polynomials p_1, …, p_n.

  `load("affine")` loads this function.

  Categories: Package affine ·

Option variable: all_dotsimp_denoms ¶

  Default value: `false`

  When `all_dotsimp_denoms` is a list, the denominators encountered by `dotsimp` are appended to the list. `all_dotsimp_denoms` may be initialized to an empty list `[]` before calling `dotsimp`.

  By default, denominators are not collected by `dotsimp`.

  Categories: Package affine ·