Skip to content
Discussion options

You must be logged in to vote

You can read more about eqrel in https://souffle-lang.github.io/relations#equivalence-relations and the paper https://souffle-lang.github.io/pdf/pact2019eqrel.pdf

It is an optimization in the sense that you don't have to write explicit reflexivity, symmetry and transitivity rules and it will perform better than if you had.

In your exemple, path has a symmetry rule but no reflexivity or transitivity rule, so you cannot expect to get the same output when eqrel add them for you.

Maybe you want to add a reflexivity rule and change path(x,z) :- edge(x,y), path(y,z). into a transitivity rule: path(x,z) :- path(x,y), path(y,z)., in that case you get the same result as eqrel.

To summarize:

.decl …

Replies: 1 comment 1 reply

Comment options

You must be logged in to vote
1 reply
@KarlJoad
Comment options

Answer selected by KarlJoad
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
Q&A
Labels
None yet
2 participants