2009-04-10 5 views
8

Estoy buscando una herramienta (GUI preferida pero la CLI funcionaría) que me permite ingresar expresiones matemáticas y luego realizar manipulaciones de ellas, pero me restringe solo a operaciones matemáticamente válidas. Además, la herramienta debe poder guardar una sesión y luego demostrar que el conjunto dado de operaciones guardadas es válido.Sistema interactivo de prueba de matemáticas

Nota: No soy buscando un sistema para generarpruebas, solo que comprobar que los pasos que especificar manualmente son válidos.

He usado ACL2 para operaciones similares y lo hace bien en algunos casos, pero es muy difícil de usar para todo lo demás.

This little project is my motivation. Es un tipo de plantilla D que permite resolver ecuaciones. Dada esta ecuación:

(A * B) = C + D/F; 

Cualquier uno de los símbolos se puede configurar como desconocido y la evaluación de que la expresión tendrá como resultado un una asignación a esa variable. Funciona construyendo árboles de expresiones en el tipo y luego usando reglas de reescritura para convertirlo en algo que se puede eventuar para el tipo desconocido.

Lo que necesito es una forma de validar la regla de reescritura. Se pueden validar comprobando la afirmación de que dada cierta relación es verdadera, otra es también.

+0

¿Qué tipo de matemáticas? Álgebra abstracta, álgebra lineal, análisis funcional ...? –

+0

@BCS, tengo que admitir que el código fuente, etc., no hizo su intención simplemente obvia. ¿Crees que podrías resumir un poco cuáles son tus objetivos? –

+0

@Charlie: b, tienes un punto. – BCS

Respuesta

6

ACL2 es notorio: solíamos decir que era un sistema experto, por lo que solo podían usarlo expertos que tuvieran que aprender de Warren Hunt, J Moore o Bob Boyer. Lo que debe hacer en ACL2 es realmente entender cómo funciona el sistema de prueba; entonces puede "insinuarlo" en direcciones que reducen el espacio de búsqueda.

Existen varios otros sistemas que pueden ayudar con este tipo de cosas, sin embargo, dependiendo de lo que intente hacer.

Si desea trabajar con matemática continua o teoría de números, el ideal es Mathematica. El problema es que puedes comprar un auto usado por la misma cantidad de dinero (a menos que califiques para una licencia académica, un trato mucho mejor).

Algo similar, y gratis, es Open Maxima, que es una extensión de Macsyma. Esa página también apunta a varios otros como Axiom, con los que no tengo experiencia.

Para las operaciones de lógica matemática, hay PVS de SRI. Tienen otras cosas interesantes como la comprobación de modelos en el mismo marco.

+1

A menos que ACL2 simplemente se da por vencido después de un tiempo determinado, nunca me encontré con problemas de tamaño de espacio de búsqueda. Simplemente no pudo encontrar pruebas sin muchos lemas. – BCS

+0

Claro, pero eso sigue siendo un problema de limitar el espacio de búsqueda; es lo suficientemente inteligente como para no CONS en exceso para la memoria. Los lemas, junto con la organización de sus cláusulas para obtener la búsqueda óptima, son los "consejos" en los que estoy pensando. –

+0

He deseado una interfaz de usuario ACL2 para alimentarlo exactamente con lo que se debe hacer y eso arroja el código ACL2 con sugerencias que indican al motor de pruebas que haga exactamente lo correcto en cada paso. YMMV, pero nunca encontré que ACL2 me hiciera cosas más rápidas que hacerlo solo. Más exacto, sí, más rápido no. – BCS

1

Además de los enlaces de Charlie Martin, es posible que también desee consultar Maple. Mi experiencia con este tipo de software tiene alrededor de 5 años, pero recuerdo que en ese momento Maple era mucho más intuitivo que Mathematica.

+0

Sí, iría con Maple sobre Mathematica cualquier día – Ankur

+1

Según mi edición, no estoy buscando un sistema para hacer el trabajo por mí (como el arce IIRC) sino un sistema para simplemente verificar mi trabajo. – BCS

2

Hay investigaciones en curso en esta área, se llama "Teorema que demuestra en álgebra de la computadora".

Las personas están tratando de combinar la facilidad de uso y el poder de los sistemas de álgebra computacional como Mathematica, Maple, ... con el rigor lógico de los sistemas de prueba. Los problemas son:

  • Los sistemas de álgebra computarizada no son rigurosos. Tienden a olvidar condiciones secundarias como que un divisor no debe ser 0.

  • Los sistemas de prueba son difíciles y tediosos de usar (como usted ha descubierto).

+0

Da la casualidad que el problema de n/0 no es un problema para mis casos dados porque el resultado de ignorar eso es exactamente lo que quiero que ocurra. – BCS

6

Varios asistentes a prueba de estadounidenses ya se mencionaron (por lo general con la sintaxis LISP), asi que aquí hay una lista Europa centradas para complementar que:

Todos ellos son notorios para las interfaces de TTY, pero Coq e Isabelle proporcionan un buen soporte para la prueba Generales/Emacs interfaz. Además, Coq viene con CoqIDE, que se basa en OCaml/GTK y el widget de texto incorporado. La versión reciente de Isabelle incluye el IDE Isabelle/jEdit Prover, que se basa en jEdit y se complementa con el marcado semántico proporcionado por el probador en tiempo real a medida que el usuario escribe.

+0

Algunas personas usan CoqIDE con Coq también. – t0yv0

+1

He actualizado mi respuesta en consecuencia, para incluir CoqIDE. – Makarius

1

El lean prover es interactivo a través de un JS gui.

+0

También tiene un modo Emacs. [Aquí] (http://leanprover.github.io/presentations/20150123_lean-mode/lean-mode.pdf) son diapositivas que describen 'lean-mode'. –