只需接触Microsoft代码合同即可检查代码中的前置,后置条件和对象不变式(https://docs.microsoft.com/en-us/dotnet/framework/debug-trace-profile/code-contracts),并想尝试一下。我想确认一个关于完整性和完整性的问题,假设不变性假设检查器未输出任何错误消息,这是否意味着不变性确实(可证明)为真或仍然可以是假肯定。
答案 0 :(得分:0)
可以通过各种方式来欺骗静态检查器,例如添加错误的假设。我将在此答案中假设没有做过任何事情。
此外,检查器中可能存在错误。但是假设没有...
静态检查器设计为不会产生误报。将检查所有前置条件和后置条件以及不变量,并且只有在条件的真实性可以得到肯定验证的情况下,它们才会通过。如果无法验证条件,则将提供错误消息。
系统不会尝试证明可以违反不变式。错误消息“未经证实”意味着找不到正确性证明。不变性可能仍然是正确的,只是未经证实。
因此,没有误报(再次,是设计使然,没有错误或破坏)。