问题标签 [acsl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
184 浏览

frama-c - 一个可能无限的 C 函数的 ACSL 规范

我试图指定外部函数的行为,更准确地说,它们的终止。ACSL 文档说该\terminates p;属性指定如果谓词p成立,则保证函数终止,但在p不成立时不指定任何内容。它还解释了一个永远不会返回的函数可以通过以下方式指定:

此外,ACSL 提供了一个属性\exits p;来指定在突然终止的情况下的后置条件。所以我想知道是否:

会指定函数总是永远循环吗?

此外,规范是什么:

意味着关于可能的无限循环?

0 投票
1 回答
152 浏览

c - 将字符串附加到动态字符数组的函数的 ACSL 规范

我正在为将给定字符串附加到动态字符数组末尾的函数编写 ACSL 规范。

这是我到目前为止所拥有的:

因为还不支持动态内存分配的验证,所以我添加了一个占位符函数char_vector_reallocate()和 ACSL 规范,但没有展示实现。

使用 Frama-C Sodium-20150201 和 WP 插件,我无法验证 6 个属性:

  • typed_char_vector_append_disjoint_ok_err
  • typed_char_vector_append_err_post
  • typed_char_vector_append_err_post_length_unchanged
  • typed_char_vector_append_ok_post
  • typed_char_vector_append_ok_post_str_length_added_to_length
  • typed_char_vector_append_ok_post_string_appended

我没想到验证前 5 个属性会遇到任何困难。

如何修复 ACSL 以便char_vector_append()验证?

(作为旁注,是否有我可以参考的动态数组的示例 ACSL 规范?)

0 投票
1 回答
157 浏览

c - ACSL - 无法证明功能

我试图证明这个功能,但徒劳无功。我也在使用另一个功能,但我证明了这一点。

有人可以帮我吗?

这是我到目前为止编写的代码和规范:

0 投票
2 回答
1002 浏览

bitstring - ACSL 位串闪烁

我需要有关 ACSL 问题的帮助。比赛于 2014-2015 年完成。这只是练习,我想看看我是否正确地解决了问题。

位串闪烁:

求解以下等式中的 x(5 位)。有多少独特的解决方案?

(RCIRC-2(LSHIFT-1 (非 X)))=00101

解决后我得到了 16 个独特的解决方案,虽然我无法在任何地方找到答案,需要你们聪明和有创造力的人的帮助!

谢谢

0 投票
1 回答
158 浏览

python - 从 2013 年开始需要有关过去 acsl 计划的帮助

我的老师让我们做一个旧的 ACSL 程序来练习,他说我们可以使用任何我们想要的资源。该计划是从 2013 年开始的。链接在这里:https ://s3.amazonaws.com/iedu-attachments-question/5a989d787772b7fd88c063aff8393d34_1bee2d300c35eec13edf0a3af515a5a5.pdf

我们启动了程序,但遇到了墙,我们不知道从这里开始做什么:

谁能给我们一些提示?我们正在用 Python 编码。

0 投票
2 回答
530 浏览

c++ - 使用数组和字符串对句子进行排序

抱歉,伙计们预先警告我编码很烂,但是有一个大项目需要帮助!

输入:一个完整​​的句子。

输出:句子的排序顺序(ASCii Chart Order)(忽略大小写。)

输出以下类别的直方图:
1)元音
2)辅音
3)标点符号
4)大写字母
5)小写字母

我不知道该做什么

0 投票
1 回答
188 浏览

static-analysis - ACSL 为 C 代码的内部结构和字段“分配”注释

假设我们有这样一个数据结构:

在以下示例中,Frama-C 似乎没有为 C 类型的结构的字段分配位置:

Frama-C 完全可以接受上述注释吗?

代码详述如下。主要目标是将字段 C_Field 重置为 0:

函数 Reset 的合约得到满足,但 Initialize 函数的合约不满足。如何为 Initialize 的合约写一个正确的“assigns”?

0 投票
0 回答
219 浏览

c - 当调用一系列函数时,我们是否应该在每个函数调用之后写“assert”?

让我从这个例子开始我的问题:

现在让我们在代码中添加 ACSL 注释:

我让 Frama-C 通过执行“frama-c-gui -wp file.c”来检查代码。在函数 A 中调用函数 B、C 和 D 时,合约标记为有效。通过添加函数 E 和可能更多其他函数的调用,合约被标记为无效。我们提出了在每个函数调用之后立即添加“断言”的想法,以便为 Frama-C 提供假设满足哪些后置条件的线索。通过这种方法,合同被标记为有效。查看代码:

问题来了:有没有更好的方法来检查包含多个函数调用的函数的合同,而不是在每个函数调用之后立即添加“断言”?

更新代码:

file.h 如下所示:

file.c 如下所示:

0 投票
1 回答
377 浏览

frama-c - 如何在 frama-c 中调试 ACSL?

我正在尝试学习 ACSL,但在尝试编写完整的规范时遇到了困难。我的代码

我运行它

frama-c -wp -wp-rte test.c

我看到以下日志

所以似乎我的两种行为和“分配\无”无法得到证明。那么我该如何从这里开始呢?

编辑:所以我想出了眼前的问题。我没有注释我的循环:

我更大的问题仍然存在:调试问题的好方法是什么?我通过更改和删除代码并查看已证明/未证明的内容来解决这个问题。

0 投票
2 回答
268 浏览

frama-c - 如何强制内存位置在 ACSL 中有效?

我这样定义设备访问

我已经使用

现在的问题是,当我启用 RTE 检查时,无法证明生成的有效性检查

有什么方法可以注释我的代码,以使 MY_DEVICE_ADDRESS 到 MY_DEVICE_ADDRESS+sizeof(struct mydevice) 被认为是有效的?

编辑:这是一个不起作用的尝试

运行

frama-c-wp -wp-rte -wp-init-const -wp-model 类型化 test.c