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
easycrypt.opam
# This file is generated by dune, edit dune-project instead
depends: [
"dune" {>= "2.8"}
"ocaml" {>= "4.08.0"}
"batteries" {>= "3"}
"camlzip"
"dune-build-info"
"dune-site"
"ocaml-inifiles" {>= "1.2"}
"pcre" {>= "7"}
"why3" {>= "1.5.0" & < "1.6"}
"yojson"
"zarith" {>= "1.10"}
"odoc" {with-doc}
]
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"]
]
Computing file changes ...