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 CTL on BPP. We propose constraint-based algorithms for the problem of model checking CTL 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 上的CTL 的首个示范检查器BPCS 。 我们提议了基于限制的算法,以解决示范检查 BPP 上的CTL 和SMT 解答器 Z3 处理公式的问题。 对于EF 操作员来说,我们将EF- 格式的示范检查减少为存在Prespurger 公式的可视性问题。 对于EGO操作者来说,我们提供了一种用美元分步约束的语法检查器, 将EG- 公式的示范检查减少对线性算术的可对比性问题。 此外,我们给Actor Commation Sy系统(ACS) 过度应用 BPPP- checking Bral 系统, 演示现有的BLABCSlax Arrang 系统, 的目前 Blax Ral 系统, 的BLislang 程序是如何演示 Bladal 的BLI 程序, 的BLILIPS