FStarLang / FStarLang/FStar

Top-level definition order highly impacts verification: Needs better solver profiling

Open
#930 5 comments 0 reactions 0 assignees View on GitHub
area/usability kind/enhancement
Dominant language
F*
Stars
3.1k
Forks
266
Avg merge
21h 1m
Merged PRs (30d)
54

Description

I keep hitting strange regressions every time I update F* to its latest.
In commit `b590fde`:

```F#
module Test

open FStar.Mul

module L = FStar.Math.Lemmas

#reset-options "--max_fuel 0 --max_ifuel 0 --z3rlimit 100"

private
let lemma_distr_5_0 u x1 x2 x3 x4 x5 : Lemma
(u * (x1 + x2 + x3 + x4 + x5)
== u * x1 + u * x2 + u * x3 + u * x4 + u * x5)
= ()

private
let lemma_distr_4_0 u x1 x2 x3 x4 : Lemma
(u * (x1 + x2 + x3 + x4)
== u * x1 + u * x2 + u * x3 + u * x4)
= ()
```
fails on `lemma_distr_4_0`. Changing the order of the lemmas makes it pass instantaneously.
It used to go through with a commit from last week.

Is the SMT encoding undergoing deep changes at the moment ? Should I stop updating F* for the time of out developments ? Or it is that I should build Z3 from its latest sources ? Thanks.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.