Moreira, Pereira & de Sousa, On the Mechanisation of Kleene Algebra in Coq donne une belle construction vérifiée de la dérivée Antimirov des regexps dans Coq. Il est assez facile de lire un CFA à partir de cette construction, et de calculer l'intersection des expressions rationnelles. Je ne suis pas sûr de savoir pourquoi vous séparez Coq de la programmation typée dépendante: Coq est essentiellement la programmation dans un lambda-calcul polymorphe de type dépendante avec des types inductifs (c.-à-d. CIC, le calcul des constructions inductives).
Je ne l'ai jamais entendu parler d'une formalisation des expressions régulières dans une langue dépendamment tapé, et je n'ai entendu parler de quelque chose comme un dérivé Antimirov comme pour regexps avec retours en arrière, mais Becchi & Crowley, Extending Finite Automata to Efficiently Match Perl-Compatible Regular Expressions fournir une notion de finie automates d'état qui correspondent à des langages d'expression rationnelle de type Perl. Cela pourrait intéresser les formalisateurs dans un proche avenir.
Selon « Maîtrise des expressions régulières » (un livre que je recommande, voir http://regex.info/) les expressions régulières sont tout à fait non régulière En raison de leurs capacités améliorées, la théorie mathématique n'est disponible que pour les types regex simples/basiques. Est-ce que cela a des implications pour les utiliser dans l'aide à la preuve? –
Oui, c'est le cas: cela rend les preuves plus compliquées :) En fait, par "expressions régulières", je veux dire celles qui sont strictement définies dans la théorie du langage formel. J'aimerais savoir s'il y a eu des tentatives pour spécifier des références arrières ou d'autres constructions non-régulières. Je suis conscient de formalisations assez limitées de r.e. à Nuprl et Coq. Puisque ces formalisations découlaient de la théorie, plutôt que de la pratique de programmation, elles ne tenaient pas compte des caractéristiques non régulières. –