Skip to content

Conversation

@emarzion
Copy link
Contributor

@emarzion emarzion commented May 6, 2021

Fixes #2396

Replacing branch #2535

The code for maybeTermEquals and maybeTermAnd are being modified as follows: Each asum is replaced by a list of patterns + function calls, with each invoked function being replaced by two functions, the first corresponding to the pattern match, which returns the necessary data for the second function which performs the unification, now accepting the data from the match as a single argument. The current conventions for returning the data in this PR are:

  1. If there are two or more possible matches corresponding to one of these functions, the data is returned as part of a custom sum type with two or more constructors; otherwise, it is returned as is.
  2. If, within a single match, only one piece of data is returned, then it is returned as is (without being wrapped; the exception to this is if the type is too verbose in which case a newtype is used); otherwise, the data is packaged and returned together in a custom record type.
  3. If a function has only a single match and returns no data, then () is returned (since we are returning Maybe () it may be better to just return a Bool, but in the interest of regularity I've chosen the former option).

Review checklist

The author performs the actions on the checklist. The reviewer evaluates the work and checks the boxes as they are completed.

  • Summary. Write a summary of the changes. Explain what you did to fix the issue, and why you did it. Present the changes in a logical order. Instead of writing a summary in the pull request, you may push a clean Git history.
  • Documentation. Write documentation for new functions. Update documentation for functions that changed, or complete documentation where it is missing.
  • Tests. Write unit tests for every change. Write the unit tests that were missing before the changes. Include any examples from the reported issue as integration tests.
  • Clean up. The changes are already clean. Clean up anything near the changes that you noticed while working. This does not mean only spatially near the changes, but logically near: any code that interacts with the changes!

@ttuegel ttuegel self-requested a review May 6, 2021 14:37
@ttuegel ttuegel marked this pull request as ready for review May 11, 2021 14:21
@github-actions
Copy link

name diff_allocated_bytes diff_max_live_bytes
test/regression-evm/test-sumTo10.sh -0.379793 -0.000980
test/regression-evm/test-add0.sh -0.164990 -0.000001
test/regression-evm/test-straight-line-no-invalid.sh -0.099438 -0.000000
test/regression-evm/test-pop1.sh -0.095289 -0.000001
test/regression-evm/test-straight-line.sh -0.107097 -0.005667
test/regression-evm/test-branching-invalid.sh -0.158197 -0.000001
test/regression-evm/test-branching-no-invalid.sh -0.153299 -0.000001
test/regression-evm/test-sum-to-n.sh -0.020707 -0.002910
test/regression-wasm/test-loops.sh -0.010907 -0.000087
test/regression-wasm/test-wrc20.sh -0.010927 0.004344
test/regression-wasm/test-simple-arithmetic.sh -0.008666 0.000133
test/regression-wasm/test-memory.sh -0.010650 -0.000113
test/regression-wasm/test-locals.sh -0.005260 -0.000023

@github-actions
Copy link

name diff_allocated_bytes diff_max_live_bytes
test/regression-evm/test-sumTo10.sh -0.362597 0.015920
test/regression-evm/test-add0.sh -0.156051 -0.000001
test/regression-evm/test-straight-line-no-invalid.sh -0.094209 -0.000001
test/regression-evm/test-pop1.sh -0.090385 -0.000001
test/regression-evm/test-straight-line.sh -0.101526 -0.000001
test/regression-evm/test-branching-invalid.sh -0.150546 -0.000001
test/regression-evm/test-branching-no-invalid.sh -0.145867 -0.000001
test/regression-evm/test-sum-to-n.sh -0.017715 -0.000324
test/regression-wasm/test-loops.sh -0.009167 0.000161
test/regression-wasm/test-wrc20.sh -0.008786 0.003175
test/regression-wasm/test-simple-arithmetic.sh -0.007169 -0.000068
test/regression-wasm/test-memory.sh -0.008903 -0.000204
test/regression-wasm/test-locals.sh -0.004558 -0.000123

@github-actions
Copy link

name diff_allocated_bytes diff_max_live_bytes
test/regression-evm/test-sumTo10.sh -0.362788 0.016956
test/regression-evm/test-add0.sh -0.156163 0.000056
test/regression-evm/test-straight-line-no-invalid.sh -0.094320 -0.000002
test/regression-evm/test-pop1.sh -0.090438 0.000055
test/regression-evm/test-straight-line.sh -0.101650 0.000025
test/regression-evm/test-branching-invalid.sh -0.150765 0.000012
test/regression-evm/test-branching-no-invalid.sh -0.146084 0.000069
test/regression-evm/test-sum-to-n.sh -0.019320 0.001085
test/regression-wasm/test-loops.sh -0.010841 -0.000021
test/regression-wasm/test-wrc20.sh -0.009577 -0.017878
test/regression-wasm/test-simple-arithmetic.sh -0.007578 -0.000064
test/regression-wasm/test-memory.sh -0.009827 -0.000226
test/regression-wasm/test-locals.sh -0.004563 -0.000143

@github-actions
Copy link

name diff_allocated_bytes diff_max_live_bytes
test/regression-evm/test-sumTo10.sh -0.347721 0.020954
test/regression-evm/test-add0.sh -0.149559 0.000056
test/regression-evm/test-straight-line-no-invalid.sh -0.085345 0.000019
test/regression-evm/test-pop1.sh -0.086572 0.000056
test/regression-evm/test-straight-line.sh -0.092509 0.000024
test/regression-evm/test-branching-invalid.sh -0.135470 0.000012
test/regression-evm/test-branching-no-invalid.sh -0.130801 -0.000052
test/regression-evm/test-sum-to-n.sh -0.014475 0.000083
test/regression-wasm/test-loops.sh -0.010901 -0.000086
test/regression-wasm/test-wrc20.sh -0.009268 0.019909
test/regression-wasm/test-simple-arithmetic.sh -0.007235 0.000059
test/regression-wasm/test-memory.sh -0.009610 -0.000179
test/regression-wasm/test-locals.sh -0.004223 -0.000018

@github-actions
Copy link

name diff_allocated_bytes diff_max_live_bytes
test/regression-evm/test-sumTo10.sh -0.347722 0.035976
test/regression-evm/test-add0.sh -0.149560 0.000056
test/regression-evm/test-straight-line-no-invalid.sh -0.085345 -0.000025
test/regression-evm/test-pop1.sh -0.086572 0.000055
test/regression-evm/test-straight-line.sh -0.092509 0.000024
test/regression-evm/test-branching-invalid.sh -0.135506 0.000012
test/regression-evm/test-branching-no-invalid.sh -0.130802 -0.000051
test/regression-evm/test-sum-to-n.sh -0.014475 0.000591
test/regression-wasm/test-loops.sh -0.010921 -0.000085
test/regression-wasm/test-wrc20.sh -0.009286 0.019873
test/regression-wasm/test-simple-arithmetic.sh -0.007248 0.000058
test/regression-wasm/test-memory.sh -0.009622 -0.000179
test/regression-wasm/test-locals.sh -0.004219 0.000016

Copy link
Contributor

@ttuegel ttuegel left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In addition, all of the new top-level definitions need documentation. For the unification cases (which is most of it) this could be as simple as showing the Kore terms that are being unified.

@github-actions
Copy link

name diff_allocated_bytes diff_max_live_bytes
test/regression-evm/test-sumTo10.sh -0.354768 0.004296
test/regression-evm/test-add0.sh -0.150241 0.000056
test/regression-evm/test-straight-line-no-invalid.sh -0.083220 0.000019
test/regression-evm/test-pop1.sh -0.084276 0.000056
test/regression-evm/test-straight-line.sh -0.090729 0.000024
test/regression-evm/test-branching-invalid.sh -0.135931 0.000013
test/regression-evm/test-branching-no-invalid.sh -0.131068 -0.000051
test/regression-evm/test-sum-to-n.sh -0.012503 0.001799
test/regression-wasm/test-loops.sh -0.008645 0.000025
test/regression-wasm/test-wrc20.sh -0.007414 0.002439
test/regression-wasm/test-simple-arithmetic.sh -0.003320 0.000328
test/regression-wasm/test-memory.sh -0.006399 0.000551
test/regression-wasm/test-locals.sh -0.000009 0.000382

@github-actions
Copy link

name diff_allocated_bytes diff_max_live_bytes
test/regression-evm/test-sumTo10.sh -0.358645 0.005442
test/regression-evm/test-add0.sh -0.151940 0.000057
test/regression-evm/test-straight-line-no-invalid.sh -0.084216 0.000021
test/regression-evm/test-pop1.sh -0.085278 0.000057
test/regression-evm/test-straight-line.sh -0.091802 -0.005641
test/regression-evm/test-branching-invalid.sh -0.137493 0.000014
test/regression-evm/test-branching-no-invalid.sh -0.132582 -0.000050
test/regression-evm/test-sum-to-n.sh -0.011720 0.003002
test/regression-wasm/test-loops.sh -0.008109 0.000032
test/regression-wasm/test-wrc20.sh -0.007164 -0.009490
test/regression-wasm/test-simple-arithmetic.sh -0.003285 0.000387
test/regression-wasm/test-memory.sh -0.006080 0.000161
test/regression-wasm/test-locals.sh -0.000041 0.000389

@github-actions
Copy link

name diff_allocated_bytes diff_max_live_bytes
test/regression-evm/test-sumTo10.sh -0.359650 0.004568
test/regression-evm/test-add0.sh -0.152398 0.000057
test/regression-evm/test-straight-line-no-invalid.sh -0.084514 0.000021
test/regression-evm/test-pop1.sh -0.085572 0.000057
test/regression-evm/test-straight-line.sh -0.092125 0.000026
test/regression-evm/test-branching-invalid.sh -0.137962 0.000016
test/regression-evm/test-branching-no-invalid.sh -0.133018 -0.000050
test/regression-evm/test-sum-to-n.sh -0.011819 0.004077
test/regression-wasm/test-loops.sh -0.008200 0.000126
test/regression-wasm/test-wrc20.sh -0.007207 0.021773
test/regression-wasm/test-simple-arithmetic.sh -0.003389 0.000317
test/regression-wasm/test-memory.sh -0.006198 0.000570
test/regression-wasm/test-locals.sh -0.000116 0.000409

@github-actions
Copy link

name diff_allocated_bytes diff_max_live_bytes
test/regression-evm/test-sumTo10.sh -0.359399 0.005237
test/regression-evm/test-add0.sh -0.152291 0.000058
test/regression-evm/test-straight-line-no-invalid.sh -0.084458 0.000021
test/regression-evm/test-pop1.sh -0.085524 0.000057
test/regression-evm/test-straight-line.sh -0.092066 0.000026
test/regression-evm/test-branching-invalid.sh -0.137865 0.000015
test/regression-evm/test-branching-no-invalid.sh -0.132932 -0.000050
test/regression-evm/test-sum-to-n.sh -0.011816 0.002590
test/regression-wasm/test-loops.sh -0.008223 0.000126
test/regression-wasm/test-wrc20.sh -0.007227 0.006776
test/regression-wasm/test-simple-arithmetic.sh -0.003380 0.000317
test/regression-wasm/test-memory.sh -0.006205 0.000497
test/regression-wasm/test-locals.sh -0.000114 0.000409

@github-actions
Copy link

name diff_allocated_bytes diff_max_live_bytes
test/regression-evm/test-sumTo10.sh -0.359398 0.004295
test/regression-evm/test-add0.sh -0.152291 0.000057
test/regression-evm/test-straight-line-no-invalid.sh -0.084458 0.000021
test/regression-evm/test-pop1.sh -0.085530 0.000044
test/regression-evm/test-straight-line.sh -0.092066 0.000026
test/regression-evm/test-branching-invalid.sh -0.137885 0.000014
test/regression-evm/test-branching-no-invalid.sh -0.132932 -0.000050
test/regression-evm/test-sum-to-n.sh -0.011812 0.003245
test/regression-wasm/test-loops.sh -0.008097 0.000187
test/regression-wasm/test-wrc20.sh -0.007247 -0.001069
test/regression-wasm/test-simple-arithmetic.sh -0.003370 0.000318
test/regression-wasm/test-memory.sh -0.006211 0.000568
test/regression-wasm/test-locals.sh -0.000114 0.000409

@ttuegel ttuegel self-requested a review May 17, 2021 14:19
@github-actions
Copy link

name diff_allocated_bytes diff_max_live_bytes
test/regression-evm/test-sumTo10.sh -0.360142 0.004958
test/regression-evm/test-add0.sh -0.152637 0.000057
test/regression-evm/test-straight-line-no-invalid.sh -0.084683 0.000021
test/regression-evm/test-pop1.sh -0.085746 0.000057
test/regression-evm/test-straight-line.sh -0.092301 0.000026
test/regression-evm/test-branching-invalid.sh -0.138199 0.000014
test/regression-evm/test-branching-no-invalid.sh -0.133251 -0.000050
test/regression-evm/test-sum-to-n.sh -0.011891 0.004035
test/regression-wasm/test-loops.sh -0.008255 0.000126
test/regression-wasm/test-wrc20.sh -0.007302 -0.002197
test/regression-wasm/test-simple-arithmetic.sh -0.003444 0.000318
test/regression-wasm/test-memory.sh -0.006254 0.000570
test/regression-wasm/test-locals.sh -0.000172 0.000409

@github-actions
Copy link

name diff_allocated_bytes diff_max_live_bytes
test/regression-evm/test-sumTo10.sh -0.360143 0.006691
test/regression-evm/test-add0.sh -0.152638 0.000057
test/regression-evm/test-straight-line-no-invalid.sh -0.084683 0.000021
test/regression-evm/test-pop1.sh -0.085746 0.000057
test/regression-evm/test-straight-line.sh -0.092301 0.005728
test/regression-evm/test-branching-invalid.sh -0.138197 0.000015
test/regression-evm/test-branching-no-invalid.sh -0.133251 -0.000050
test/regression-evm/test-sum-to-n.sh -0.011894 0.003237
test/regression-wasm/test-loops.sh -0.008243 0.000126
test/regression-wasm/test-wrc20.sh -0.007245 0.025681
test/regression-wasm/test-simple-arithmetic.sh -0.003442 0.000318
test/regression-wasm/test-memory.sh -0.006324 0.000571
test/regression-wasm/test-locals.sh -0.000172 0.000409

@github-actions
Copy link

name diff_allocated_bytes diff_max_live_bytes
test/regression-evm/test-branching-no-invalid.sh -0.133452 -0.000054
test/regression-evm/test-sumTo10.sh -0.360606 0.006726
test/regression-evm/test-pop1.sh -0.085889 0.000054
test/regression-evm/test-add0.sh -0.152864 0.000054
test/regression-evm/test-straight-line-no-invalid.sh -0.084817 0.000017
test/regression-evm/test-sum-to-n.sh -0.011941 0.002695
test/regression-evm/test-straight-line.sh -0.092449 0.000023
test/regression-evm/test-branching-invalid.sh -0.138406 0.000011
test/regression-wasm/test-memory.sh -0.006306 0.000522
test/regression-wasm/test-simple-arithmetic.sh -0.003474 0.000201
test/regression-wasm/test-locals.sh -0.000207 0.000397
test/regression-wasm/test-wrc20.sh -0.007324 -0.002287
test/regression-wasm/test-loops.sh -0.008305 0.000124

@github-actions
Copy link

name diff_allocated_bytes diff_max_live_bytes
test/regression-evm/test-branching-no-invalid.sh -0.092124 -0.000054
test/regression-evm/test-sumTo10.sh -0.260201 -0.001992
test/regression-evm/test-pop1.sh -0.059809 0.000054
test/regression-evm/test-add0.sh -0.108146 0.000054
test/regression-evm/test-straight-line-no-invalid.sh -0.057687 0.000017
test/regression-evm/test-sum-to-n.sh -0.004166 0.004273
test/regression-evm/test-straight-line.sh -0.063293 0.000023
test/regression-evm/test-branching-invalid.sh -0.095800 0.000011
test/regression-wasm/test-memory.sh -0.001801 0.000511
test/regression-wasm/test-simple-arithmetic.sh 0.000409 0.000302
test/regression-wasm/test-locals.sh 0.002471 0.000244
test/regression-wasm/test-wrc20.sh -0.003093 0.006585
test/regression-wasm/test-loops.sh -0.003650 0.000148

@github-actions
Copy link

name diff_allocated_bytes diff_max_live_bytes
test/regression-evm/test-branching-no-invalid.sh -0.092002 -0.000054
test/regression-evm/test-sumTo10.sh -0.259934 -0.000283
test/regression-evm/test-pop1.sh -0.059783 0.000054
test/regression-evm/test-add0.sh -0.108087 0.000054
test/regression-evm/test-straight-line-no-invalid.sh -0.057616 0.000017
test/regression-evm/test-sum-to-n.sh -0.003874 0.002134
test/regression-evm/test-straight-line.sh -0.063215 0.000023
test/regression-evm/test-branching-invalid.sh -0.095656 0.000011
test/regression-wasm/test-memory.sh -0.001802 0.000511
test/regression-wasm/test-simple-arithmetic.sh 0.000415 0.000304
test/regression-wasm/test-locals.sh 0.002595 0.000305
test/regression-wasm/test-wrc20.sh -0.002988 0.028293
test/regression-wasm/test-loops.sh -0.003556 0.000183

@github-actions
Copy link

name diff_allocated_bytes diff_max_live_bytes
test/regression-evm/test-branching-no-invalid.sh -0.092005 -0.000054
test/regression-evm/test-sumTo10.sh -0.259933 -0.001476
test/regression-evm/test-pop1.sh -0.059783 0.000054
test/regression-evm/test-add0.sh -0.108085 0.000054
test/regression-evm/test-straight-line-no-invalid.sh -0.057616 -0.000041
test/regression-evm/test-sum-to-n.sh -0.003875 0.003200
test/regression-evm/test-straight-line.sh -0.063215 0.000023
test/regression-evm/test-branching-invalid.sh -0.095659 -0.000076
test/regression-wasm/test-memory.sh -0.001807 0.000510
test/regression-wasm/test-simple-arithmetic.sh 0.000409 0.000355
test/regression-wasm/test-locals.sh 0.002545 0.000461
test/regression-wasm/test-wrc20.sh -0.002974 0.001733
test/regression-wasm/test-loops.sh -0.003563 0.000119

@github-actions
Copy link

name diff_allocated_bytes diff_max_live_bytes
test/regression-evm/test-branching-no-invalid.sh -0.091708 0.000002
test/regression-evm/test-sumTo10.sh -0.249136 0.008552
test/regression-evm/test-pop1.sh -0.062291 0.000002
test/regression-evm/test-add0.sh -0.107290 0.000001
test/regression-evm/test-straight-line-no-invalid.sh -0.059961 0.000001
test/regression-evm/test-sum-to-n.sh -0.007427 -0.000351
test/regression-evm/test-straight-line.sh -0.065167 0.000003
test/regression-evm/test-branching-invalid.sh -0.095123 0.000002
test/regression-wasm/test-memory.sh -0.006190 0.000353
test/regression-wasm/test-simple-arithmetic.sh -0.000468 0.000132
test/regression-wasm/test-locals.sh -0.001692 -0.000097
test/regression-wasm/test-wrc20.sh -0.003789 0.009271
test/regression-wasm/test-loops.sh -0.007989 0.000235

@ttuegel ttuegel force-pushed the unification-refactor2 branch from d1f740f to 6cbce09 Compare June 4, 2021 21:17
@github-actions
Copy link

github-actions bot commented Jun 4, 2021

name diff_allocated_bytes diff_max_live_bytes
test/regression-evm/test-branching-no-invalid.sh -0.090700 0.000002
test/regression-evm/test-sumTo10.sh -0.247254 0.006721
test/regression-evm/test-pop1.sh -0.061812 0.000002
test/regression-evm/test-add0.sh -0.106451 0.000002
test/regression-evm/test-straight-line-no-invalid.sh -0.059315 0.000002
test/regression-evm/test-sum-to-n.sh -0.006701 0.000498
test/regression-evm/test-straight-line.sh -0.064511 0.000002
test/regression-evm/test-branching-invalid.sh -0.094142 0.000002
test/regression-wasm/test-memory.sh -0.005046 0.000033
test/regression-wasm/test-simple-arithmetic.sh -0.003478 -0.000031
test/regression-wasm/test-locals.sh -0.001657 0.000084
test/regression-wasm/test-wrc20.sh -0.005013 -0.024334
test/regression-wasm/test-loops.sh -0.006293 0.000048

@github-actions
Copy link

github-actions bot commented Jun 4, 2021

name diff_allocated_bytes diff_max_live_bytes
test/regression-evm/test-branching-no-invalid.sh -0.093017 0.000002
test/regression-evm/test-sumTo10.sh -0.252959 0.009032
test/regression-evm/test-pop1.sh -0.063257 0.000001
test/regression-evm/test-add0.sh -0.108955 0.000002
test/regression-evm/test-straight-line-no-invalid.sh -0.060821 0.000002
test/regression-evm/test-sum-to-n.sh -0.007079 -0.002046
test/regression-evm/test-straight-line.sh -0.066134 0.000002
test/regression-evm/test-branching-invalid.sh -0.096515 0.000002
test/regression-wasm/test-memory.sh -0.005181 0.000034
test/regression-wasm/test-simple-arithmetic.sh -0.003624 0.000002
test/regression-wasm/test-locals.sh -0.001716 0.000169
test/regression-wasm/test-wrc20.sh -0.005198 0.000010
test/regression-wasm/test-loops.sh -0.006448 -0.000039

@github-actions
Copy link

github-actions bot commented Jun 5, 2021

name diff_allocated_bytes diff_max_live_bytes
test/regression-evm/test-branching-no-invalid.sh -0.093056 0.000002
test/regression-evm/test-sumTo10.sh -0.252960 0.009032
test/regression-evm/test-pop1.sh -0.063258 0.000002
test/regression-evm/test-add0.sh -0.108955 0.000002
test/regression-evm/test-straight-line-no-invalid.sh -0.060824 0.000002
test/regression-evm/test-sum-to-n.sh -0.007080 -0.001328
test/regression-evm/test-straight-line.sh -0.066134 0.000002
test/regression-evm/test-branching-invalid.sh -0.096537 0.000002
test/regression-wasm/test-memory.sh -0.005189 0.000034
test/regression-wasm/test-simple-arithmetic.sh -0.003621 0.000002
test/regression-wasm/test-locals.sh -0.001716 0.000170
test/regression-wasm/test-wrc20.sh -0.005196 0.000606
test/regression-wasm/test-loops.sh -0.006452 -0.000039

@rv-jenkins rv-jenkins merged commit 67d4d23 into master Jun 5, 2021
@rv-jenkins rv-jenkins deleted the unification-refactor2 branch June 5, 2021 03:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Optimize unification inner loop

4 participants