package org.ggp.base.util.gdl.model;

import java.util.Set;

import org.ggp.base.util.gdl.grammar.GdlConstant;
import org.ggp.base.util.gdl.grammar.GdlSentence;

/**
 * A SentenceFormDomain contains information about the possible
 * sentences of a particular sentence form within a game. In other
 * words, it captures information about which constants can be
 * in which positions in the SentenceForm.
 */
public interface SentenceFormDomain extends Iterable<GdlSentence> {
    /**
     * Returns the SentenceForm associated with this domain.
     */
    SentenceForm getForm();

    /**
     * Returns a set containing every constant that can appear in
     * the given slot index in the sentence form.
     */
    Set<GdlConstant> getDomainForSlot(int slotIndex);
}
