关于正则表达式的证明

时间:2009-05-22 12:26:41

标签: regex types proof coq agda

有谁知道以下任何例子?

  1. 证明助理(例如regular expressions)中关于backreferences(可能会延伸至Coq)的证据开发。
  2. 关于正则表达式的依赖类型语言(例如Agda)的程序。

5 个答案:

答案 0 :(得分:12)

Certified Programming with Dependent Types有一节介绍如何创建经过验证的正则表达式匹配器。 Coq Contribsautomata contribution可能有用。 Jan-Oliver Kaiser将正则表达式,有限自动机和Coq中的Myhill-Nerode特征描述为bachelors thesis形式化。

答案 1 :(得分:9)

Moreira,Pereira& de Sousa,On the Mechanisation of Kleene Algebra in Coq给出了Coq中retimxps的Antimirov导数的一个很好的验证结构。从这种结构中读取CFA并计算正则表达式的交集非常容易。

我不确定为什么要将Coq与依赖类型编程分开:Coq本质上是在具有归纳类型的多态依赖类型lambda演算中编程(即CIC,归纳结构的演算)。

我从来没有听说过依赖类型语言的正则表达式的形式化,也没有听说过类似于带有回溯的正则表达式的类似Antimirov的导数,但是Becchi& Crowley,Extending Finite Automata to Efficiently Match Perl-Compatible Regular Expressions提供了有限状态自动机的概念,它与类似Perl的正则表达式语言相匹配。这可能在不久的将来对正规商有吸引力。

答案 2 :(得分:6)

请参阅Perl Regular Expression Matching is NP-Hard

  

当允许正则表达式进行反向引用时,正则表达式匹配是NP-hard。

     

Reduction of 3-CNF-SAT to Perl Regular Expression Matching

     

[...] 3-CNF-SAT是NP完整的。如果有   是有效的(多项式时间)   用于计算是否的算法   正则表达式匹配某个字符串,我们   可以用它来快速计算   解决3-CNF-SAT问题,   并且,通过扩展,到背包   问题,旅行推销员   问题等等。

答案 3 :(得分:5)

我不知道任何自己处理正则表达式的开发。

有限自动机,因为NFAs是匹配这些正则表达式的标准方法,因此在NuPRL中进行了研究。请查看:Robert L. Constable, Paul B. Jackson, Pavel Naumov, Juan Uribe. Constructively Formalizing Automata Theory

您是否有兴趣通过algebra处理这些正式语言,尤其是正在开发finite semigroup theory,您可以考虑使用number在各种定理证明中开发algebra libraries one particularly efficient in a finite setting {{3}}。

答案 4 :(得分:4)

证明助理Isabelle / HOL提供了许多关于正则表达式的正式证明(没有后向参考): http://afp.sourceforge.net/browser_info/devel/HOL/Regular-Sets/

here是作者关于他们究竟做了什么的论文。

另一种方法是通过Myhill-Nerode Theorem来表征正则表达式: http://www.dcs.kcl.ac.uk/staff/urbanc/Publications/itp-11.pdf