https://gitlab.com/nomadic-labs/mi-cho-coq
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
Tip revision: 5796046f713e0800c387990f4183c64d2a1d9f23 authored by Raphaël Cauderlier on 31 May 2020, 13:08:41 UTC
Simplification of the formula produced by eval_precond
Tip revision: 5796046

back to top