dwfs_mm: an implementation of the D-WFS semantics
based on minimal model reasoning
DisLoP Home *
dwfs_mm is an extension of the
minimal model reasoner. It uses iterative minimal model
reasoning to implement the D-WFS semantics. This system has been
developed as a part of the research project
D-WFS and the method underlying
dwfs_mm are described in
- S. Brass, J. Dix:
Disjunctive Semantics Based upon Partial and Bottom-Up Evaluation.
Proc. 12th Int. Conf. on Logic Programming, MIT, 1995, 199-213.
- S. Brass, J. Dix, I. Niemelä, T. Przymusinski:
A Comparison of STATIC Semantics with D-WFS
Research Report 2 1996 (Abstract,
To appear in the Proc. of ILPS '97
dwfs_mm accepts as its input a disjunctive propositional
program with negative body literals. It partially
evaluates the program, and based on the partially evaluated program
P* it answers
queries which can be disjunctions either of positive or negative
A query Qp consisting of a
disjunction of positive literals succeeds in D-WFS iff
P*p |= Qp
where P*p are the clauses in
P* without negative body literals.
A query Qn consisting of a disjunction of negative
literals succeeds in D-WFS iff
P* |=min Qn.
|=min is minimal model consequence where
negative atoms are
only NAF-consistent models are allowed.
If no query is entered, only the partially evaluated program
P* is written
out at the end of the proof process.
dwfs_mm has been written in ECLiPSe Prolog by Ilkka
Niemelä and Katrin Erk.
The prototype implementation and some test cases are available as a
gzipped tar file.
If you have questions or comments, please send an email to
Ilkka Niemelä or
Start the program by either calling
if you have a command-line version of the program, or loading
dwfs_mm into ECLiPSe Prolog and then running it:
Messages at the end of the proof process will go to two places: First
to the screen, then to a file with the same name as the input
with ".res" attached.
For clauses and queries, use the following syntax:
Besides clauses, two other elements may be present in the input file:
- Literals can be either atoms or otherwise ground terms.
- Express the negation of a literal a either as
not(a), !a or -a. In clauses,
negative literals can appear only in the body.
- Separate left-hand and right-hand side of a clause by
"<-", use semicolons for disjunctions and commas for
a ; b ; c <- d , not e.
- Empty clause heads are represented by false. Empty
clause bodies are represented by true.
- a query - only one per input file - preceded by "?-" and
consisting of a disjunction
either of positive or of negative literals, e.g.
?- a ; b ; c
- terms of the form
where T is either a ground term or a string. T will
appear in the output messages at the end of the proof
process. Use this command for problem descriptions. You can
place any number of these in the input file.
Back to the DisLoP
visitors since June 27, 1997.
$Author: arvind $ $Date: 1997/10/17 14:19:50 $