论文标题
经过认证的关系属性验证
Certified Verification of Relational Properties
论文作者
论文摘要
使用函数合同来指定功能的行为通常仅限于单个函数调用的范围。关系属性在单个规范中将几个函数链接在一起。它们可以表达给定功能的更高级属性,例如非干预,连续性或单调性。他们还可以将呼叫与不同功能联系起来,例如,表明优化的实现等同于其原始对应物。但是,关系属性不能直接在传统的模块化演绎验证的环境中表达和验证。已经提出了自我组成来克服这一限制,但是它需要复杂的转换和用指针的现实生活中的其他分离假设。我们提出了一种不基于代码转换并避免这些缺点的新颖方法。它直接应用了验证条件发生器来生成必须验证的逻辑公式,以确保给定的关系属性。在COQ证明助理中,该方法已完全正式化并得到了证明。
The use of function contracts to specify the behavior of functions often remains limited to the scope of a single function call. Relational properties link several function calls together within a single specification. They can express more advanced properties of a given function, such as non-interference, continuity, or monotonicity. They can also relate calls to different functions, for instance, to show that an optimized implementation is equivalent to its original counterpart. However, relational properties cannot be expressed and verified directly in the traditional setting of modular deductive verification. Self-composition has been proposed to overcome this limitation, but it requires complex transformations and additional separation hypotheses for real-life languages with pointers. We propose a novel approach that is not based on code transformation and avoids those drawbacks. It directly applies a verification condition generator to produce logical formulas that must be verified to ensure a given relational property. The approach has been fully formalized and proved sound in the Coq proof assistant.