我试图指定外部函数的行为,更准确地说,它们的终止。 ACSL文档说明\terminates p;
属性指定如果谓词p
成立,则保证函数终止,但在p
不成立时指定任何内容。它还解释了永远不会返回的函数可以通过以下方式指定:
//@ ensures \false ; terminates \false ;
此外,ACSL提供了一个属性\exits p;
来指定突发终止时的后置条件。所以我想知道是否:
//@ ensures \false ; exits \false; terminates \false ;
会指定函数永远循环吗?
此外,规范是什么:
//@ ensures p ; exits q; terminates \false ;
意味着可能的无限循环?
答案 0 :(得分:1)
你的规范是最接近的,可以说是一个函数永远循环,但我仍然看到两个角落的情况:
WP
+ genassigns
或Value
)