![JAR search and dependency download from the Maven repository](/logo.png)
org.ggp.base.util.gdl.model.SentenceFormModel Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of alloy-ggp-base Show documentation
Show all versions of alloy-ggp-base Show documentation
A modified version of the GGP-Base library for Alloy.
The newest version!
package org.ggp.base.util.gdl.model;
import java.util.List;
import java.util.Set;
import org.ggp.base.util.gdl.grammar.Gdl;
import org.ggp.base.util.gdl.grammar.GdlRule;
import org.ggp.base.util.gdl.grammar.GdlSentence;
import org.ggp.base.util.gdl.transforms.ConstantChecker;
import com.google.common.collect.Multimap;
/**
* A model of the different types of sentences that may be true over
* the course of a game.
*
* The SentenceFormModel uses the notion of a sentence form. This defines
* the name of a sentence and the structure of functions within the
* sentence.
*
* The recommended way of creating a SentenceFormModel is via
* {@link SentenceFormModelFactory#create(List)}.
*/
public interface SentenceFormModel {
/**
* Returns the set of sentence forms that are independent; that is,
* the truth values of the sentences of these forms may depend on
* the turn of the game, but never on players' actions.
*
* For example, in tic-tac-toe, the sentence form (true (control _))
* is independent, but not constant: it changes from turn to turn,
* but always in the same way.
*
* All constant sentence forms are independent, so this is a superset
* of {@link #getConstantSentenceForms()}.
*/
Set getIndependentSentenceForms();
/**
* Returns the set of sentence forms that are constant; that is,
* the truth values of sentences of these forms do not change
* over the course of the game.
*
* The values of these sentences may be precomputed using a
* {@link ConstantChecker}.
*/
Set getConstantSentenceForms();
/**
* Returns a graph describing how the sentence forms relate to one
* another in the rules of the game. One sentence form depends on
* another if a rule producing the first sentence form has the
* second sentence form in its body.
*
* Each key depends on the sentence forms in the associated collection.
*
* Note that this graph structure may contain cycles, and a sentence form
* may depend on itself. Consider using
* {@link DependencyGraphs#toposortSafe(Set, Multimap)} to obtain a
* topological ordering in a way that respects cycles.
*/
Multimap getDependencyGraph();
/**
* Returns the list of sentences specifically listed as true in the
* game description for that sentence form.
*/
Set getSentencesListedAsTrue(SentenceForm form);
/**
* Returns the rules that GENERATE the sentence form, not necessarily
* all the rules that contain it.
*
* Note that if functions can be assigned to variables, this might not
* find all the rules capable of generating sentences of the given form.
*/
Set getRules(SentenceForm form);
/**
* Returns all sentence forms in the model.
*/
Set getSentenceForms();
/**
* Returns the sentence form of the given sentence.
*/
SentenceForm getSentenceForm(GdlSentence sentence);
/**
* Returns the game description for the game.
*/
List getDescription();
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy