体贴推理与组合设计模式
1. 结构不变式与不可靠声明
结构不变式是一种特殊的不变式,可在不变式声明前使用关键字 “structural” 进行标记,默认情况下不变式并非结构不变式。以下是关于结构不变式和不可靠声明的相关规则:
1. 关注描述限制 :关注描述 D 仅允许在支持不变式中提及结构不变式。
2. 不可靠块构造 :可以在不包含任何方法调用的语句序列周围放置作用域构造 “unreliable: I1, I2, …, In{..}”,用于指定在该作用域内哪些结构不变式可能被破坏。
3. 程序限制 :
- 对于任何字段更新 e.f = e′ 和任何不变式 I,如果 D(f, I)↓1[e/mod] 非空,则该字段更新不得出现在命名了 D(f, I)↓2 中任何(结构)不变式 I′ 的不可靠声明内。
- 如果 I 本身是结构不变式,则该字段更新必须出现在声明了 I 的不可靠块内。
4. 不可在破坏声明中提及 :结构不变式不得在破坏声明中提及。
这些限制可通过对程序代码的语法检查来保证,不会为验证过程引入额外的证明义务。这种方法确保结构不变式仅能在明确声明可能破坏它们的不可靠块内被违反,并且只有在这些块的作用域之外,才能依赖结构不变式准确预测字段更新的影响。此外,在不可靠块内被破坏的任何结构不变式应在块结束时重新建立。
2. 验证技术
-
脆弱不变式 :如果在代码的某个点无法保证对象的不变式成立,
超级会员免费看
订阅专栏 解锁全文
945

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



