对于下面的C函数,我从Alt-Ergo得到最新版本的Frama-c的语法错误。
frama-c -wp -wp-rte -lib-entry RoundNearestFive.c -wp-out temp -wp-model="nat, real"我不确定生成的这行代码中有什么问题:
...
let r_0 = dat_0 / 5.0e0 : real in /* syntax error here */
...分析中的C函数
typedef unsigned short int uint16;
/*@
@ requires 0<=dat<= 300;
*/
uint16 RoundNearestFive(float dat)
{
uint16 result= 0;
float fra = 0;
result = (uint16)(dat/5);
fra = dat - (float)result*5; // fractional part of the input
if (fra < 2.5)
result = (uint16) (dat-fra);
else
result = (uint16) (dat+(5-fra));
return result;
}发布于 2014-01-09 04:05:10
我在下面的公式上尝试了Alt-Ergo ( 0.95.2版和主干),没有得到语法错误。您使用的是旧版本的Alt-Ergo吗?或者可能语法错误在别处。
--
逻辑dat_0 :实数
目标g:让r_0 = dat_0 / 5.0e0 : real in (*此处出现语法错误*) false
发布于 2014-01-09 08:53:05
WP user manual明确声明不支持0.95之前的Alt-Ergo版本(参见第21页)。
https://stackoverflow.com/questions/21004010
复制相似问题