Package org.tweetyproject.lp.asp.syntax
Class ASPRule
- java.lang.Object
-
- org.tweetyproject.lp.asp.syntax.ASPElement
-
- org.tweetyproject.lp.asp.syntax.ASPRule
-
- All Implemented Interfaces:
java.lang.Comparable<ASPRule>
,Formula
,Rule<ASPHead,ASPBodyElement>
,ComplexLogicalFormula
,LogicStructure
,SimpleLogicalFormula
public class ASPRule extends ASPElement implements Rule<ASPHead,ASPBodyElement>, java.lang.Comparable<ASPRule>
This class models a rule in ASP. A rule consists of a head and a body. The head contains 0+ classical atoms and the body contains 0+ literals. Rules with non-empty heads and empty bodies are called facts, rules with empty heads and non-empty bodies are called constraints.- Author:
- Anna Gessler, Tim Janus, Thomas Vengels
-
-
Constructor Summary
Constructors Constructor Description ASPRule()
Empty constructorASPRule(java.util.List<ASPBodyElement> body)
Creates a constraint with the given body.ASPRule(java.util.List<ASPBodyElement> nafliterals, Term<?> weight, java.util.List<Term<?>> terms)
Creates a weak constraint with the given weight and terms.ASPRule(java.util.List<ASPBodyElement> body, Term<?> weight, Term<?> level, java.util.List<Term<?>> terms)
Creates a weak constraint with the given weight, level (priority) and terms.ASPRule(ASPHead head)
Creates a fact with the given ASPHead.ASPRule(ASPHead head, java.util.List<ASPBodyElement> body)
Creates a rule with the given head and body.ASPRule(ASPHead head, ASPBodyElement b)
Creates a rule with the given head and a single-element body.ASPRule(ASPLiteral literal)
Creates a fact with the given literal.ASPRule(ASPLiteral head, java.util.List<ASPBodyElement> body)
Creates a rule with the given head and body.ASPRule(ASPLiteral head, ASPBodyElement b)
Creates a rule with the given head and a single-element body.ASPRule(ASPRule other)
Copy-ConstructorASPRule(OptimizationStatement opt)
Creates a new rule with the given optimization statement.
-
Method Summary
Modifier and Type Method Description void
addBody(ASPBodyElement premise)
Add the given body element to this rule.void
addBodyElements(java.util.Collection<? extends ASPBodyElement> premises)
Add the given body elements to this rule.void
addPremise(ASPBodyElement premise)
Add the given premise to this rule.void
addPremises(java.util.Collection<? extends ASPBodyElement> premises)
Add the given premises to this rule.void
addToHead(ASPLiteral literal)
Add the given literal to the head of the rule.ASPRule
clone()
Creates a deep copy of this formulaint
compareTo(ASPRule arg0)
boolean
equals(java.lang.Object other)
ASPRule
exchange(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.java.util.Set<ASPAtom>
getAtoms()
Processes the set of all atoms which appear in this formulajava.util.List<ASPBodyElement>
getBody()
ASPHead
getConclusion()
Returns the conclusion of this rule.java.util.List<Term<?>>
getConstraintTerms()
ASPHead
getHead()
Term<?>
getLevel()
java.util.Collection<? extends ASPLiteral>
getLiterals()
java.util.Set<Predicate>
getPredicates()
Processes the set of all predicates which appear in this formulajava.util.List<ASPBodyElement>
getPremise()
Returns the premise of this rule.FolSignature
getSignature()
Returns the signature of the language of this formula.java.util.Set<Term<?>>
getTerms()
<C extends Term<?>>
java.util.Set<C>getTerms(java.lang.Class<C> cls)
Processes the set containing all terms of type C.Term<?>
getWeight()
int
hashCode()
boolean
isConstraint()
boolean
isEmpty()
boolean
isFact()
boolean
isGround()
Checks whether this formula is ground, i.e.boolean
isLiteral()
boolean
isOptimizationStatement()
java.lang.Boolean
isSafe()
This methods tests a rule for safety.java.lang.String
printToClingo()
Returns a representation of this ASP element in clingo (potassco) syntax.void
setBody(ASPBodyElement... aspBodyElements)
Set this rule's body to the given ASPBodyElements.void
setConclusion(ASPHead conclusion)
Set the conclusion of this rule.void
setConclusion(ASPLiteral head)
Set the conclusion of this rule.void
setHead(ASPHead head)
Set the head of this rule.void
setHead(ASPLiteral head)
Set the head of this rule.void
setLevel(Term<?> level)
Set the level attribute of this constraint.void
setWeight(Term<?> weight)
Set the weight attribute of this constraint.ASPRule
substitute(Term<?> v, Term<?> t)
Substitutes all occurrences of term "v" in this formula by term "t" and returns the new formula.java.lang.String
toString()
-
Methods inherited from class org.tweetyproject.lp.asp.syntax.ASPElement
containsTermsOfType, getPredicateCls, isWellFormed, substitute
-
-
-
-
Constructor Detail
-
ASPRule
public ASPRule()
Empty constructor
-
ASPRule
public ASPRule(ASPHead head)
Creates a fact with the given ASPHead.- Parameters:
head
- an ASPHead
-
ASPRule
public ASPRule(ASPLiteral literal)
Creates a fact with the given literal.- Parameters:
literal
- a literal
-
ASPRule
public ASPRule(ASPHead head, java.util.List<ASPBodyElement> body)
Creates a rule with the given head and body.- Parameters:
head
- an ASPHeadbody
- a list of ASPBodyElement
-
ASPRule
public ASPRule(ASPLiteral head, ASPBodyElement b)
Creates a rule with the given head and a single-element body.- Parameters:
head
- an ASPLiteralb
- a body element
-
ASPRule
public ASPRule(ASPHead head, ASPBodyElement b)
Creates a rule with the given head and a single-element body.- Parameters:
head
- an ASPHeadb
- a body element
-
ASPRule
public ASPRule(ASPLiteral head, java.util.List<ASPBodyElement> body)
Creates a rule with the given head and body.- Parameters:
head
- an ASPLiteralbody
- a list of ASPBodyElement
-
ASPRule
public ASPRule(java.util.List<ASPBodyElement> body)
Creates a constraint with the given body.- Parameters:
body
- a list of ASPBodyElement
-
ASPRule
public ASPRule(java.util.List<ASPBodyElement> nafliterals, Term<?> weight, java.util.List<Term<?>> terms)
Creates a weak constraint with the given weight and terms.- Parameters:
nafliterals
- the naf literalsweight
- some weightterms
- a list of terms
-
ASPRule
public ASPRule(java.util.List<ASPBodyElement> body, Term<?> weight, Term<?> level, java.util.List<Term<?>> terms)
Creates a weak constraint with the given weight, level (priority) and terms.- Parameters:
body
- a list of ASPBodyElementweight
- a termlevel
- a termterms
- a list of terms
-
ASPRule
public ASPRule(OptimizationStatement opt)
Creates a new rule with the given optimization statement.- Parameters:
opt
- OptimizationStatement
-
ASPRule
public ASPRule(ASPRule other)
Copy-Constructor- Parameters:
other
- another ASPRule
-
-
Method Detail
-
addPremise
public void addPremise(ASPBodyElement premise)
Description copied from interface:Rule
Add the given premise to this rule.- Specified by:
addPremise
in interfaceRule<ASPHead,ASPBodyElement>
- Parameters:
premise
- some formula
-
getPremise
public java.util.List<ASPBodyElement> getPremise()
Description copied from interface:Rule
Returns the premise of this rule.- Specified by:
getPremise
in interfaceRule<ASPHead,ASPBodyElement>
- Returns:
- the premise of this rule.
-
addPremises
public void addPremises(java.util.Collection<? extends ASPBodyElement> premises)
Description copied from interface:Rule
Add the given premises to this rule.- Specified by:
addPremises
in interfaceRule<ASPHead,ASPBodyElement>
- Parameters:
premises
- some formulas
-
addBody
public void addBody(ASPBodyElement premise)
Add the given body element to this rule.- Parameters:
premise
-
-
getBody
public java.util.List<ASPBodyElement> getBody()
- Returns:
- the body of this rule
-
addBodyElements
public void addBodyElements(java.util.Collection<? extends ASPBodyElement> premises)
Add the given body elements to this rule.- Parameters:
premises
-
-
setBody
public void setBody(ASPBodyElement... aspBodyElements)
Set this rule's body to the given ASPBodyElements.- Parameters:
aspBodyElements
-
-
setConclusion
public void setConclusion(ASPHead conclusion)
Description copied from interface:Rule
Set the conclusion of this rule.- Specified by:
setConclusion
in interfaceRule<ASPHead,ASPBodyElement>
- Parameters:
conclusion
- some formula
-
setConclusion
public void setConclusion(ASPLiteral head)
Set the conclusion of this rule.- Parameters:
head
-
-
getConclusion
public ASPHead getConclusion()
Description copied from interface:Rule
Returns the conclusion of this rule.- Specified by:
getConclusion
in interfaceRule<ASPHead,ASPBodyElement>
- Returns:
- the conclusion of this rule.
-
addToHead
public void addToHead(ASPLiteral literal)
Add the given literal to the head of the rule.- Parameters:
literal
- ASPLiteral
-
getHead
public ASPHead getHead()
- Returns:
- head of this rule
-
setHead
public void setHead(ASPHead head)
Set the head of this rule.- Parameters:
head
-
-
setHead
public void setHead(ASPLiteral head)
Set the head of this rule.- Parameters:
head
-
-
getWeight
public Term<?> getWeight()
- Returns:
- the weight of this constraint.
-
setWeight
public void setWeight(Term<?> weight)
Set the weight attribute of this constraint.- Parameters:
weight
- a term
-
getLevel
public Term<?> getLevel()
- Returns:
- the level attribute of this constraint.
-
setLevel
public void setLevel(Term<?> level)
Set the level attribute of this constraint.- Parameters:
level
- a term
-
getConstraintTerms
public java.util.List<Term<?>> getConstraintTerms()
- Returns:
- the constraint terms of this rule.
-
isFact
public boolean isFact()
- Specified by:
isFact
in interfaceRule<ASPHead,ASPBodyElement>
-
isConstraint
public boolean isConstraint()
- Specified by:
isConstraint
in interfaceRule<ASPHead,ASPBodyElement>
-
isOptimizationStatement
public boolean isOptimizationStatement()
-
isEmpty
public boolean isEmpty()
- Returns:
- true if the rule's head and body are both empty, false otherwise.
-
isSafe
public java.lang.Boolean isSafe()
This methods tests a rule for safety. Safety is defined as follows in the ASP-Core-2 standard: A rule, weak constraint or query is safe, if the set V of global variables- Returns:
- true if the rule is safe, false otherwise
-
isGround
public boolean isGround()
Description copied from interface:ComplexLogicalFormula
Checks whether this formula is ground, i.e. whether there appears no variable in this formula.- Specified by:
isGround
in interfaceComplexLogicalFormula
- Overrides:
isGround
in classASPElement
- Returns:
- "true" if this formula is ground.
-
getSignature
public FolSignature getSignature()
Description copied from interface:Formula
Returns the signature of the language of this formula.- Specified by:
getSignature
in interfaceFormula
- Specified by:
getSignature
in interfaceRule<ASPHead,ASPBodyElement>
- Specified by:
getSignature
in classASPElement
- Returns:
- the signature of the language of this formula.
-
isLiteral
public boolean isLiteral()
- Specified by:
isLiteral
in interfaceSimpleLogicalFormula
- Returns:
- true if the formula represents a literal in the language or false otherwise
-
getTerms
public java.util.Set<Term<?>> getTerms()
- Specified by:
getTerms
in interfaceLogicStructure
- Returns:
- a set containing all terms of this logical structure
-
getTerms
public <C extends Term<?>> java.util.Set<C> getTerms(java.lang.Class<C> cls)
Description copied from interface:LogicStructure
Processes the set containing all terms of type C. This method uses the equals method of the given Class and therefore does not add terms which are sub classes of type C to the set.- Specified by:
getTerms
in interfaceLogicStructure
- Type Parameters:
C
- the type of terms- Parameters:
cls
- The Class structure containing type information about the searched term- Returns:
- A set containing all terms of type C of this logical structure
-
getPredicates
public java.util.Set<Predicate> getPredicates()
Description copied from interface:SimpleLogicalFormula
Processes the set of all predicates which appear in this formula- Specified by:
getPredicates
in interfaceSimpleLogicalFormula
- Specified by:
getPredicates
in classASPElement
- Returns:
- all predicates that appear in this formula
-
getAtoms
public java.util.Set<ASPAtom> getAtoms()
Description copied from interface:SimpleLogicalFormula
Processes the set of all atoms which appear in this formula- Specified by:
getAtoms
in interfaceSimpleLogicalFormula
- Specified by:
getAtoms
in classASPElement
- Returns:
- The set of all atoms
-
getLiterals
public java.util.Collection<? extends ASPLiteral> getLiterals()
-
substitute
public ASPRule substitute(Term<?> v, Term<?> t)
Description copied from interface:ComplexLogicalFormula
Substitutes all occurrences of term "v" in this formula by term "t" and returns the new formula.- Specified by:
substitute
in interfaceComplexLogicalFormula
- Specified by:
substitute
in classASPElement
- Parameters:
v
- the term to be substituted.t
- the term to substitute.- Returns:
- a formula where every occurrence of "v" is replaced by "t".
-
exchange
public ASPRule exchange(Term<?> v, Term<?> t)
Description copied from interface:ComplexLogicalFormula
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.- Specified by:
exchange
in interfaceComplexLogicalFormula
- Overrides:
exchange
in classASPElement
- Parameters:
v
- a term.t
- a term.- Returns:
- a new logical formula with both "v" and "t" exchanged.
-
compareTo
public int compareTo(ASPRule arg0)
- Specified by:
compareTo
in interfacejava.lang.Comparable<ASPRule>
-
clone
public ASPRule clone()
Description copied from interface:SimpleLogicalFormula
Creates a deep copy of this formula- Specified by:
clone
in interfaceComplexLogicalFormula
- Specified by:
clone
in interfaceSimpleLogicalFormula
- Specified by:
clone
in classASPElement
- Returns:
- the cloned formula
-
equals
public boolean equals(java.lang.Object other)
- Specified by:
equals
in interfaceSimpleLogicalFormula
- Overrides:
equals
in classjava.lang.Object
-
hashCode
public int hashCode()
- Specified by:
hashCode
in interfaceSimpleLogicalFormula
- Overrides:
hashCode
in classjava.lang.Object
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
printToClingo
public java.lang.String printToClingo()
Description copied from class:ASPElement
Returns a representation of this ASP element in clingo (potassco) syntax. See https://potassco.org/ for more information.- Overrides:
printToClingo
in classASPElement
- Returns:
- String representation in clingo syntax
-
-