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
Raw File
easycrypt.opam.template
opam-version: "2.0"

homepage: "https://www.easycrypt.info/"
bug-reports: "https://www.easycrypt.info/trac/newticket"
dev-repo: "git+https://github.com/EasyCrypt/easycrypt.git"
authors: "EasyCrypt Development Team <team@easycrypt.info>"
maintainer: "pierre-yves@strub.nu"
license: "CeCILL-C"

synopsis: "EasyCrypt: Computer-Aided Cryptographic Proofs"
description: """
EasyCrypt is a toolset for reasoning about relational properties
of probabilistic computations with adversarial code. Its main
application is the construction and verification of game-based
cryptographic proofs."""

post-messages: """
EasyCrypt needs external provers to be installed. From opam, you
can install AltErgo (package: alt-ergo).

The required steps for configuring the provers are listed on:
  https://github.com/EasyCrypt/easycrypt#configuring-why3"""

build: [
  ["dune" "subst"]
  ["dune" "build" "-p" name "-j" jobs "@install"]
]
back to top