程序验证(十一):演绎验证(下)
新特征引入
向Imp语言引入新的特征:
- 断言注释(assertion annotation)
- 过程(procedure)
断言
断言注释具有以下形式:
{ P } \{P\} {
P}
从语义上说,它们与运行时断言(runtime assertion)一样(比如c里面的assert)
如果当前环境使得断言表达式为假,程序停止执行
程序
举个例子:
p r o c L i n e a r S e a r c h ( a : a r r a y , l : i n t , u : i n t , e : i n t ) \mathbf{proc}~LinearSearch(a:~array,l:~int,u:~int,e:~int) proc LinearSearch(a: array,l: int,u: int,e: int)
r e q u i r e s 0 ≤ l ∧ u < ∣ a ∣ \mathbf{requires}~0\le l\wedge u<|a| requires 0≤l∧u<∣a∣
e n s u r e s ( r v