gpt4 book ai didi

frama-c - 可能无限的 C 函数的 ACSL 规范

转载 作者:行者123 更新时间:2023-12-02 17:10:00 26 4
gpt4 key购买 nike

我试图指定外部函数的行为,更准确地说,是它们的终止。 ACSL 文档表示 \terminates p; 属性指定如果谓词 p 成立,则保证函数终止,但在 p< 时不指定任何内容 不成立。它还解释了可以通过以下方式指定永不返回的函数:

//@ ensures \false ; terminates \false ;

此外,ACSL 提供属性 \exits p; 来指定突然终止时的后置条件。所以我想知道是否:

//@ ensures \false ; exits \false; terminates \false ;

会指定该函数总是永远循环吗?

此外,规范是什么:

//@ ensures p ; exits q; terminates \false ;

意味着可能的无限循环?

最佳答案

您的规范是最接近的规范,可以说函数永远循环,但我仍然看到两个极端情况:

  1. 运行时错误:您始终可以说它们已在其他地方处理(WP+genassignsValue)
  2. longjmp:恐怕目前 ACSL 中没有任何内容可以指定类似的内容。

关于frama-c - 可能无限的 C 函数的 ACSL 规范,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14998947/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com