Issue #76: Boolean expressions in conditional statements #78
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.
Closes #76 .
These changes save exactly 1,000 cycles for the 500 XMSS aggregation test, while reducing bytecode size by 1 and leaving memory usage the same.
These changes make it the XMSS aggregation verifier's responsibility to ensure that the
bitieldvalues in the public input are in fact bits.Unfortunately, the most frequent usage of the
if X == 1idiom in the XMSS aggregation test were not apparently in a context whereXcan be assumed to be boolean. This is in the conditionif merkle_are_left[h] == 1. Changing this toif merkle_are_left[h]resulted in an increased cycle count. Changing this toif !!assume_bool(merkle_are_left[h])resulted in a more substantially decreased cycle count, but I expect it also would give up soundness.These changes increase the cycle count by 12 for the WHIR recursion test, while leaving bytecode size and memory usage the same.
I don't know why these changes increase the cycle count by 12 for the WHIR recursion test. I did find usages of the
if X == 1idiom in the WHIR recursion test whereXcould safely be assumed to be boolean, but for whatever reason, replacing these instances withif !!assume_bool(X)resulted in an increased cycle count.