runtimeverification / runtimeverification/haskell-backend
Overhaul evaluators
Nobody has claimed this yet.
- 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
- 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 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