【24h】

Automata as Proofs

机译:自动机作为样张

获取原文

摘要

A recent approach to the verification of programs constructs a correctness proof in the form of a finite automaton. The automaton recognizes a set of traces. Here, a trace is any sequence of statements (not necessarily feasible and not necessarily on a path in the control flow graph of the program). A trace can be formalized as a word over the alphabet of statements. A trace can also be viewed as as special case of a program. Applying static analysis or a symbolic method (e.g., SMT solving with interpolant generation) to a single trace τ, a correctness proof for the trace τ can be obtained in the form of a sequence of consecutive Hoare triples (or, phrased differently, an inductive sequence of assertions). We can construct an automaton that contains a transition qΦa /→ qΦ' for each Hoare triple {Φ}a{Φ'} in the correctness proof for the trace τ. The automaton accepts the trace τ. In fact, the automaton accepts all traces whose correctness proof uses the same set of Hoare triples as the trace τ. Given a program and a number of traces τ_1,..., τ_n of the program, we can construct an automaton from the n different correctness proofs for the traces τ_1,..., τ_n. The automaton recognizes a set of correct traces. We still need to check whether this set includes all the traces on a path in the control flow graph of the program. The check is an automata-theoretic operation (which is reducible to nonreachability in a finite graph). That is, the two steps of constructing and checking a proof neatly separate the two concerns of data and control in program verification. The construction of a proof in the form of an automaton accounts for the interpretation of statements in data domains. The automaton, however, has a meaning that is oblivious to the interpretation of statements: a set of words over a particular alphabet. The check of the proof uses this meaning of the automaton and accounts for the control flow of the program. The implementation of the check of the proof as an automata-theoretic inclusion check is reminiscent of model checking (the finite control flow graph defines the model, the automaton defines the property). The resulting verification method is not compositional in the syntax of the program; it is compositional in a new, semantics-directed sense where modules are sets of traces; the sets of traces are constructed from mutually independent correctness proofs and intuitively correspond to different cases of program executions. Depending on the verification problem (the correctness property being safety or termination for sequential, recursive, or concurrent programs), the approach uses non-deterministic automata, nested-word automata, Büchi automata, or alternating automata as proofs; see, e.g., [2,3,1].
机译:最近验证程序的方法以有限自动机构的形式构建了正确的证据。自动机识别一组痕迹。这里,迹线是任何序列语句(不一定是可行的,并且不一定在程序的控制流程图中的路径上)。可以以语句的字母形式形式化一条跟踪。还可以将迹线视为程序的特殊情况。应用静态分析或符号方法(例如,用内括的SMT溶解)到单个迹线τ,可以以连续的HOARE三元组的序列的形式获得痕迹τ的正确性证明(或者不同的措辞,感应断言序列)。我们可以构建一个自动机,该自动机在跟踪τ的正确性证明中,每个HOARE三重{φ'}的转换Qφa/→qφ'。自动机接受跟踪τ。实际上,自动机接受所有正确证明使用与迹线τ相同的Hoare三元组的迹线。鉴于程序和程序的许多迹线τ_1,...,τ_n,我们可以从N个不同的正确正确迹线的Automaton构建自动机τ_1,...,τ_n。自动机识别一组正确的迹线。我们仍然需要检查该组是否包括程序中控制流程图中的路径上的所有痕迹。检查是自动机 - 理论操作(可在有限图中将不可丧死性还原)。也就是说,构建和检查证明的两个步骤整齐地分离了数据和控制在程序验证中的两个问题。以自动机构的形式构建证明,用于解释数据域中的陈述。然而,自动机的意义是对陈述的解释是令人遗憾的:特定字母表中的一组单词。证明的检查使用自动机的此含义,并考虑了程序的控制流程。将证明作为自动定理夹杂物检查的检查的实施是想起模型检查(有限控制流程图定义了模型,自动机定义了该属性)。结果验证方法在程序的语法中不是组成;它是一种新的语义导向的感觉,其中模块是迹线组;这些迹线组由相互独立的正确性证明构建,并直观地对应于不同的程序执行情况。根据验证问题(正确性属性是顺序,递归或并发程序的安全或终止),该方法使用非确定性自动机,嵌套Word自动机,Büchi自动机或交替自动数据作为样张;参见例如[2,3,1]。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号