2012-01-14 16 views
17

Recentemente ho scoperto circa Kleene algebra per la manipolazione e la semplificazione delle espressioni regolari.Semplifica l'espressione regolare in Mathematica

Mi chiedo se questo è stato integrato in programmi software computazionali come Mathematica? Sarebbe bello avere uno strumento computazionale per fare unioni e concatenazioni di grandi espressioni e far sì che il computer li semplifichi.

Se non sei a conoscenza di alcun programma con questo algebra integrato, conosci qualche programma che consente di estendere i loro motori con nuove algebre?

+1

La documentazione di Mathematica contiene un'esercitazione dettagliata su [Lavorare con i modelli di stringhe] (http://reference.wolfram.com/mathematica/tutorial/WorkingWithStringPatterns.html). Potrebbe essere un buon punto di partenza. – kglr

+2

@kguler: tutta la documentazione che ho trovato, incluso questo tutorial, considera solo l'utilizzo di espressioni regolari per scopi di base per la corrispondenza e la manipolazione delle stringhe. –

+4

Potresti aggiungere un esempio di un problema specifico che vorresti risolvere? Potrebbe essere un esempio di giocattolo per illustrare le funzionalità necessarie. –

risposta

5

Su http://www.maplesoft.com/msw/program/MSW04FinalProgram.pdf, essa afferma:

Uno dei risultati fondamentali della teoria degli automi finiti è il famoso teorema Kleene, in cui si afferma che una lingua è accettabile da un automa a stati finiti se e solo se può essere rappresentato da un'espressione regolare .

e

La difficoltà principale del trattamento algoritmica dei regolari espressioni è, tuttavia, la loro semplificazione. Sebbene siano note più identità relative alle espressioni regolari, ad esempio le regole dell'algebra di Kleene, non esiste un algoritmo efficace per che risolva il problema di semplificazione delle espressioni regolari.

e

In queste circostanze, l'unico modo è quello di sviluppare sinistra euristiche algoritmi per la semplificazione delle espressioni regolari. Per il pacchetto aut, , questo documento descrive le procedure Maple Rsimplify, Rabsorb e Rexpand.

Mi chiedo se esistono implementazioni open-source di algoritmi Kleene Algebra.

+1

Vedo. Pensavo che esistessero sistemi per semplificare tutte le algebre, come Knuth-Bendix per gruppi, ma ora chiaramente non ci sono. Questa domanda: http://stackoverflow.com/questions/7540227/strategies-for-semplifying-math-expressions parla di sistemi basati su regole per semplificare l'aritmetica standard e questo documento: http://alleystoughton.us/forlan/book-and -slides/slides-3.2-twoup.pdf dà un sacco di buone regole per iniziare. Tuttavia mi chiedo ancora se ho davvero bisogno di scrivere un sistema di riscrittura dei termini da zero, o ci sono quelli in cui posso inserirmi. Forse alcuni di quelli di Automated_theorem_prover? –