Boogie:一种中间验证语言

成立日期:2008年12月10日

Boogie是一种中间验证语言,旨在作为为其他语言构建程序验证器的层。以这种方式构建了几个程序验证器,包括用于C的VCC和HAVOC验证器以及用于Dafny、Chalice和Spec#的验证器。该语言的前一个版本称为BoogiePL。当前的语言(版本2)目前称为Boogie,这也是以Boogie程序作为输入的验证工具的名称。

布吉也是一个工具该工具接受Boogie语言作为输入,有选择地推断给定Boogie程序中的一些不变量,然后生成传递给SMT解算器的验证条件。默认SMT解算器为Z3公司. 
布吉研究项目主要在RiSE公司组位于微软研究院在雷蒙德。然而,其他几家机构的人员也在开发开源Boogie工具。

论文

如果你想了解更多信息关于Boogie语言和工具,最好从Boogie 2语言参考手册和Boogie工具体系结构概述开始。

历史笔记

在他们的基因中,布吉规格#是携手发展的。因此,Boogie这个名字被用来描述Spec#相关的东西。特别是Spec#静态程序验证器,它将编译好的Spec#程序(.NET字节码)转换成Boogie,被称为Boogie。但Spec#验证器现在是一个单独的工具(构建在Boogie上),名为SscBoogie。最后,Spec#使用了一种基于所有权的规程来处理对象不变量。这个学科被称为布吉方法学,但它只与Spec#及其字节码转换器有关,而与Boogie验证语言无关。

相关项目

事实证明,Boogie是一个很好的平台,可以在其上实现其他验证系统。以下是此类项目的部分列表。如果您知道其他应该出现在这里的内容,请告诉我们!

阿卡什·拉尔肖像

阿卡什·拉尔

高级首席研究员

米查尔·莫斯卡尔肖像

米查尔·莫斯卡尔

首席研究软件开发工程师

Shuvendu Lahiri的肖像

舒文杜·拉希里

高级首席研究员