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.
Delay unfolding of definitions until after refinement type checking (and before fixpoint encoding). I tested this in vtock and veriasm, and I didn't notice any changes in performance.
There's one change in behavior. The following code
previously produced
but now it produces
This is because previously we first unfolded
inc1(0)
into0 + 1
and then generated a head2 = 0 + 1
assigning the span of0 + 1
to the entire head. With this change, we first generate2 = inc1(0)
assigning it the span ofinc1(0)
. We later unfold it to2 = 0 + 1
but the span of the entire head doesn't change. We could recover the behavior by having a different type of head for equalities and adjusting spans accordingly after unfolding. However, I don't think this is objectively worse, I found the old behavior a bit confusing.