Moreira, Pereira & de Sousa, On the Mechanisation of Kleene Algebra in Coq gibt eine schön verifizierte Konstruktion des Antimirov-Derivats von Regexps in Coq. Es ist ziemlich einfach, einen CFA von dieser Konstruktion abzulesen und die Schnittmenge von Regexps zu berechnen.
Ich bin nicht sicher, warum Sie Coq von abhängig typisierten Programmierung zu trennen: Coq ist im Wesentlichen Programmieren in einem polymorphen abhängig typed Lambda-Kalkül mit induktiven Typen (d. H. CIC, der Kalkül der induktiven Konstruktionen).
Ich habe noch nie von einer Formalisierung von regexps in einer abhängig typisierte Sprache gehört, noch habe ich etwas wie ein Antimirov artigen Derivat für regexps mit Rückziehern gehört, aber Becchi & Crowley, bietet Extending Finite Automata to Efficiently Match Perl-Compatible Regular Expressions eine Vorstellung von endlichen Automaten, die mit Perl-ähnlichen Regexp-Sprachen übereinstimmen. Das könnte in naher Zukunft für Formalisierer attraktiv sein.
Laut „Reguläre Ausdrücke“ (ein Buch, das ich empfehlen, siehe http://regex.info/) reguläre Ausdrücke durchaus nicht regelmäßig sind in Aufgrund ihrer verbesserten Fähigkeiten ist die mathematische Theorie nur für einfache Regex-Typen verfügbar. Hat das Auswirkungen auf die Verwendung in der Proof-Unterstützung? –
Ja, tut es: es macht Beweise komplizierter :) In der Tat, mit "regulären Ausdrücken" meine ich die grundlegenden, die streng in der formalen Sprachtheorie definiert sind. Ich würde gerne wissen, ob es Versuche gab, Rückreferenzen oder andere nicht-reguläre Konstruktionen zu spezifizieren. Ich bin mir der ziemlich beschränkten Formalisierung von grundlegenden r.e. in Nuprl und Coq. Da diese Formalisierungen eher von der Theorie als von der Programmierungspraxis herrührten, berücksichtigten sie nicht nicht reguläre Merkmale. –