你在这里: 主页 学生项目和… 可用 谓词和偏见…

谓词和偏见——证明程序的正确性

课程类型 项目理学学士、Praktikum理学硕士、团队项目理学硕士
讲师 马蒂亚斯·海兹曼
信用 取决于课程类型
课程目录

谓词

在以下哪个过程中assert语句从不失败?为什么?

 

  • 通过证明谓词y==x是while循环的循环不变量,我们可以证明raven过程中的断言从未失败。
  • 我们可以通过证明谓词x>=0和y==0是while循环的循环不变量来证明过程blackbird中的断言从未失败。

给定这些谓词,可以使用一种称为谓词抽象的技术轻松地显示过程的正确性。问题是:我们如何猜测正确的谓词?

 

偏见

  • 据说每个德国人都热爱足球然而这不是真的,我知道一些德国人根本不喜欢足球。但如果你遇到一些德国人,他或她很可能喜欢足球。
  • 据说苏格兰总是下雨。但这不是真的。但苏格兰有些地区的降雨风险远高于弗莱堡。

 

谓词和偏见

  • 如果过程包含语句y:=x,那么谓词y==x在正确性证明中很有用。当然,这并不总是正确的,blackbird程序就是一个反例。但对于某些过程来说,谓词y==x是一个很好的猜测。
  • 如果过程包含x:=0语句和x:=x+1语句,那么谓词x>=0在正确性证明中很有用。当然,这并不总是正确的,raven程序就是一个反例。但对于某些过程,谓词x> =0这是一个很好的猜测。

 

任务

  1. 我们将在我们的软件模型检查器最终版中实现谓词抽象技术。
  2. 我们将开发从程序中提取有用谓词的方法。
  3. 我们将意识到,如果我们使用所有提取的谓词,我们的工具将耗尽内存。
  4. 我们将陈述对谓词有用性的“偏见”。
  5. 我们将使用机器学习技术评估我们偏见的重要性。

项目中完成的任务数量取决于课程类型。