Closed maul-esel closed 3 months ago
Thanks for the reviews. I'll wait for the nightly test run; if no further issues occur I will merge this tomorrow.
Fixing the tests required some changes:
true
; instead, it is a conjunction of (= g |old(g)|)
for all modifiable global variables g
of the initial location's procedure. This requires supporting different preconditions per initial location, in the case of multiple initial locations.BlockEncodingV2
caused contract computation to fail, as some procedures did not have an exit location. I've fixed this, and added some checks to prevent similar bugs in the future.While doing this, I also added a feature required e.g. in the context of requirements analysis: Each proof now also has an explicit description of the specification that it proves. This information is also added to InvariantResult
and ProcedureContractResult
(in the form of Check
objects).
This PR refactors how ULTIMATE works with proof artifacts (for now, primarily Floyd-Hoare annotations). The point is:
IFloydHoareAnnotation
) rather than annotations in an Icfg. This allows e.g. considering the proofs of multiple CEGAR loops separately (a more elegant solution than the workaround used in #670).I consider the PR more or less ready for review, if the currently running nightly tests don't show any more issues. The only change I still have planned from my side is to go through the
.epf
files and adapt them to the following change in the settings forTraceAbstraction
:However, I wanted to first ask if anyone objects to this or would propose a different settings structure, before I start going through all the settings files.