Class Satchmo

java.lang.Object
   |
   +----Satchmo

public class Satchmo
extends Object
Satchmo ist ein von Bry/Manthey entwickeltes Modellgenerierungsverfahren. Die erste Satchmoversion war ein Prologprogramm. Dies ist die Javaimplementierung von Satchmo. Dieses Programm ist ein Kommandozeilentool. Der aufruf auf der Kommandozeile lautet:

java Satchmo [options] file [files]

Es gibt folgende Optionen:

-mmgenerates only Minimal Models.
Option -cs is therefore included in this option
-csgenerates each model only once (ComplementSplitting).
-maxmodels zahlgenerates only zahl models
-tracegenerates trace-files for SNARKS
-verboseprint some information about the momentaneous
state of inference, whereas means
Neg_Atoms: negated complents when cs is turned on
Neg_Models: negated models when mm is turned on
vI: heads of clauses, which are violated instances
('null' means 'empty head', i.e. a negation.)
assert/retract: assert/retract an atom to/from database


Constructor Index

 o Satchmo(String)
Konstruktor wird nur beim ersten Initialisieren benutzt.

Method Index

 o main(String[])
 o refute()
Nachdem die Spezifikation geladen ist, wird refute() aufgerufen um den Modellgenerierungsprozess zu starten.
 o ReInit(String)
Wird benötigt um Satchmo und den Parser zu reinitialisieren.
 o satisfiable()
Entspricht satisfiable in satchmo.prolog.
 o satisfy_all()
Entspricht satisfy_all in satchmo.prolog.
 o violatedInstance(Clause, int)
Es wird versucht den Rumpf (Body) der übergebene Klausel aus dem bisherigen Bestand an bewiesenen (oder angenommenen) Klauseln in der DataBase zu beweisen.

Constructors

 o Satchmo
 public Satchmo(String file)
Konstruktor wird nur beim ersten Initialisieren benutzt. Bei weitere Initialisierungen ReInit benutzen!

Methods

 o ReInit
 public void ReInit(String file)
Wird benötigt um Satchmo und den Parser zu reinitialisieren. Die von JavaCC generierten Parser sind aus Effizienzgründen static, und können deshalb nicht neu Instanziert werden. Man muß die ReInit() -Methode des Parsers benutzen; das hat zur Folge, daß man auch Satchmo nicht einfach neu instatieren darf. Benutzen Sie stattdessen diese Methode!

 o main
 public static void main(String args[])
 o refute
 public void refute()
Nachdem die Spezifikation geladen ist, wird refute() aufgerufen um den Modellgenerierungsprozess zu starten.

 o satisfiable
 public void satisfiable()
Entspricht satisfiable in satchmo.prolog.

 o satisfy_all
 public void satisfy_all()
Entspricht satisfy_all in satchmo.prolog.

 o violatedInstance
 public void violatedInstance(Clause c,
                              int position)
Es wird versucht den Rumpf (Body) der übergebene Klausel aus dem bisherigen Bestand an bewiesenen (oder angenommenen) Klauseln in der DataBase zu beweisen. Ist der Rumpf beweisbar, wird geprüft, ob eine Element des Kopfes bereits in der DataBase enthalten ist. Ist dies der Fall, so ist die Klausel keine verletzte Instanz einer Regel. Der Positionsmarker position dient der eindeutigen Bestimmung des zu prüfenden Atoms der Klausel. Zur einfachen Überprüfung, ob die Klausel eine verletzte Instanz (vI) einer Regel ist, ist folgender Aufruf genau der richtige:

violatedInstance(klausel_xyz, 0);

Warum benutze ich keine while-Schleife, sondern Rekursion?

Um Backtracken zu können! In einer Schleife kann ich das nicht.

Ist die Klausel eine vI, so findet sie sich mit einer (durch die Spezifikation) bestimmten Belgung in den violatedInstances wieder.

Entspricht violated_instance in satchmo.prolog.