runtimeverification / runtimeverification/haskell-backend

Follow-up to functional -> total

Open
#3,536 1 comment 0 reactions 1 assignee View on GitHub

Nobody has claimed this yet.

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

Description

functional <-> function-like and total <-> the pattern evaluates to a singleton
function-like <-> the pattern evaluates to a singleton set or is undefined
total <-> the pattern is always defined

symbolConstructor1 [constructor, functional, ...] (before)
symbolConstructor1 [constructor, function, total, ...] -> didn't work because in the Haskell backend when
we see a symbol declared as a function we assume it's a function symbol


A ::= f(A) [function] -> function symbol, meaning a symbol which constructs terms which can because
rewritten using an equational theory

A ::= foo -> a constructor symbol, defining a constructor of the sort A


what we have to do is in the backend we have identify constructors
as those symbols which have the constructor attribute

we need to start identifying function symbols not by just looking for the function attribute,
but by asking if the symbol has a function attribute and doesn't have a constructor attribute


symbol constructor1 [constructor, function, total, injective] -> backend identifies it as constructor
because it has the constructor attribute
symbol function1 [function] -> backend identifies it as function, because it has the function
attribute AND it doesn't have the constructor attribute
symbol function2 [function, total] -> same as the function1

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.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.