runtimeverification / runtimeverification/kontrol
Revise implementation of the `forgetBranch` cheatcode
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 122
- Forks
- 16
- PR merge metrics
- No merged PRs in 30d
Description
We shoudn't be returning a
Stephere, because that indicates taking a rewrite step of depth 1. We should instead be returning an abstraction.That makes me think, we could maybe integrate this into
abstract_node, it's used here by the exploration: https://github.com/runtimeverification/k/blob/547e2cc337d08ba19820a3c22956091c0a9aebf8/pyk/src/pyk/kcfg/explore.py#L227. And KEVM's node abstractor is here: https://github.com/runtimeverification/evm-semantics/blob/b40fd7b09fd79dcb3fa13fc6d8f9a02451e8a475/kevm-pyk/src/kevm_pyk/kevm.py#L125.So that could look for the correct pattern, and remove the appropriate constraints.
Originally posted by @ehildenb in https://github.com/runtimeverification/kontrol/pull/899#discussion_r1878464608
Contributor guide
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
Start by reading the exploration use of abstract_node in pyk/kcfg/explore.py around line 227 and the KEVM node abstractor in kevm_pyk/kevm.py around line 125. Trace how the forgetBranch cheatcode currently returns a Step, then define done as returning an abstraction that removes the appropriate constraints for the matching pattern.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- devtools
- Issue type
- Refactor
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100