我试图使用谓词来计算以下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 )
任何想法如何做到这一点?
答案 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;
}