基于最弱前置条件的程序健壮性分析
1. 最弱前置条件与健壮性证明
在程序健壮性的研究中,我们关注程序在面对各种攻击时的安全性。对于程序 $P_w[\vec{•}]$,它相对于不公平攻击是健壮的,当且仅当 $P[\vec{•}]$ 相对于不公平攻击是健壮的,并且满足后置条件 $Wlpi(P_w[\vec{•}], Φ)$。
我们通过对 $P_1[\vec{•}]$ 的结构进行归纳证明。若 $P_1[\vec{•}]$ 是带空洞的直线程序(如定理 1 的假设),则应用该定理检查健壮性;否则,若 $P_1[\vec{•}]$ 是条件语句,根据归纳假设,结论显然成立。对于循环情况,需应用第 3.3 节描述的递归计算。
例如,考虑程序 $P$:
P ::=
⎡
⎣
k := h mod 3;
if (h mod 2 = 0) then[•]; l := 0; k := l;
else l := 1;
其中 $h : HH$,$l : LL$,$k : LL$。对初始公式 ${l = m ∧ k = n}$ 应用最弱自由前置条件规则,得到:
$
(h mod 2 = 0 ∧ m = 0 ∧ n = 0)∨
(h mod 2 ̸= 0 ∧ m = 1 ∧ k = n)
'
if (h mod 2 = 0) then [•]; l := 0; k := l; else l := 1;
{l = m ∧ k = n}
对应 then 分支(包含空洞
超级会员免费看
订阅专栏 解锁全文
2808

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



