The “statistics” output has been disabled for some time, and the
print_stats option has never been part of the publicly documented
interface, so hopefully this removal will go unnoticed.
Some of the terms measured by the stats code are available through
the recently-added trace_* options (but not all).
This is the “last” step of the Jira VER-517/VER-522 refactoring
(still does not support pausing between phases, but the relevant
infrastructure is there now).
Ought to pass AutoCorresTest suite now.
Heap lifting is annoying because we need to join all intermediate L2 results
before defining the lifted heap and proving heap lemmas.
This has been refactored into a new prepare_heap_lift stage that runs between
L2 conversion and HL proper.
Demo in tests/examples/Incremental. Note that changing autocorres options
between invocations will probably just fail ungracefully.
Meant for issue VER-518 but not yet tested on CKernel.
The recent “scope” change increases the number of function “definedness”
classes to three:
1. have SIMPL and AC defs (within “scope”);
2. have SIMPL but not AC defs (outside “scope”)
3. have no SIMPL nor AC defs (“scope” irrelevant)
This fixup ensures that (3) functions are not handled by code for (2).
Previously, these functions were unsatisfyingly translated to “fail”.
By default, functions are wrapped in the constructs AC_call_simpl
and L1_call_simpl.
Functions that are declared in the C file, called by other C functions,
but are never actually _defined_ are translated simply into a "fail"
monadic statement. This sometimes causes confusion to new users.
We update AutoCorres to instead emit a new constant:
FUNCTION_BODY_NOT_IN_INPUT_C_FILE
defined simply as "fail" for such functions.
The traces are stored in AutoCorresData under the keys "{L2,HL,WA} {peephole,flow} opt".
"Trace" is currently a misnomer because we actually use Apply_Trace to
dig out the used facts afterward. Completeness is not guaranteed.
This should (finally) close issue JIRA VER-321. Unfortunately it also breaks some other things,
such as heap_abs_syntax, which we'll need to examine later.