runtimeverification / runtimeverification/haskell-backend

Expression not simplified in all contexts

Open
#3,045 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

needs-reproducing
Dominant language
Haskell
Stars
224
Forks
43
PR merge metrics
No merged PRs in 30d

Description

With the attached files, you can reach the state that illustrates the issue with command:

kore-repl definition.kore --module VERIFICATION --prove spec.kore --spec-module VAT-SLIP-PASS-ROUGH-SPEC

The files s0.k and s0.kore contain the initial state. There are 2 nested hashedLocation expressions there that should be simplified but they don't. They should be simplified by the rule in definition.kore line 17552 (original source code hashed-locations.md line 63).
For the inner hashedLocation, rule above has some range requirements for variable VarILK. It satisfies the requirements in s0.kore on lines 1972 and 2165.

Note that during simplification process the same expression is generated twice in the configuration. In one place it gets stuck in hashedLocation state, in another one it is properly simplified into:

keccak ( #buf ( 32 , USR:Int ) ++ #buf ( 32 , keccak ( #buf ( 32 , ILK:Int ) ++ b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04" ) ) )

So it is simplified in one place but not another. This is not high priority, but is required to pass some failing proofs in KEVM and KSummarizer.

Please let me know if you need any help.
haskell-bug-report.zip

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by running the kore-repl command from the issue with the attached definition.kore, s0.k.kore, and spec.kore files. Inspect definition.kore line 17552 and hashed-locations.md line 63, then compare the two generated configuration occurrences. Done means both nested hashedLocation expressions simplify consistently and the affected KEVM or KSummarizer proofs pass.

Written by the indexing model from the issue text.

Assessment

Tech stack
haskell
Domain
backend
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.