runtimeverification / runtimeverification/haskell-backend
Support anywhere symbols
Nobody has claimed this yet.
- Dominant language
- Haskell
- Stars
- 224
- Forks
- 43
- PR merge metrics
- No merged PRs in 30d
Description
The backend does not support symbols with the anywhere attribute. These symbols are like constructors, except they do not have no-confusion axioms with certain other constructors, based on user-defined anywhere rules. Because certain no-confusion axioms are missing, we cannot unify anywhere symbols as constructors, or indeed, at all. It is not our goal to support anywhere symbols, but here is what would be required:
- Modify the frontend to omit
no-confusionaxioms between pairs of symbols related byanywhererules, but to include the others. Note that the relation between symbols is transitive, i.e. ifais related tob, andbis related tocby anywhere rules, thenais also related toc. - Modify the backend to recognize (from the
no-confusionaxioms) which constructor-like symbols are not subject to confusion, instead of requiring that all constructors be free constructors. - Modify the backend to emit a warning when it is asked to unify two symbols subject to confusion. The backend will already terminate with an error if the incomplete unification prevents applying a rule.
- Eventually, if necessary, modify the frontend to emit modified
no-confusionaxioms based on the user-definedanywhererules, and modify the backend to apply these as needed. - Eventually, if necessary, modify the backend to apply user-defined
anywhererules during unification to symbols that may be confused
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 tracing how the frontend emits no-confusion axioms and how the backend recognizes constructor-like symbols during unification. Compare the requested handling of transitive anywhere rules, warnings for confused symbols, and eventual rule application. Done means the frontend and backend correctly support the specified anywhere-symbol cases without assuming all constructors are free constructors.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- haskell
- Domain
- backend
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100