Moreira, Pereira & de Sousa, On the Mechanisation of Kleene Algebra in Coq dà una bella costruzione verificata del derivato Antimirov di regexps in Coq. È abbastanza facile leggere un CFA da questa costruzione e calcolare l'intersezione delle espressioni regolari.
Non sono sicuro del motivo per cui si separa il Coq dalla programmazione tipizzata in modo dipendente: Coq essenzialmente è la programmazione in un calcolo lambda tipicamente tipizzato polimorfico con tipi induttivi (cioè CIC, il calcolo delle costruzioni induttive).
Non ho mai sentito parlare di una formalizzazione di espressioni regolari in una lingua dipendente tipizzato, né ho sentito parlare di qualcosa come un derivato Antimirov simile per espressioni regolari con backtracking, ma Becchi & Crowley, Extending Finite Automata to Efficiently Match Perl-Compatible Regular Expressions fornire una nozione di finite- stato automata che corrisponde a un linguaggio regexp simile a Perl. Ciò potrebbe attrarre i formalisti nel prossimo futuro.
fonte
2009-12-24 22:26:35
Secondo "Mastering Regular Expressions" (un libro che consiglio, vedi http://regex.info/) le espressioni regolari sono abbastanza non regolare Infatti, grazie alle loro capacità potenziate, la teoria matematica è disponibile solo per i tipi di espressioni regolari semplici/di base. Questo ha implicazioni per usarli nell'assistenza alla prova? –
Sì, lo fa: rende le prove più complicate :) Infatti, per "espressioni regolari" intendo quelle fondamentali che sono strettamente definite nella teoria del linguaggio formale. Mi piacerebbe sapere se ci sono stati tentativi di specificare backward o altre costruzioni non regolari. Sono a conoscenza di formalizzazioni piuttosto limitate di base r.e. in Nuprl e Coq. Dal momento che queste formalizzazioni derivavano dalla teoria, piuttosto che dalla pratica della programmazione, non rendevano conto delle caratteristiche non regolari. –