Frama-c-证明问题;转让;直到斯特伦

Frama-c-证明问题;转让;直到斯特伦,frama-c,Frama C,调用其他赋值函数直到strlen后,我在证明赋值时遇到问题。下面是一个从标准库调用函数的简单示例。功能合同基本上是《规范》要求的副本 #包括 /*@ 需要有效的\u字符串\u src:有效的\u读取\u字符串(src); 需要文件室字符串:\valid(dest+(0..strlen(src)); 需要分离: \分离(dest+(0..strlen(src)),src+(0..strlen(src)); 分配dest[0..(strlen(src))]; */ void mycpy(char*

调用其他赋值函数直到strlen后,我在证明
赋值时遇到问题。下面是一个从标准库调用函数的简单示例。功能合同基本上是《规范》要求的副本

#包括
/*@ 
需要有效的\u字符串\u src:有效的\u读取\u字符串(src);
需要文件室字符串:\valid(dest+(0..strlen(src));
需要分离:
\分离(dest+(0..strlen(src)),src+(0..strlen(src));
分配dest[0..(strlen(src))];
*/
void mycpy(char*dest,const char*src){
strcpy(dest,src);
}
Frama-c未能证明mycpy的
分配
,即使它与strcpy的
分配
匹配:

目标分配。。。(出口):
设a_0=«dest@L1 + 0 ».
设x_0=L_strlen(µ:Mchar@L1, src@L1).
设x_1=1+x_0。
设x_2=L_strlen(Mchar_0,src@L1).
假定{

Have:0这似乎是由于与内存标签相关的错误。仅供参考,此问题已在Frama-C的公共开发版本中修复。它将在下一个稳定版本中提供。