Program verification on concurrent programs is a big challenge due to general undecidable results. Petri nets and its extensions are used in most works. However, existing verifiers based on Petri nets are difficult to be complete and efficient. Basic Parallel Process (BPP), as a subclass of Petri nets, can be used as a model for describing and verifying concurrent programs with lower complexity. We propose and implement BPPChecker, the first model checker for verifying a subclass of CTL on BPP. We propose constraint-based algorithms for the problem of model checking on BPPs and handle formulas by SMT solver Z3. For EF operator, we reduce the model checking of EF-formulas to the satisfiability problem of existential Presburger formula. For EG operator, we provide a k-step bounded semantics and reduce the model checking of EG-formulas to the satisfiability problem of linear integer arithmetic. Besides, we give Actor Communicating System (ACS) the over-approximation BPP-based semantics and evaluate BPPChecker on ACSs generated from real Erlang programs. Experimental results show that BPPChecker performs more efficiently than the existing tools for a series of branching-time property verification problems of Erlang programs.
翻译:由于一般的不可估量的结果,对并行程序的程序进行核查是一项巨大的挑战。 Petri 网及其扩展在大多数工作中都使用。 但是,基于Petri 网的现有核查器很难完整和高效。 基本平行程序(BPP),作为Petri 网的子类,可以用作描述和核查复杂程度较低的并行程序的模式。 我们提议并实施BPP checker(BP checker)(BPP),这是用于核查BPP上一个子类CTL的首个示范检查器)的示范检查器。 此外,我们为基于 SPP 的模型检查问题提出基于限制的算法,并处理 SMT 求解的公式。 对于EF 操作员来说,我们很难将EF- 格式的示范检查器降低到存在Prespurger 公式的可视性问题。 对于EGP- Construal 程序,我们提供了一个K-BPP- checker 系统, 以更高效的方式展示了目前ABP- Checker 的ARC 系统, 的实验性程序将展示为ABCSLA 的系统。