Revision 5796046f713e0800c387990f4183c64d2a1d9f23 authored by Raphaël Cauderlier on 31 May 2020, 13:08:41 UTC, committed by Arvid Jakobsson on 15 September 2020, 12:28:46 UTC
The following simplifications are applied:
- eval_seq_precond immediately returns `False` on instruction sequences
ending with a `FAILWITH` (it does so by looking at the tail-fail flag)
- `match x with C1 y => phi y | C2 y => False` becomes
  `exists y, x = C1 y /\ phi y`
- the code produced for `IF_ f` depends on the if-family `f` to avoid the previous double pattern matching: for example for options it produces `match o with | Some x -> ... | None -> ... end` instead of `match (match o with Some x -> inl x | None -> inr tt end) with inl x -> ... | inr y -> ... end`.

Thanks to these simplifications, the proofs in the contract_coq
directory are simpler.
1 parent 1f739de
History
File Mode Size
doc
scripts
src
.gitignore -rw-r--r-- 329 bytes
.gitlab-ci.yml -rw-r--r-- 920 bytes
LICENSE -rw-r--r-- 1.1 KB
Makefile.local -rw-r--r-- 379 bytes
README.org -rw-r--r-- 8.5 KB
_CoqProject -rw-r--r-- 4 bytes
configure -rwxr-xr-x 1.6 KB
coq-mi-cho-coq.install -rw-r--r-- 73 bytes
coq-mi-cho-coq.opam -rw-r--r-- 1.4 KB

README.org

back to top