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.
The sequencing rules (
seq_*
) describe execution of a list of BIL statements to completion.However, the sequencing rules in this manual do not provide a means to reduce multiple statements in a single transition.
i.e. the step rule decodes a program (
delta,w,var
) into an instruction ({addr=w1; size=w2; code=bil}
) and recursively reduces thebil
sequence using the sequence rules:However, there is no matching sequence rule that can be applied to the second premise in the above inference rule (
delta, w1.+w2 |- bil ~> delta',w3,{}
).The rules
seq_rec
orseq_last
require a non-empty sequence of statements on the RHS ({s2; ..; sn}
):The rules
seq_one
andseq_nil
could match the premise, however it would require the sequence to have one (1) or no (0) elements.The proposed changes fix the syntax/semantics so that they correctly reduce by removing the sequence on the RHS of the transition and adding a recursive call to
seq_rec
.