Replies: 2 comments 2 replies
-
|
Adding another relation to replace |
Beta Was this translation helpful? Give feedback.
-
|
It is not a bug, but a frequent pitfall. The meaning of What you want seems to be "not (there exists Adding a separate relation is necessary. The canonical example for this pitfall (from https://cse.buffalo.edu/~chomicki/636/a1.pdf pp.17) is It should instead be: Now, I recognize that this is a debatable convention, and one very frequently wants "!exists[table(Bound, _)]". It is possible that souffle interprets negation that way, I couldn't find much documentation about this at a quick glance. I find it better to stick the logical reading, but I have been thinking about making this use case more convenient through custom synax, for example: The implementation would then automatically create that auxiliary predicate |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
This program results in an unexpected derived fact of
implicitDep(2, 1).The clause,
!directDep(DependsOn, _)should prevent theimplicitDep(2,1)fact from being created since the factdirectDep(1, 4)exists.The equivalent souffle program results in the expected output:
Beta Was this translation helpful? Give feedback.
All reactions