了解了示例代码之后,我们就可以在 frama-c 中用 WP 对他们进行验证了。在命令行中令 frama-c 打开项目所有相关 C 文件,即可加载整个项目: frama-c-gui max_seq_main.c max_seq.c 注:此处不需指明头文件的文件名,frama-c 会自动分析并包含必要的头文件。 打开后的项目如图: 图:演示过程1 我们可以看到区...
ACSL及FramaC验证工具简介:使用WP验证包含ACSL注释的C项目:示例代码结构:示例代码围绕寻找数组中最大值的问题,包含main函数、max_seq函数定义和max_seq函数实现。main函数调用max_seq函数计算数组最大值,且头文件包含函数的合约。合约的作用:合约通过前置条件和后置条件保证函数行为的正确性。验证过程:...
requires \valid(a+(0..n-1));ACSL provides specification primitives to cover the low-level aspects of the C programming languageassigns a[0..n-1]; ensuresAs a formal language, ACSL enables a precise specification of function contracts. That makes the specification not only understandable by a...
ACSL 规范的自动化验证可以在 frama-c(FRAmework for Modular Analysis of C code)中完成。Frama-c 同样是由 CEA-LIST 和 INRIA 主导的一个项目,其目的在于搭建一个模块化的 C 语言程序分析平台。它拥有多种分析功能,均由其上不同的插件实现。Frama-c 上针对 ACSL 规范的演绎分析(deductive reasoning)功能,由...
frama-c / ACSL / WP 是与集合的基数相关的一组工具和技术。 Frama-C 是一个开源的软件分析工具,用于对C语言代码进行静态分析和验证。它可以帮助开发人员发现和修复代码中的错误和漏洞,提高软件的质量和安全性。 ACSL(ANSI/ISO C Specification Language)是一种用于对C语言程序进行形式化规约的语言。它提供了...
在 frama-c 中使用 WP 验证示例代码。通过命令行加载所有相关 C 文件,frama-c 自动加载项目结构。选择 max_seq 函数,可以看到合约已被加载。逐条单击右键使用 WP 证明,已证明的目标状态变为绿橙各半的圆球,表示通过验证。最后完成所有依赖目标的验证,所有目标变成绿色状态,证明完成。对于大型项目,...
数学运算是计算机程序中经常使用的运算形式,除了基本的算术运算符之外,C语言在其标准函数库中提供了近百...
这个问题中的示例似乎只适用于fixed-length数组,但是下面来自https://frama-c.com/html/acsl.html的类似代码似乎无法通过。只要我将代码更改为include要求&& n == 42(或任何其他正整数),它就会通过。 当它失败时,它说[wp] [Alt-Ergo 2.4.1] Goal typed_set_to_0_loop_invariant_established : Timeout (Qed...
ACSL, ANSI/ISO C Specification Language. https://frama-c. com/html/acsl.html. [3] Patrick Baudin, Pascal Cuoq, Jean-Christophe Filliâtre, Claude Marché, Benjamin Monate, Yannick Moy, and Virgile Prevosto. ACSL, Implementation in Frama-C. https://frama-c.com/ download/frama-c-acsl...
2 What the Plug-in Provides2.1 Simple Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2.1.1 Running E-ACSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2.1.2 Executing the generated code ....