我有一个关于使用 VST 和 switch 语句的问题。
当 switch 变量存在匹配的情况时,我无法编写逐步执行 switch 语句的证明。例如:
我可以为这样的事情写一个证明:
int switchTest(int x){
switch (x){
case(0): return 0;
default: return 1;
}
}
但是我不能为这样的事情写证明:
int switchTest(){
int x = 5;
switch (x){
case(0): return 0;
case(1): return 1;
case(5): return 5; //The matching case for x - causes my problem
default: return 8;
}
}
每当有“x”的匹配案例(如我的第二个代码示例)时,我在尝试为 switch 语句编写策略时遇到“没有匹配的匹配子句”错误。
通常我可以写类似:“forward_if”、“forward_if True”、“forward_if (PROP() LOCAL() SEP())”,它们适用于我的第一个代码示例,但不适用于我的第二个代码示例。
总而言之:第二个代码示例的证明中的下一行应该是什么?
Lemma body_switchTest: semax body Vprog Gprog f_switchTest switchTest_spec.
Proof.
start_function.
forward.
???
提前致谢!