2012-01-14 32 views
17

Recientemente encontré información sobre Kleene algebra para manipular y simplificar expresiones regulares.Simplifique la expresión regular en Mathematica

Me pregunto si esto ha sido incorporado en cualquier programa de software computacional como Mathematica? Sería grandioso tener una herramienta computacional para hacer uniones y concatenaciones de expresiones grandes y hacer que la computadora las simplifique.

Si no conoce ningún programa con este álgebra, ¿conoce algún programa que permita ampliar sus motores con álgebras nuevas?

+1

La documentación de Mathematica contiene un tutorial detallado sobre [Trabajar con String Patterns] (http://reference.wolfram.com/mathematica/tutorial/WorkingWithStringPatterns.html). Puede ser un buen lugar para comenzar. – kglr

+2

@kguler: toda la documentación que he encontrado, incluido el tutorial, solo considera el uso de expresiones regulares para la coincidencia de cadenas básicas y la manipulación. –

+4

¿Podría agregar un ejemplo de un problema específico que le gustaría resolver? Podría ser un ejemplo de juguete para ilustrar la funcionalidad necesaria. –

Respuesta

5

En http://www.maplesoft.com/msw/program/MSW04FinalProgram.pdf, se indica:

Uno de los resultados fundamentales de la teoría de autómatas finitos es el famoso teorema de Kleene, que establece que una lengua es aceptable por un autómata finito si y sólo si se puede representar mediante una expresión regular .

y

La principal dificultad del tratamiento algorítmico de expresiones regulares es, sin embargo, su simplificación. Aunque se conocen varias identidades con respecto a expresiones regulares, por ejemplo, las reglas del álgebra de Kleene, no existe un algoritmo efectivo para que resuelva el problema de simplificación de expresiones regulares.

y

Dadas las circunstancias, el único camino que queda es el desarrollo de algoritmos heurísticos para simplificar las expresiones regulares. Para el paquete aut, , este documento describe los procedimientos de Arple Rsimplify, Rabsorb y Rexpand.

Me pregunto si existen implementaciones de código abierto de los algoritmos de Kleene Algebra.

+1

Ya veo. Pensé que había sistemas para simplificar todas las álgebras, como Knuth-Bendix para grupos, pero ahora claramente no las hay. Esta pregunta: http://stackoverflow.com/questions/7540227/strategies-for-simplifying-math-expressions habla sobre sistemas basados ​​en reglas para simplificar la aritmética estándar y este documento: http://alleystoughton.us/forlan/book-and -slides/slides-3.2-twoup.pdf da muchas buenas reglas para comenzar. Sin embargo, todavía me pregunto si realmente necesito escribir un sistema de reescritura de términos a partir de cero, o hay algunos en los que puedo conectarme. Tal vez algunos de esos Automated_theorem_prover? .. –