runtimeverification / runtimeverification/evm-semantics
Investigate SMT timeout in `test-arithmetictest-test_wmul_wdiv_inverse_underflow-uint256-uint256-0-spec.k`
Nobody has claimed this yet.
- Dominant language
- KCL
- Stars
- 591
- Forks
- 156
- Avg merge
- 2h 19m
- Merged PRs (30d)
- 1
Description
As identified in https://github.com/runtimeverification/evm-semantics/pull/2260, the kontrol/test-arithmetictest-test_wmul_wdiv_inverse_underflow-uint256-uint256-0-spec.k fails in the booster CI job consistently with the smt solver error, which the backend team recommended to interpret as an SMT timeout. It, indeed, stops failing if the SMT timeout (--smt-timeout) is increased to 1.6s. The solver transcripts are attached:
timeout-smtlib.kore.txt
timeout-smtlib.txt
timeout-term.txt
The query causing the timeout looks like this (by @PetarMax, from a Slack discussion):
B : supposed to represent
( 115792089237316195423570985008687907853269984665640564039457584007913129639935 /Word ( ( a *Int b ) /Int 1000000000000000000 ) ) <Int 1000000000000000000
but not encoded as such
Constraints:
(= false (and (not (= a 0 ) ) (< (div 115792089237316195423570985008687907853269984665640564039457584007913129639935 a ) b ) ) )
B
(= true (< 0 a ) )
(= true (< 0 b ) )
(= true (< CALLER_ID 1461501637330902918203684832716283019655932542976 ) )
(= true (< ORIGIN_ID 1461501637330902918203684832716283019655932542976 ) )
(= true (< a 115792089237316195423570985008687907853269984665640564039457584007913129639936 ) )
(= true (< b 115792089237316195423570985008687907853269984665640564039457584007913129639936 ) )
(= true (<= 0 CALLER_ID ) )
(= true (<= 0 NUMBER_CELL ) )
(= true (<= 0 ORIGIN_ID ) )
(= true (<= 0 a ) )
(= true (<= 0 b ) )
(= true (<= NUMBER_CELL 57896044618658097711785492504343953926634992332820282019728792003956564819967 ) )
(= true (<= b (div 115792089237316195423570985008687907853269984665640564039457584007913129639935 a ) ) )
(not (= 0 (div (* a b ) 1000000000000000000 ) ) )
(not (= a 0 ) ) ) ) ) ) ) ) ) ) )
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Reproduce the booster CI failure for kontrol/test-arithmetictest-test_wmul_wdiv_inverse_underflow-uint256-uint256-0-spec.k and inspect the attached SMT transcripts. Compare the default --smt-timeout behavior with the reported 1.6s setting and trace the failing query. Done means the timeout is understood and an appropriate corrective path is identified.
Written by the indexing model from the issue text.
Assessment
- Domain
- testing-qa
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100