souffle-lang/souffle

Provenance gives `Relation not found` error for relations with record types.

MarkMizzi opened this issue · 1 comments

Here is a minimal example:

// file provenance_test.dl

.type T = [ x:number ]

.decl E(x:T, y:T)
.output E

E([1], [2]).

When invoking souffle with explain, the following behaviour is observed:

-> % souffle -t explain provenance_test.dl
Explain is invoked.
Enter command > explain E([1], [2])
Relation not found

Souffle version is 2.3 running on vanilla Ubuntu 22.04.

The interactive provenance only supports numeric literals and symbol:

// regex for matching tuples
// values matches numbers or strings enclosed in quotation marks
std::regex relationRegex(
"([a-zA-Z0-9_.-]*)[[:blank:]]*\\(([[:blank:]]*([0-9]+|\"[^\"]*\")([[:blank:]]*,[[:blank:]]*(["
"0-"
"9]+|\"[^\"]*\"))*)?\\)",
std::regex_constants::extended);