require import AllCore.
module S = {
proc f(x:int) = { }
proc g (x:int) = { return x;}
}.
lemma eager_f_sample y : eager [
S.f(y);, S.g ~ S.g, S.f(y); :
={x} ==> ={res} ].
proof.
eager proc; inline *; swap{1} 1; sim.
qed.
lemma eager_f_sample' z : eager [
S.f(z);, S.g ~ S.g, S.f(z); :
={x} ==> ={res} ].
proof.
apply (eager_f_sample z).
qed.
The problem come from the substitution, the forall use F_subst.bind_local to substitute "y" by "z", but it should also
bind using F_subst.bind_elocal.
The problem come from the substitution, the forall use
F_subst.bind_localto substitute "y" by "z", but it should alsobind using
F_subst.bind_elocal.