4、基于约束 Horn 子句的程序验证

基于约束 Horn 子句的程序验证

1. 基于 CHC 方法的程序验证工具

基于约束 Horn 子句(CHC)方法,存在多个有效的程序验证工具,具体如下:
| 工具名称 | 适用语言 |
| ---- | ---- |
| SeaHorn | C/C++ |
| JayHorn | Java |
| HornDroid | Android 信息流验证 |
| RustHorn | Rust |
| SmartACE、Solidity Compiler Model Checker | Solidity |

将程序验证(和模型检查)简化为一阶逻辑(FOL)可满足性的思想已得到深入研究。例如,在程序验证中使用约束逻辑编程(CLP),或在指针分析中使用 Datalog。独特之处在于将 SMT 求解器应用于决策过程,并将模型检查和程序验证社区开发的技术提升到 CHC 公式可满足性的统一环境中。

2. 约束 Horn 子句逻辑

2.1 CHC 定义

约束 Horn 子句(CHC)逻辑是 FOL 的一个片段。假设 Σ 是某个固定的 FOL 签名,A 是基于 Σ 的 FOL 理论。一个约束 Horn 子句是如下形式的 FOL 句子:
[
\forall V \cdot (\phi \land p_1(X_1) \land \cdots \land p_k(X_k) \Rightarrow h(X))
]
其中,V 是句子主体中所有自由变量的集合,({p_i} {i = 1}^k) 和 h 是未解释的谓词符号,({X_i}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值