【发布时间】:2012-08-22 18:53:34
【问题描述】:
我正在尝试使用谓词计算以下 C 代码片段的抽象:b: { x >= 0 }
1. if( x > 5 )
2. x = x - 2;
3. else
4. x = abs( x ) + 6;
5. assert( x >= 0 );
到目前为止我已经抽象出来了:
1. if( * ) // not sure if I should put if( b ) here
2. assume( b ); b = true;
3. else
4. assume( true ); // ? don't know how to abstract further
5. assert( b )
任何想法如何做到这一点?
【问题讨论】:
-
在第二个代码,第2行。两个语句周围不应该有一个块吗?
-
@Papergay:- 你忘了
true。 -
我不认为抽象是C代码;我认为它旨在成为用于推理程序的形式逻辑中的陈述。问题不清楚。
-
@LyubomirVasilev:正常应该有,但是这是抽象代码,不是要编译的,所以我觉得有没有大括号无关紧要。
-
澄清:SLAM 工具使用这种抽象。上述C代码片段抽象出来的结果应该是一个布尔程序,而这又是一个所有变量都是布尔类型的C程序。
标签: c boolean abstraction