布尔抽象C程序

时间:2012-08-22 18:53:35

标签: c boolean abstraction

我试图使用谓词来计算以下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 )

任何想法如何做到这一点?

1 个答案:

答案 0 :(得分:0)

我不知道我是否理解你是否正确,但是对于输入谓词{x>=0}b(替代地使用)的集合。它应该是: -

{x>=0}=unknown()   //unknown function is used to generate true or false non-deterministically

if(*)
{
 assume({x>=0});
 {x>=0}=true;
}
else
{
 assume(!{x>=0});
 {x>=0}=false;
}