有没有办法证明我的C++程序的属性
Is there a way to prove properties about my C++ programs?
我理解像Coq和Idris这样的语言可以用来证明用这些语言编写的程序的属性(根据我在这个问题上的一点经验来看(,但我想知道是否有一种平易近人的方法可以在已经存在的代码库上从外部做同样的事情。
有没有办法使用Coq或其他一些专门的工具来证明用C++编写的算法的正确性?如果是这样,这样做的要求是什么?
这取决于您所说的"证明财产"是什么意思。据我所知,有许多静态分析工具用于检查 C 程序的简单属性,它们在表现力、易用性、分析的合理性等方面差异很大。它们通常用于检查程序是否没有运行时错误,但不太适合检查完整的功能规范。对于此类属性,您可能不得不求助于更强大的证明器,该证明器需要您手动写下证明,而不是自动为您检查一个证明。
既然你提到了Coq,我想推荐你两个基于Coq的工具来验证C程序(但是它们不适用于C++(:在后一类中,有验证软件工具链,这是一个嵌入在Coq中的C程序推理逻辑。您可以使用它来编写有关程序行为的证明,并让Coq检查它们,包括显示程序符合其功能规范。在前一类中,有Verasco,这是一种自动静态分析工具,可以检查程序是否存在运行时错误。这些工具的一个很好的功能是它们本身是经过验证的程序,这意味着您可以对它们提供的分析有额外的信心。
其他有趣的工具包括上面评论中提到的Frama-C和来自Microsoft的静态分析仪VCC。但是,它们不适用于C++。
相关文章:
- C++调用具有 *this 属性的单个帮助程序函数
- QT 样式表主题,适用于使用属性选择器的整个应用程序
- 获取正在运行的程序的属性
- 程序在没有输入的情况下退出,它有基本的,驱动的类属性初始化问题
- 当删除上下文属性中的QLIST对象时,QT QML应用程序崩溃
- 当一个对象试图访问它的某个属性时,程序是否可能发送Segfault
- 从元对象获取属性更改通知程序
- 从ASP.NET应用程序查询Active Directory对象属性将返回旧结果
- Windows安装程序,在C++中访问自定义操作中的自定义属性
- 如何使用Qt Windows中的设置路径属性从命令行运行应用程序(.exe)时在命令行上打印日志
- 使用属性表将向导定位在屏幕 win32 应用程序的中心
- 从 C++ 中的 POSIX 信号处理程序获取对象属性
- 仅在错误的着色器程序中设置属性会影响属性值
- 使用命令行管理程序执行属性谓词的特定属性选项卡
- 有没有办法证明我的C++程序的属性
- 程序的基准编译时属性
- C++获取程序的基本属性
- 如何在用户模式应用程序C++中访问AVStream扩展相机控制属性
- 从属性页的事件处理程序调用DoModal()不会弹出对话框
- 从属性表页的处理程序引发的异常