runtimeverification / runtimeverification/haskell-backend

Overhaul evaluators

Open
#2,474 7 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

cleanup performance
Dominant language
Haskell
Stars
224
Forks
43
PR merge metrics
No merged PRs in 30d

Description

Before #1978, I want to overhaul the function and simplification rule evaluators.

Move Kore.Step.Simplification to Kore.Simplify. This is one of the most important sub-domains, so it belongs at the top level of the hierarchy.

We will introduce a new class Evaluator with a single member evaluate with the same signature as BuiltinAndAxiomSimplifier. The latter will be an instance of the class. We will introduce an existential data type SomeEvaluator which can wrap a value of any instance of Evaluator. The Simplifier monad will by modified to hold a map of SomeEvaluator instead of BuiltinAndAxiomSimplifier.

We will move Kore.Step.Function to Kore.Function. definitionEvaluation will become Kore.Function.User.User (user-defined function evaluators) an instance of Evaluator. simplificationEvaluation will become Kore.Simplify.User.User (user-defined simplification evaluators), also a distinct instance of Evaluator. Basically, we will de-functionalize definitionEvaluation and simplificationEvaluation.

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 reading Kore.Step.Simplification.Simplify.hs, especially BuiltinAndAxiomSimplifier, then inspect Kore.Step.Function and the definitionEvaluation and simplificationEvaluation entry points. Done means the modules are moved to Kore.Simplify and Kore.Function, Evaluator and SomeEvaluator exist, and Simplifier stores the evaluator map with the specified user evaluators as instances.

Written by the indexing model from the issue text.

Assessment

Tech stack
haskell
Domain
backend
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.