Funciones y variables para Afines
=================================

 -- Función: fast_linsolve ([EXPR_1, ..., EXPR_M], [X_1, ..., X_N])
     Resuelve las ecuaciones lineales simultáneas EXPR_1, ..., EXPR_M para las variables X_1, ..., X_N. Cada EXPR_I puede ser una ecuación o una expresión general; en caso de tratarse de una expresión general, será tratada como una ecuación de la forma EXPR_I = 0.

     El valor que devuelve es una lista de ecuaciones de la forma [X_1 = A_1, ..., X_N = A_N] donde todas las A_1, ..., A_N están exentas de X_1, ..., X_N.

     La función fast_linsolve es más rápida que linsolve para sistemas de ecuaciones con coeficientes dispersos.

 -- Función: grobner_basis ([EXPR_1, ..., EXPR_M])
     Devuelve una base de Groebner para las ecuaciones EXPR_1, ..., EXPR_M. La función polysimp puede ser entonces utilizada para simplificar otras funciones relativas a las ecuaciones.

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

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

     polysimp(f) alcanza 0 si y sólo si F está en el ideal generado por EXPR_1, ..., EXPR_M, es decir, si y sólo si F es una combinación  polinómica de los elementos de EXPR_1, ..., EXPR_M.

 -- Función: set_up_dot_simplifications (EQNS, CHECK_THROUGH_DEGREE)
 -- Función: set_up_dot_simplifications (EQNS)

     Las EQNS son ecuaciones polinómicas de variables no conmutativas. El valor de current_variables es la lista de variables utilizadas para el cálculo de los grados. Las ecuaciones deben ser homogéneas, al objeto de completar el procedimiento.

     El grado es el devuelto por nc_degree. Éste a su vez depende de los pesos de las variables individuales.

 -- Función: declare_weight (X_1, W_1, ..., X_N, W_N)
     Asigna los pesos W_1, ..., W_N a X_1, ..., X_N, respectivamente. Estos pesos son los utilizados en el cálculo de nc_degree.

 -- Función: nc_degree (P)
     Devuelve el grado de un polinomio no conmutativo P. Véase declare_weights.

 -- Función: dotsimp (F)
     Devuelve 0 si y sólo si  F está en el ideal generado por las ecuaciones, esto es, si y sólo si F es una combinación lineal de los elementos de las ecuaciones.

 -- Función: fast_central_elements ([X_1, ..., X_N], N)
     Si se ha ejecutado set_up_dot_simplifications con antelación, obtiene los polinomios centrales de grado N de variables X_1, ..., X_N.

     Por ejemplo:

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

 -- Función: check_overlaps (N, ADD_TO_SIMPS)
     Revisa la superposición hasta el grado N, asegurándose de que el usuario tiene suficientes reglas de simplificación en cada grado para que dotsimp trabaje correctamente. Este proceso puede acelerarse si se conoce de antemano cuál es la dimensión del espacio de monomios. Si éste es de dimensión global finita, entonces debería usarse hilbert. Si no se conoce la dimensiones de los monomios, no se debería especificar una rank_function. Un tercer argumento opcional es reset.

 -- Función: mono ([X_1, ..., X_N], N)
     Devuelve la lista de monomios independientes.

 -- Función: monomial_dimensions (N)
     Calcula el desarrollo de Hilbert de grado N para el algebra actual.

 -- Función: extract_linear_equations ([P_1, ..., P_N], [M_1, ..., M_N])
     Hace una lista de los coeficientes de los polinomios no conmutativos P_1, ..., P_N de los monomios no conmutativos M_1, ..., M_N. Los coeficientes deben escalares. Hágase uso de list_nc_monomials para construir la lista de monomios.

 -- Función: list_nc_monomials ([P_1, ..., P_N])
 -- Función: list_nc_monomials (P)
     Devuelve  una lista de los monomios no conmutativos que aparecen en el polinomio  P o una lista de polinomios en P_1, ..., P_N.

 -- Variable: all_dotsimp_denoms
     Valor por defecto: false

     Cuando all_dotsimp_denoms es una lista, los denominadores encontrados por dotsimp son añadidos a la lista. La variable all_dotsimp_denoms puede inicializarse como una lista vacía [] antes de llamar a dotsimp.

     Por defecto, dotsimp no recolecta los denominadores.