Improve the extraction and the Lean backend #429
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR adds various improvements:
It improves the Lean backend, by modifying some tactics like
extract_goal
(which I use to extract the current goal as an auxiliary lemma) and tweaking some definitions of the Standard library.It improves the quality of the extracted code in two ways:
simplify_array_slice_update
)simplify_duplicate_calls
. The reason is that when writing code we often naturally write duplicate expressions. For instance, below we duplicate expressioni + j
:In the generated code, this leads to:
In this code, we have to reason about the fact that
i + j
doesn't overflow twice. Thesimplify_duplicate_calls
micro-pass deduplicates those expression in the pure model, leading to the following code: