Package net.sf.tweety.lp.asp.syntax
Class Program
- java.lang.Object
-
- java.util.AbstractCollection<E>
-
- java.util.AbstractSet<E>
-
- java.util.HashSet<T>
-
- net.sf.tweety.commons.util.rules.RuleSet<ASPRule>
-
- net.sf.tweety.lp.asp.syntax.Program
-
- All Implemented Interfaces:
java.io.Serializable,java.lang.Cloneable,java.lang.Iterable<ASPRule>,java.util.Collection<ASPRule>,java.util.Set<ASPRule>,BeliefBase,LogicProgram<ASPHead,ASPBodyElement,ASPRule>
public class Program extends RuleSet<ASPRule> implements LogicProgram<ASPHead,ASPBodyElement,ASPRule>
This class models an ASP-Core-2 program, meaning a set of rules and optionally a query. A program is ground if it contains no variables. The rules are ordered alphabetically.- Author:
- Tim Janus, Thomas Vengels, Anna Gessler
- See Also:
- Serialized Form
-
-
Constructor Summary
Constructors Constructor Description Program()Creates a new empty program.Program(java.util.Collection<ASPRule> rules)Creates a new program with the given rules.Program(ASPLiteral query, java.util.Set<ASPRule> rules)Creates a new program with the given query and rules.Program(Program other)Copy-Constructor
-
Method Summary
Modifier and Type Method Description voidadd(Program other)Adds another program's content to the content of this program.voidaddFact(ASPHead fact)Adds the given fact to the programvoidaddFact(ASPLiteral fact)voidaddFacts(ASPHead... fact)Adds the given facts to the programProgramclone()static Programdefaultification(Program p)Creates the defaultification p_d of a given program p.Programexchange(Term<?> v, Term<?> t)Substitutes all occurrences of term "v" in this formula by term "t" and at the same time replaces all occurrences of term "t" by term "v" and eventually returns the new formula.FolSignaturegetMinimalSignature()Returns the signature of the language of this knowledge base.java.util.Set<Predicate>getOutputWhitelist()Returns the whitelist of predicates.ASPLiteralgetQuery()Returns the query of the program, if there is one.booleanhasQuery()Returns true if the program contains a query.booleanisExtendedProgram()Checks if the program is an extended program, meaning the heads of the literals do not have more than one literal.booleanisGround()booleanisSafe()Returns true if the program is safe, i.e.Programreduct(java.util.Set<ASPLiteral> state)Returns the reduct of this program wrt.voidsetOutputWhitelist(java.util.Collection<Predicate> ps)Sets the whitelist of predicates.voidsetQuery(ASPLiteral query)Sets the query of the program.Programsubstitute(java.util.Map<? extends Term<?>,? extends Term<?>> map)Substitutes all occurrences of all terms "v" in map.keyset() in this formula by map.get(v) and returns the new formula.Programsubstitute(Term<?> v, Term<?> t)Substitutes all occurrences of term "v" in this formula by term "t" and returns the new formula.java.lang.StringtoString()-
Methods inherited from class net.sf.tweety.commons.util.rules.RuleSet
getConclusions, getPremises, getRulesWithConclusion, getSyntacticModule
-
Methods inherited from class java.util.HashSet
add, clear, contains, isEmpty, iterator, remove, size, spliterator
-
-
-
-
Constructor Detail
-
Program
public Program()
Creates a new empty program.
-
Program
public Program(java.util.Collection<ASPRule> rules)
Creates a new program with the given rules.- Parameters:
rules- a set of rules
-
Program
public Program(ASPLiteral query, java.util.Set<ASPRule> rules)
Creates a new program with the given query and rules.- Parameters:
query- a queryrules- a set of rules
-
Program
public Program(Program other)
Copy-Constructor- Parameters:
other- another program
-
-
Method Detail
-
setQuery
public void setQuery(ASPLiteral query)
Sets the query of the program.- Parameters:
query- a literal
-
addFact
public void addFact(ASPHead fact)
Description copied from interface:LogicProgramAdds the given fact to the program- Specified by:
addFactin interfaceLogicProgram<ASPHead,ASPBodyElement,ASPRule>- Parameters:
fact- a fact
-
addFacts
public void addFacts(ASPHead... fact)
Description copied from interface:LogicProgramAdds the given facts to the program- Specified by:
addFactsin interfaceLogicProgram<ASPHead,ASPBodyElement,ASPRule>
-
getMinimalSignature
public FolSignature getMinimalSignature()
Description copied from interface:BeliefBaseReturns the signature of the language of this knowledge base.- Specified by:
getMinimalSignaturein interfaceBeliefBase- Specified by:
getMinimalSignaturein interfaceLogicProgram<ASPHead,ASPBodyElement,ASPRule>- Returns:
- the signature of the language of this knowledge base.
-
substitute
public Program substitute(Term<?> v, Term<?> t) throws java.lang.IllegalArgumentException
Description copied from interface:LogicProgramSubstitutes all occurrences of term "v" in this formula by term "t" and returns the new formula.- Specified by:
substitutein interfaceLogicProgram<ASPHead,ASPBodyElement,ASPRule>- Parameters:
v- the term to be substituted.t- the term to substitute.- Returns:
- a formula where every occurrence of "v" is replaced by "t".
- Throws:
java.lang.IllegalArgumentException- if "v" and "t" are of different sorts
-
substitute
public Program substitute(java.util.Map<? extends Term<?>,? extends Term<?>> map) throws java.lang.IllegalArgumentException
Description copied from interface:LogicProgramSubstitutes all occurrences of all terms "v" in map.keyset() in this formula by map.get(v) and returns the new formula.- Specified by:
substitutein interfaceLogicProgram<ASPHead,ASPBodyElement,ASPRule>- Parameters:
map- a mapping defining which terms to be substituted.- Returns:
- a formula where every term in map.keyset() has been replaced by map.get(v).
- Throws:
java.lang.IllegalArgumentException- if any term and its mapping are of different sorts
-
exchange
public Program exchange(Term<?> v, Term<?> t) throws java.lang.IllegalArgumentException
Description copied from interface:LogicProgramSubstitutes all occurrences of term "v" in this formula by term "t" and at the same time replaces all occurrences of term "t" by term "v" and eventually returns the new formula.- Specified by:
exchangein interfaceLogicProgram<ASPHead,ASPBodyElement,ASPRule>- Parameters:
v- a term.t- a term.- Returns:
- a new logical formula with both "v" and "t" exchanged.
- Throws:
java.lang.IllegalArgumentException- if "v" and "t" are of different sorts
-
toString
public java.lang.String toString()
- Specified by:
toStringin interfaceBeliefBase- Specified by:
toStringin interfaceLogicProgram<ASPHead,ASPBodyElement,ASPRule>- Overrides:
toStringin classjava.util.AbstractCollection<ASPRule>
-
isGround
public boolean isGround()
-
setOutputWhitelist
public void setOutputWhitelist(java.util.Collection<Predicate> ps)
Sets the whitelist of predicates. Solvers that use this option will only show atoms over predicates in this set in their output.- Parameters:
ps- set of predicates
-
getOutputWhitelist
public java.util.Set<Predicate> getOutputWhitelist()
Returns the whitelist of predicates. Solvers that use this option will only show atoms over predicates in this set in their output.- Returns:
- set of whitelisted predicates
-
hasQuery
public boolean hasQuery()
Returns true if the program contains a query.- Returns:
- true if the program has a query, false otherwise
-
getQuery
public ASPLiteral getQuery()
Returns the query of the program, if there is one.- Returns:
- a literal, or null if the program has no query
-
reduct
public Program reduct(java.util.Set<ASPLiteral> state)
Returns the reduct of this program wrt. the given state, i.e. a program that contains no default negation and only those rules of this program (without all default-negated literals in the body) that do not have a default-negated version of a literal in their body.- Parameters:
state- some set of literals- Returns:
- the reduct of this program
-
defaultification
public static Program defaultification(Program p)
Creates the defaultification p_d of a given program p. A defaultificated program p' of p adds for every Rule r in p a modified rule r_d of the form: 'H(r) :- B(r), not -H(r).' to the program p'.- Parameters:
p- The program which is not defaultificated yet- Returns:
- a program p' which is the defaultificated version of p.
-
addFact
public void addFact(ASPLiteral fact)
-
isExtendedProgram
public boolean isExtendedProgram()
Checks if the program is an extended program, meaning the heads of the literals do not have more than one literal.- Returns:
- True if the program is an extended program, false otherwise.
-
add
public void add(Program other)
Adds another program's content to the content of this program.- Parameters:
other- Reference to the other program.
-
isSafe
public boolean isSafe()
Returns true if the program is safe, i.e. if all of its rules and its query are safe.- Returns:
- true if the program is safe, false otherwise
-
-