Revision cec6716c7d7cdf9fb83c977186b15816c9276b05 authored by Pierre-Yves Strub on 11 June 2022, 06:10:21 UTC, committed by Pierre-Yves Strub on 11 June 2022, 06:10:21 UTC
Loops' epilogs must now be deterministic and loop/calls-free. This forbids the following unsoundness: ``` require import AllCore DBool. module E = { var i,j : int proc foo () = { var c; i <- 0; j <- 0; c <- false; while (!c) { i <- i + 1; j <- j + 1; c <$ {0,1}; } return i = j; } proc bar () = { var c; i <- 0; j <- 0; c <- false; while (!c) { i <- i + 1; c <$ {0,1}; } c <- false; while (!c) { j <- j + 1; c <$ {0,1}; } return i = j; } }. equiv bad : E.foo ~ E.bar : true ==> ={res}. proof. proc. fission{1} 4!1 @1,2. by sim. qed. ``` Fix #210
1 parent 1f8da33
dune-project
(lang dune 2.8)
(using menhir 2.0)
(using dune_site 0.1)
(wrapped_executables false)
(name easycrypt)
(generate_opam_files true)
(package
(name easycrypt)
(sites (lib theories))
(depends
(ocaml (>= 4.08.0))
(batteries (>= 3))
camlzip
dune-build-info
dune-site
(ocaml-inifiles (>= 1.2))
(pcre (>= 7))
(why3 (and (>= 1.5.0) (< 1.6)))
yojson
(zarith (>= 1.10))
))
Computing file changes ...