Generate equations for `==K`

Open
#3,810 13 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
25/100
Issue type
Feature
Clarity
Needs clarification
Activity status
Stale
Tech stack
haskell
Domain
compilers

Research direction

The issue names the Haskell backend, LLVM backend, Booster, ==K, and #Equals, but no files, tests, or entry points. Start by tracing how ==K is handled in the Haskell and LLVM backends, then determine whether generated equations can replace that built-in behavior and what inherent limitations apply.

Written by the indexing model from the issue text.

Description

We have recently noticed that both the haskell backend and llvm backend hook the ==K symbol directly (LLVM) or rewrite to #Equals (haskell backend), both of which are internal simplification/evaluation strategies which are opaque to the user (i.e. the question of why some ... ==K ... term was simplified to something else cannot be traced easily in the haskell backend, because we simplified to { ... #Equals ... } and afterwards, no kore rules were applied because the internal logic of #Equals was used). In booster, we are trying to minimise the amount of built in behaviour and it would make sense for the backend to use generated equations for ==K, rather than rely on a builtin simplifier. Would it be possible to generate rules for ==K or is there some inherent limitation that would prevent us form doing this?

Dominant language
Python
Stars
591
Forks
163
PR merge metrics
No merged PRs in 30d

Contributor guide

Open the contributing guide

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.

More from runtimeverification/k

All issues in runtimeverification/k

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.