The following creates an ill-formed goal: the second subgoal of proc change displays a program that uses a local variable b in a memory that does not mention b.
Conversely (and less problematically), the first subgoal makes b appear in the memory type despite the fact that it should only appear in the right memory type.
require import AllCore.
module Toto = {
proc titi() = {
var boo: int;
boo <- boo + 1;
return boo;
}
}.
equiv oops:
Toto.titi ~ Toto.titi: true ==> ={res}.
proof.
proc.
proc change {1} 1: [ b: bool ] { b <- true; boo <- boo + 1; }.
(* left memory has useless b variable *)
+ by auto.
(* left memory has no b variable *)
The following creates an ill-formed goal: the second subgoal of
proc changedisplays a program that uses a local variablebin a memory that does not mentionb.Conversely (and less problematically), the first subgoal makes
bappear in the memory type despite the fact that it should only appear in the right memory type.