Can someone explain with a hands on example how the Gelfond Lifschitz reduct works in order to check stable model semantics?
edit
a simple example here - at least as far as I understand the thing. So far grounding is clear to me - but the the application of the reduct is not. My goal in the end is to check stable model semantics of a program P and a supplied model M
Let i, j be constant symbols and X, Y be variables. Consider
d(X,Y,Z) :- a(X), b(Y), c(Z).
c(X) :- a(X), not b(X).
a(i).
b(j).
Decide using the Gelfond-Lifschitz reduct whether the interpretation I = {a(i), b(j), c(i), d(i, j, i)}
is a stable model of P.
Then the grounding looks like:
a(i).
b(j).
c(i):- a(i), not b(i).
c(j):- a(j), not b(j).
d(i,i,i) :- a(i), b(i), c(i).
d(i,i,j) :- a(i), b(i), c(j).
d(i,j,j) :- a(i), b(j), c(j).
d(j,j,j) :- a(j), b(j), c(j).
d(j,j,i) :- a(j), b(j), c(i).
d(j,i,i) :- a(j), b(i), c(i).
d(j,i,j) :- a(j), b(i), c(j).
d(i,j,i) :- a(i), b(j), c(i).
Now I start to apply the reduct. To me only the simple bits are clear:
P = {a(i), b(i), ... unclear part}
What is lacking & unclear to me: - removal of default negations - removal of not applicable formulas