runtimeverification / runtimeverification/evm-semantics

Refactor `foundry_get_model` and `print_failure_info`

Open
#1,955 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
KCL
Stars
591
Forks
156
Avg merge
2h 19m
Merged PRs (30d)
1

Description

As suggested by @tothtamas28, the function foundry_get_model(...) introduced in https://github.com/runtimeverification/evm-semantics/pull/1946 should produce a data structure (maybe FoundryModel | None). Function print_model can be a method on this class (without the "Failed to ..." branch). Function print_failure_info then can be redefined as

def print_failure_info(kprint: KPrint, proof: Proof, *, model: FoundryModel | None = None) -> list[str]:
    ...

In addition, as suggested by @nwatson22, print_failure_info in KEVM should be further refactored to use the print_failure_info function that was added to pyk to separate the printing from the RPC calls here: https://github.com/runtimeverification/pyk/commit/6c28b6613ea058a46fd4f838982a88bc2e957863.

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 with the entry points foundry_get_model, print_model, and print_failure_info in the KEVM code, then compare them with pyk's print_failure_info introduced in commit 6c28b6613ea058a46fd4f838982a88bc2e957863. Done means foundry_get_model returns the proposed model structure, model printing is separated from failure handling, and KEVM delegates printing separately from RPC calls.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
tooling
Issue type
Refactor
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.