Closed jad-hamza closed 7 years ago
This issue was due to invalid let inlining causing the structure of f1
and f2
to be different in formulae when p
was used only once. I fixed the issue in https://github.com/epfl-lara/inox/commit/e1de7fa92154b487c776e86acce084b18afb194b.
Note that the structures of f1
and f2
are the same (and the functions should therefore always be equal).
It seems there is a consistency issue with the equality used for terms, and the ones used for lambdas. In theorems, f1 and f2 are constant functions that return equal constants, so we can prove they are equal, using
equalFunctions
. But they are also structurally different, allowing us toassert(false)
.Does Stainless use structural equality to compare lambdas? Could we use the same kind of equality across all types? Not sure what is the most appropriate definition for equality here. Do we want something extensional?