souffle-lang/souffle

A problem about subsumption.

DerZc opened this issue · 0 comments

DerZc commented

Hi,

Consider the following program:

.decl a(A:number)
a(1).
a(2).
a(A1)<=a(A2):-A1<A2.
a(A1)<=a(A2):-A1>A2.
.output a

Souffle has empty result on this program.

The following program is equivalent to this program:

.decl a(A:number)
a(1).
a(A+1):-a(A), A<2.
a(A1)<=a(A2):-A1<A2.
a(A1)<=a(A2):-A1>A2.
.output a

Souffle has the following result:

---------------
a
A
===============
1
===============

Whether they should have equal results, Or maybe I'm wrong to write subsumption like this.

I have another small question, when dealing with subsumption, should it be treated as a separate rule?

The current version of Souffle I use is 3cd802d.