Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Frama c 具有Aorai的LTL公式_Frama C - Fatal编程技术网

Frama c 具有Aorai的LTL公式

Frama c 具有Aorai的LTL公式,frama-c,Frama C,我试图找到一个关于LTL运营商的例子,这意味着Aorai的致命性,但我不能确切地理解这个运营商的目的,而且Aorai的存储库“测试”中没有任何例子 例如,我写了这个公式 CALL(main) && _X_ (CALL(a) && _X_(RETURN(a) && _F_ (RETURN(b) && _X_ (RETURN(main)) ) )) 也就是说,在我的程序main中,我必须调用函数a(),在此之后,我不知道操作符会发生什

我试图找到一个关于LTL运营商的例子,这意味着Aorai的致命性,但我不能确切地理解这个运营商的目的,而且Aorai的存储库“测试”中没有任何例子 例如,我写了这个公式

CALL(main) && _X_ (CALL(a) && _X_(RETURN(a) && _F_ (RETURN(b) && _X_ (RETURN(main)) ) ))
也就是说,在我的程序main中,我必须调用函数a(),在此之后,我不知道操作符会发生什么,但它似乎接受并接受我们在函数a()之后调用的任何东西,而没有来自Aorai的警告或错误。如果有人能帮我,或者能举个正确的例子。 例如,我有一个程序,下面我想用上面的公式进行测试

void a() 
{}
void b() 
{}
int main() 
{ a();
  a();
  b();
  b();
  a();
  return 0;}
I型
frama-c-aorai ltl test.ltl test.c

通常,Aorai会发出错误或警告。不是吗?

你的问题更多的是关于时态逻辑,而不是Frama-C/Aorai本身,但是这个公式的意思是,
main
必须调用
a
,然后在调用
b
之后返回之前,做它想做的任何事情

注意:注意Aorai只跟踪调用和返回事件,因此这里的“just after”意味着
main
在最后一次调用
b
后不能调用任何函数,但仍然可以执行一些操作,例如
x++

更新 我已经在Frama-C上运行了您的完整示例。事实上,Aorai生成的
main
合同中缺少一个post条件,即
main
末尾生成的自动机的状态(
T0_S4
)应该是可接受的,这里的情况并非如此。这是一个错误。如果用
ya
语言明确地编写一个等价的自动机,如下所示

%init: S0;
%accept: Sf;

S0: { CALL(main) } -> S1;

S1: { [ a() ] } -> S2;

S2: { RETURN(b) } -> S3
  | other -> S2;

S3: { RETURN(main) } -> Sf;

Sf: -> Sf;
然后为
main
生成的合同包含
requires\false,这确实表明函数不符合自动机,Aoraï对此发出警告


但请注意,在一般情况下,Aoraï不会发出任何警告。它生成合同,如果履行合同,则意味着整个程序符合自动机。合同证明必须由另一个插件完成(例如WP或价值分析)

很抱歉,但我不知道该在哪里问这个问题。我知道我们必须调用a,在这之后我可以调用我想调用的任何函数,但问题恰恰是当我用这个公式调用b时,通常在它之后,我不能调用任何函数,否则会有错误,事实并非如此,我在b之后调用了其他函数,Aorai没有报告任何错误。。。我使用frama-c钠-20150201。这个版本已经实现了吗?可能是一个错误……如果您的问题是关于使用Aoraï分析特定程序,那么为了帮助您,我们需要所述程序和您使用的确切命令行。感谢您的回答,在您的时间里,我注意到了您关于post条件(主)的意思