swh:1:snp:a009335c9ad61a15b4ffe398f445dd601942b68c
Revision 3f4a0bd5596888cd8d28b97687d477942187aa5f authored by Pierre-Yves Strub on 11 June 2022, 06:10:21 UTC, committed by Adrien Koutsos on 13 June 2022, 09:22:31 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 b9af81d
History
Tip revision: 80dba4735486a73679e8cfa43f8492b6f9e641f2 authored by Pierre-Yves Strub on 07 September 2022, 15:56:54 UTC
[while (phl, >=)]: be more restrictive on the variant delta lower-bound
Tip revision: 80dba47
File Mode Size
.github
config
examples
lint
scripts
src
theories
.dir-locals.el -rw-r--r-- 285 bytes
.gitignore -rw-r--r-- 118 bytes
AUTHORS -rw-r--r-- 543 bytes
LICENSE -rw-r--r-- 1.2 KB
Makefile -rw-r--r-- 1.2 KB
README.md -rw-r--r-- 7.7 KB
default.nix -rw-r--r-- 855 bytes
dune -rw-r--r-- 116 bytes
dune-project -rw-r--r-- 388 bytes
easycrypt.opam -rw-r--r-- 1.2 KB
easycrypt.opam.template -rw-r--r-- 915 bytes
easycrypt.png -rw-r--r-- 182.6 KB

README.md

back to top