Introducción a la miscelánea de opciones
========================================

En esta sección se comentan varias opciones que tienen un efecto global sobre le comportamiento de Maxima. También se comentan varias listas, como la de las funciones definidas por el usuario.

Share
=====

El directorio "share" de Maxima contiene programas y ficheros de interés para los usuarios de Maxima, pero no forman parte del núcleo de Maxima. Estos programas se cargan en memoria con llamadas a las funciones load o setup_autoload.

La llamada :lisp *maxima-sharedir* muestra la localización del directorio "share" dentro del sistema de ficheros del usuario.

La llamada printfile ("share.usg") muestra una lista actualizada de paquetes en "share". Los usuarios pueden encontrar más información accediendo directamente a los contenidos del directorio "share".

Funciones y variables para la miscelánea de opciones
====================================================

 -- Variable del sistema: aliases
     Valor por defecto: []

     La variable aliases es la lista de átomos que tienen un "alias" definido por el usuario (establecido mediante las funciones  alias, ordergreat o orderless o declarando el átomo como un noun (nombre) con declare.

 -- Declaración: alphabetic

     alphabetic es una declaración de tipo reconocida por declare. La expresión declare(S, alphabetic) indica a Maxima que reconozca como alfabéticos todos los caracteres de S, que debe ser una cadena alfanumérica.

     Ejemplo:

          (%i1) xx\~yy\`\@ : 1729;
          (%o1)                         1729
          (%i2) declare ("~`@", alphabetic);
          (%o2)                         done
          (%i3) xx~yy`@ + @yy`xx + `xx@@yy~;
          (%o3)               `xx@@yy~ + @yy`xx + 1729
          (%i4) listofvars (%);
          (%o4)                  [@yy`xx, `xx@@yy~]

 -- Función: apropos (CADENA)

     Busca nombres en Maxima en los cuales aparezca CADENA en cualquier lugar dentro de ellos. Así, apropos (exp) devuelve una lista con todas las variables y funciones que tengan  exp formando parte de sus nombres, como  expand, exp y exponentialize. De esta forma, si el usuario tan solo recuerda parte del nombre de algo, puede utilizar este comando para encontrar el resto del nombre. De manera semejante, también se puede hacer apropos (tr_) para encontrar una lista de muchas de las variables relacionadas con el traductor, buena parte de las cuales comienzan con tr_.

 -- Función: args (EXPR)

     Devuelve la lista de argumentos de expr, que puede ser cualquier tipo de expresión a excepción de un átomo. Tan solo se muestran los argumentos del operador principal; subexpresiones de expr aparecen como elementos o subexpresiones de elementos de la lista de argumentos.

     El orden de los miembros de la lista puede depender de la variable global inflag.

     La llamada args (EXPR) es equivalente a substpart ("[", EXPR, 0).

     Véanse también substpart y op.

 -- Variable optativa: genindex
     Valor por defecto: i

     La variable genindex es el prefijo alfabético utilizado para generar la siguiente variable de sumación en caso de necesidad.

 -- Variable optativa: gensumnum
     Valor por defecto: 0

     La variable gensumnum es el sufijo numérico utilizado para generar la siguiente variable de sumación. Si vale  false entonces el índice consistirá solamente de  genindex, sin sufijo numérico.

 -- Constante: inf

     Símbolo que identifica al infinito positivo dentro de un contexto de números reales.

 -- Constante: infinity

     Símbolo que identifica al infinito complejo, una magnitud infinita con ángulo de fase arbitrario.  Véanse también inf y minf.

 -- Variable del sistema: infolists
     Valor por defecto: []

     La variable infolists es una lista con los nombres de todas las listas que guardan información sobre Maxima. Estas son:

     labels
          Todas las etiquetas %i, %o y %t con valores asignados.

     values
          Todos los átomos que son variables de usuario, no opciones de Maxima creadas con  : o ::.

     functions
          Todas las funciones de usuario creadas con := o define.

     arrays
          Arreglos declarados y no declarados, creados por :, :: o :=.

     macros
          Cualquier macro definida por el usuario.

     myoptions
          Todas las opciones inicializadas por el usuario, independientemente de que posteriormente hayan sido devueltas a sus valores por defecto.

     rules
          Reglas de patrones y simplificación definidas por el usuario, creadas con tellsimp, tellsimpafter, defmatch o defrule.

     aliases
          Átomos que tienen un "alias" definido por el usuario, creado por las funciones alias, ordergreat o orderless o por haber declarado el átomo como noun (nombre) con declare.

     dependencies
          Átomos que tienen dependencias funcionales, creados por las funciones depends o gradef.

     gradefs
          Funciones que tienen derivadas definidas por el usuario, creadas por la función gradef.

     props
          Todos los átomos que tengan cualquier propiedad que no sea de las mencionadas hasta ahora, como las establecidas por atvalue, matchdeclare, etc., así como propiedadas especificadas en la función declare.

     let_rule_packages
          Todos los paquetes de reglas let definidos por el usuario, junto con el paquete especial default_let_rule_package; default_let_rule_package es el nombre del paquete de reglas utilizado cuando no se use ningún otro especificado por el usuario.

 -- Función: integerp (EXPR)

     Devuelve true si EXPR es un número entero y false en cualquier otro caso.

     La función integerp devuelve false si su argumento es un símbolo, incluso cuando éste ha sido declarado como entero.

     Ejemplos:

          (%i1) integerp (0);
          (%o1)                         true
          (%i2) integerp (1);
          (%o2)                         true
          (%i3) integerp (-17);
          (%o3)                         true
          (%i4) integerp (0.0);
          (%o4)                         false
          (%i5) integerp (1.0);
          (%o5)                         false
          (%i6) integerp (%pi);
          (%o6)                         false
          (%i7) integerp (n);
          (%o7)                         false
          (%i8) declare (n, integer);
          (%o8)                         done
          (%i9) integerp (n);
          (%o9)                         false

 -- Variable optativa: m1pbranch
     Valor por defecto: false

     La variable m1pbranch es la rama principal de -1 elevado a una potencia. Cantidades como (-1)^(1/3) (esto es, un exponente racional impar) y (-1)^(1/4) (esto es, un exponente racional par) son tratados como sigue:

                        dominio real

          (-1)^(1/3):      -1
          (-1)^(1/4):   (-1)^(1/4)

                       dominio complejo
          m1pbranch:false          m1pbranch:true
          (-1)^(1/3)               1/2+%i*sqrt(3)/2
          (-1)^(1/4)              sqrt(2)/2+%i*sqrt(2)/2

 -- Función: numberp (EXPR)

     Devuelve true si EXPR es un enúmero entero, racional, de coma flotante o "bigfloat", en caso contrario devuelve false.

     La función numberp devuelve false si su argumento es un símbolo, incluso cuando el argumento es un número simbólico como %pi o %i, o aunque haya sido declarado como even (par), odd (impar), integer (entero), rational (racional), irrational (irracional), real (real), imaginary (imaginario) o complex (complejo).

     Ejemplos:

          (%i1) numberp (42);
          (%o1)                         true
          (%i2) numberp (-13/19);
          (%o2)                         true
          (%i3) numberp (3.14159);
          (%o3)                         true
          (%i4) numberp (-1729b-4);
          (%o4)                         true
          (%i5) map (numberp, [%e, %pi, %i, %phi, inf, minf]);
          (%o5)      [false, false, false, false, false, false]
          (%i6) declare (a, even, b, odd, c, integer, d, rational,
               e, irrational, f, real, g, imaginary, h, complex);
          (%o6)                         done
          (%i7) map (numberp, [a, b, c, d, e, f, g, h]);
          (%o7) [false, false, false, false, false, false, false, false]

 -- Función: properties (A)

     Devuelve una lista con los nombres de propiedades asociadas con el átomo A.

 -- Símbolo especial: props

     props son átomos que tienen cualquier propiedad diferente de las mencionadas explícitamente en infolists, tales como las especificadas por atvalues, matchdeclares, etc., así como las propiedades especificadas mediante la función declare.

 -- Función: propvars (PROP)

     Devuelve una lista con aquellos átomos de la lista props que tienen la propiedad indicada por PROP.

 -- Función: put (ÁTOMO, VALOR, INDICADOR)

     Asigna el VALOR a la propiedad  (especificada por INDICADOR) de ÁTOMO; INDICADOR puede ser el nombre de cualquier propiedad y no solamente de aquellas definidas por el sistema.

     La función put evalúa sus argumentos y devuelve VALOR.

     Ejemplos:

          (%i1) put (foo, (a+b)^5, expr);
                                             5
          (%o1)                       (b + a)
          (%i2) put (foo, "Hello", str);
          (%o2)                         Hello
          (%i3) properties (foo);
          (%o3)            [[user properties, str, expr]]
          (%i4) get (foo, expr);
                                             5
          (%o4)                       (b + a)
          (%i5) get (foo, str);
          (%o5)                         Hello

 -- Función: qput (ÁTOMO, VALOR, INDICADOR)

     Asigna VALOR a la propiedad de ÁTOMO que especifique INDICADOR. Actúa del mismo modeo que put, excepto que sus argumentos no son evaluados.

     Ejemplo:

          (%i1) foo: aa$
          (%i2) bar: bb$
          (%i3) baz: cc$
          (%i4) put (foo, bar, baz);
          (%o4)                          bb
          (%i5) properties (aa);
          (%o5)                [[user properties, cc]]
          (%i6) get (aa, cc);
          (%o6)                          bb
          (%i7) qput (foo, bar, baz);
          (%o7)                          bar
          (%i8) properties (foo);
          (%o8)            [value, [user properties, baz]]
          (%i9) get ('foo, 'baz);
          (%o9)                          bar

 -- Función: rem (ÁTOMO, INDICADOR)

     Elimina del ÁTOMO la propiedad indicada por INDICADOR.

 -- Función: remove (A_1, P_1, ..., A_N, P_N)
 -- Función: remove ([A_1, ..., A_M], [P_1, ..., P_N], ...)
 -- Función: remove ("A", operator)
 -- Función: remove (A, transfun)
 -- Función: remove (all, P)

     Elimina propiedades asociadas con átomos.

     La llamada remove (A_1, P_1, ..., A_N, P_N) elimina la propiedad p_k del átomo a_k.

     La llamada remove ([A_1, ..., A_M], [P_1, ..., P_N], ...) elimina las propiedades P_1, ..., P_N de los átomos A_1, ..., A_M. Puede tener más de un par de listas.

     La llamada remove (all, P) elimina la propiedad P de todos los átomos que la tengan.

     Las propiedades eliminadas pueden ser de las que define el sistema, como function, macro o mode_declare, o de las que define el usuario.

     La llamada remove ("A", operator) o su equivalente remove ("A", op) elimina de  A las propiedades de operador declaradas por prefix, infix, nary, postfix, matchfix o nofix. Nótese que el nombre del operador debe escribirse como cadena precedida de apóstrofo.

     La llamada remove devuelve siempre done independientemente que haya algún átomo con la propiedad especificada.

 -- Función: remvalue (NOMBRE_1, ..., NOMBRE_N)
 -- Función: remvalue (all)

     Elimina del sistema los valores de las variable de usuario NOMBRE_1, ..., NOMBRE_N (incluso las que tienen subíndices).

     La llamada remvalue (all) elimina los valores de todas las variables en values, la lista de todas las variables a las que el usuario a dado algún nombre, pero no de aquéllas a las que Maxima asigna automáticamente un valor.

     Véase también values.

 -- Función: rncombine (EXPR)

     Transforma EXPR combinando todos los términos de EXPR que tengan denominadores idénticos o que difieran unos de otros por factores numéricos. Su comportamiento es diferente al de la función combine, que combina términos con iguales denominadores.

     Haciendo pfeformat: true y utilizando combine se consiguen resultados similares a aquéllos que se pueden obtener con  rncombine, pero rncombine realiza el paso adicional de multiplicar denominadores numéricos. Esto da como resultado expresiones en las que se pueden reconocer algunas cancelaciones.

 -- Función: scalarp (EXPR)

     Devuelve true si EXPR is un número, constante  o variable declarada como scalar con declare, o compuesta completamente de tales números, constantes o variables, pero que no contengan matrices ni listas.

 -- Función: setup_autoload (NOMBRE_FICHERO, FUNCIÓN_1, ..., FUNCIÓN_N)

     Especifica que si alguna de las funciones FUNCTION_1, ..., FUNCTION_N es referenciada pero todavía no ha sido definida, se cargará NOMBRE_FICHERO mediante una llamada a load. El NOMBRE_FICHERO normalmente contendrá las definiciones de las funciones especificadas, aunque esto no es imperativo.

     La función setup_autoload no opera con arreglos de funciones.

     La función setup_autoload no evalúa sus argumentos.

     Ejemplo:

          (%i1) legendre_p (1, %pi);
          (%o1)                  legendre_p(1, %pi)
          (%i2) setup_autoload ("specfun.mac", legendre_p, ultraspherical);
          (%o2)                         done
          (%i3) ultraspherical (2, 1/2, %pi);
          Warning - you are redefining the Macsyma function ultraspherical
          Warning - you are redefining the Macsyma function legendre_p
                                      2
                           3 (%pi - 1)
          (%o3)            ------------ + 3 (%pi - 1) + 1
                                2
          (%i4) legendre_p (1, %pi);
          (%o4)                          %pi
          (%i5) legendre_q (1, %pi);
                                        %pi + 1
                                %pi log(-------)
                                        1 - %pi
          (%o5)                 ---------------- - 1
                                       2