首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Frama禁用wp

Frama禁用wp
EN

Stack Overflow用户
提问于 2014-06-05 15:35:31
回答 1查看 298关注 0票数 4

例如,当使用Frama-C WP和选项-wp-out时(使用swap.c示例):swap.c

代码语言:javascript
复制
// File swap.c:

/*@ requires \valid(a) && \valid(b);
  @ ensures A: *a == \old(*b) ;
  @ ensures B: *b == \old(*a) ;
  @ assigns *a,*b ;
  @*/

void swap(int *a,int *b)
{
  int tmp = *a ;
  *a = *b ;
  *b = tmp ;
  return ;
}  

执行时:

代码语言:javascript
复制
$frama-c -wp -wp-out po_out swap.c

在产出方面:

代码语言:javascript
复制
[jessie3] Loading Why3 configuration...
[jessie3] Why3 environment loaded.
[jessie3] Loading Why3 theories...
[jessie3] Loading Why3 modules...
[jessie3] Looking up module mach.int.Int32
[jessie3] Looking up module mach.int.Int64
[kernel] preprocessing with "clang -C -E -I.  swap.c"
[wp] Running WP plugin...
[wp] Collecting axiomatic usage
[wp] warning: Missing RTE guards
[wp] 5 goals scheduled
[wp] [Qed] Goal typed_swap_post_B : Valid
[wp] [Qed] Goal typed_swap_assign_part1 : Valid
[wp] [Alt-Ergo] Goal typed_swap_assign_part2 : Valid (39ms) (21)
[wp] [Alt-Ergo] Goal typed_swap_post_A : Valid (Qed:1ms) (38ms) (13)
[wp] [Alt-Ergo] Goal typed_swap_assign_part3 : Valid (30ms) (21)
[wp] Proved goals:    5 / 5
     Qed:             2  (0ms-1ms)
     Alt-Ergo:        3  (30ms-39ms) (21)

它证明了这些属性,并生成了一个文件夹,其中包含证明程序的适当性所需的证明义务,但并不是所有的,只有发送给Alt-ergo的文件夹-- Qed证明的那些没有生成。

我理解Qed的目的是简化、证明琐碎的属性以节省验证程序的时间和精力,但是是否可以让它产生所有的证明义务发送给验证程序?这就是,禁用Qed并让Frama生成对alt-ergo的所有证明义务?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-06 09:14:05

Qed对每一项举证义务的工作量有两种主要选择。-wp-help的输出提供了以下提示:

  • -wp-no-simpl防止简化常量项和谓词
  • -wp-no-let防止局部变量的展开

如果同时使用这两种方法,您应该能够在po_out目录中获得大部分的证明义务,大致是因为它们是由WP计算出来的(请注意,某些PO仍可能由Qed释放,例如,如果您在某个地方有//@ assert \true; )。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24064395

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档