Package org.tweetyproject.lp.asp.syntax
Class Program
- java.lang.Object
-
- java.util.AbstractCollection<E>
-
- java.util.AbstractSet<E>
-
- java.util.HashSet<T>
-
- org.tweetyproject.commons.util.rules.RuleSet<ASPRule>
-
- org.tweetyproject.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<ClassicalHead,ASPBodyElement,ASPRule>
public class Program extends RuleSet<ASPRule> implements LogicProgram<ClassicalHead,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(ASPRule... rules)Creates a new program with the given 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(ASPLiteral fact)Adds a fact to this program.voidaddFact(ClassicalHead fact)Adds the given fact to the programvoidaddFacts(ClassicalHead... fact)Adds the given facts to the programProgramclone()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.static ProgramgetDefaultification(Program p)Creates the defaultification p_d of a given program p.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.ProgramgetReduct(java.util.Set<ASPLiteral> state)Returns the reduct of this program wrt.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()Checks if the program is ground, meaning if it contains no rules with variables.booleanisSafe()Returns true if the program is safe, i.e.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 org.tweetyproject.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(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(ClassicalHead fact)
Description copied from interface:LogicProgramAdds the given fact to the program- Specified by:
addFactin interfaceLogicProgram<ClassicalHead,ASPBodyElement,ASPRule>- Parameters:
fact- a fact
-
addFacts
public void addFacts(ClassicalHead... fact)
Description copied from interface:LogicProgramAdds the given facts to the program- Specified by:
addFactsin interfaceLogicProgram<ClassicalHead,ASPBodyElement,ASPRule>- Parameters:
fact- some facts
-
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
-
addFact
public void addFact(ASPLiteral fact)
Adds a fact to this program.- Parameters:
fact- a literal
-
add
public void add(Program other)
Adds another program's content to the content of this program.- Parameters:
other- Reference to the other program.
-
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.
-
isSafe
public boolean isSafe()
Returns true if the program is safe, i.e. if all of its rules and its query are safe according to the definition of safety given in the ASP-Core-2 standard.- Returns:
- true if the program is safe, false otherwise
-
isGround
public boolean isGround()
Checks if the program is ground, meaning if it contains no rules with variables.- Returns:
- true if the program is ground, false otherwise
-
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<ClassicalHead,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<ClassicalHead,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<ClassicalHead,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<ClassicalHead,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
-
getReduct
public Program getReduct(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
-
getDefaultification
public static Program getDefaultification(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.
-
toString
public java.lang.String toString()
- Specified by:
toStringin interfaceBeliefBase- Specified by:
toStringin interfaceLogicProgram<ClassicalHead,ASPBodyElement,ASPRule>- Overrides:
toStringin classjava.util.AbstractCollection<ASPRule>
-
-