课程类型 |
项目理学学士、Praktikum理学硕士、团队项目理学硕士
|
---|
讲师 |
马蒂亚斯·海兹曼
|
---|
信用 |
取决于课程类型
|
---|
课程目录 |
|
---|
谓词
在以下哪个过程中assert语句从不失败?为什么?
过程raven(int x,int y,int z){y:=x;while(random()){x:=x+1;y:=y+1;}断言(x==z==>y==z);}
|
程序blackbird(int x,int y){x:=0;y:=x;while(random()){x:=x+1;}断言(x!=-1&y!=-1);}
|
|
- 通过证明谓词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这是一个很好的猜测。
任务
- 我们将在我们的软件模型检查器最终版中实现谓词抽象技术。
- 我们将开发从程序中提取有用谓词的方法。
- 我们将意识到,如果我们使用所有提取的谓词,我们的工具将耗尽内存。
- 我们将陈述对谓词有用性的“偏见”。
- 我们将使用机器学习技术评估我们偏见的重要性。
项目中完成的任务数量取决于课程类型。