与模型检查器等价的类型系统
1. 引言
在程序验证领域,类型系统和模型检查器是两种重要的工具。类型系统通过为程序语句分配类型来检查程序的安全性,而模型检查器则通过对程序的状态空间进行搜索来验证程序是否满足特定的属性。本文将介绍一种与模型检查器等价的类型系统,即一个程序通过类型检查当且仅当模型检查器接受该程序。
2. 类型系统
类型系统为程序中的每个语句分配一种形式为 $\bigwedge_{i\in A}(\omega_i \to \bigvee_{j\in B_i} \omega_j)$ 的类型,其中 $A$ 和 $\forall i \in A : B_i$ 是 $\Omega$ 的子集,$\Omega$ 是有限的。直观地说,这个类型表示在上下文集合 ${ \omega_i | i \in A }$ 中的任何一个上下文中开始执行该语句是安全的,并且如果在上下文 $\omega_i$($i \in A$)中开始执行,那么它将在上下文集合 ${ \omega_j | j \in B_i }$ 中的某个上下文中结束执行。
类型系统还包括两种特殊类型:
- $\top \triangleq \bigwedge \varnothing$,用于处理 $A$ 为空的情况。
- $\bot \triangleq \bigvee \varnothing$,用于处理任何 $B_i$($i \in A$)为空的情况。
类型规则如下:
|规则编号|规则内容|
| ---- | ---- |
|(12)|$s : \bigwedge_{i\in A}(\omega_i \to \bigvee_{j\in B_
超级会员免费看
订阅专栏 解锁全文
1672

被折叠的 条评论
为什么被折叠?



