Class CLaw
- java.lang.Object
-
- net.sf.tweety.action.description.syntax.CLaw
-
- Direct Known Subclasses:
DynamicLaw
,StaticLaw
public abstract class CLaw extends java.lang.Object implements CausalLaw
The action description language C consists of two distinct expressions: static laws and dynamic laws. Both share some common functionalities which are implemented in this base class.- Author:
- Sebastian Homann
-
-
Field Summary
Fields Modifier and Type Field Description protected FolFormula
headFormula
protected FolFormula
ifFormula
protected java.util.Set<GroundingRequirement>
requirements
-
Constructor Summary
Constructors Constructor Description CLaw()
Creates an empty causal law.CLaw(FolFormula headFormula)
Creates a causal law of the form caused headFormula if TrueCLaw(FolFormula headFormula, java.util.Set<GroundingRequirement> requirements)
Creates a causal law of the form caused headFormula if True requires requirementsCLaw(FolFormula headFormula, FolFormula ifFormula)
Creates a causal law of the form caused headFormula if ifFormulaCLaw(FolFormula headFormula, FolFormula ifFormula, java.util.Set<GroundingRequirement> requirements)
Creates a causal law of the form caused headFormula if ifFormula requires requirements
-
Method Summary
Modifier and Type Method Description void
addGroundingRequirement(GroundingRequirement c)
abstract java.util.Set<CLaw>
getAllGrounded()
Returns the set of all grounded instances of this causal law.abstract java.util.Set<FolAtom>
getAtoms()
Returns the set of propositions in all formulas in this law.abstract java.util.Set<FolFormula>
getFormulas()
Returns the set of formulas contained in this causal law, e.g.FolFormula
getHeadFormula()
Returns the headFormula of this causal law.FolFormula
getIfFormula()
Returns the ifFormula of this causal law.abstract Signature
getSignature()
Returns the signature of the language of this formula.protected boolean
isConjunctiveClause(FolFormula pl)
a conjunctive clause is either a literal or a conjunction of literals.abstract boolean
isDefinite()
Returns true iff this law is definite.boolean
isGround()
protected boolean
isValidDefiniteHead(RelationalFormula pl)
Checks if a propositional formula is a valid head formula for a definite causal law, which means either a contradiction, a fluent or the negation of a fluent.private void
setGroundingRequirements(java.util.Set<GroundingRequirement> requirements)
private void
setHeadFormula(FolFormula headFormula)
Sets the headFormula of this causal lawprivate void
setIfFormula(FolFormula ifFormula)
Sets the IfFormula of this causal lawabstract java.util.Set<CLaw>
toDefinite()
Returns an equivalent definite causal law.
-
-
-
Field Detail
-
headFormula
protected FolFormula headFormula
-
ifFormula
protected FolFormula ifFormula
-
requirements
protected java.util.Set<GroundingRequirement> requirements
-
-
Constructor Detail
-
CLaw
public CLaw()
Creates an empty causal law.
-
CLaw
public CLaw(FolFormula headFormula)
Creates a causal law of the form caused headFormula if True- Parameters:
headFormula
- some FOL formula
-
CLaw
public CLaw(FolFormula headFormula, java.util.Set<GroundingRequirement> requirements)
Creates a causal law of the form caused headFormula if True requires requirements- Parameters:
headFormula
- some FOL formularequirements
- a set of requirements
-
CLaw
public CLaw(FolFormula headFormula, FolFormula ifFormula, java.util.Set<GroundingRequirement> requirements)
Creates a causal law of the form caused headFormula if ifFormula requires requirements- Parameters:
headFormula
- some FOL formulaifFormula
- some FOL formularequirements
- a set of requirements
-
CLaw
public CLaw(FolFormula headFormula, FolFormula ifFormula)
Creates a causal law of the form caused headFormula if ifFormula- Parameters:
headFormula
- some FOL formulaifFormula
- some FOL formula
-
-
Method Detail
-
getSignature
public abstract Signature getSignature()
Description copied from interface:Formula
Returns the signature of the language of this formula.- Specified by:
getSignature
in interfaceFormula
- Returns:
- the signature of the language of this formula.
-
isDefinite
public abstract boolean isDefinite()
Returns true iff this law is definite. A causal law is definite if it's head is a literal or a contradiction and all formulas are conjunctions of literals.- Returns:
- true, if this law is definite, false otherwise.
-
toDefinite
public abstract java.util.Set<CLaw> toDefinite() throws java.lang.IllegalStateException
Returns an equivalent definite causal law. A causal law is definite if it's head is a literal or a contradiction and all formulas are conjunctions of literals.- Returns:
- the equivalent definite causal law if one exists.
- Throws:
java.lang.IllegalStateException
- when there is no equivalent definite causal law.
-
getAtoms
public abstract java.util.Set<FolAtom> getAtoms()
Returns the set of propositions in all formulas in this law.- Returns:
- the set of propositions in all formulas in this law.
-
getFormulas
public abstract java.util.Set<FolFormula> getFormulas()
Returns the set of formulas contained in this causal law, e.g. in a static law, this contains the head formula and the if formula.- Returns:
- the set of formulas contained in this causal law.
-
setGroundingRequirements
private void setGroundingRequirements(java.util.Set<GroundingRequirement> requirements)
-
setHeadFormula
private void setHeadFormula(FolFormula headFormula)
Sets the headFormula of this causal law- Parameters:
headFormula
- The new headFormula of this causal law.
-
setIfFormula
private void setIfFormula(FolFormula ifFormula)
Sets the IfFormula of this causal law- Parameters:
ifFormula
- The new IfFormula of this causal law.
-
addGroundingRequirement
public void addGroundingRequirement(GroundingRequirement c)
-
getHeadFormula
public FolFormula getHeadFormula()
Returns the headFormula of this causal law.- Returns:
- the headFormula of this causal law.
-
getIfFormula
public FolFormula getIfFormula()
Returns the ifFormula of this causal law.- Returns:
- the ifFormula of this causal law.
-
isGround
public boolean isGround()
-
getAllGrounded
public abstract java.util.Set<CLaw> getAllGrounded()
Returns the set of all grounded instances of this causal law.- Returns:
- the set of all grounded instances of this causal law.
-
isValidDefiniteHead
protected boolean isValidDefiniteHead(RelationalFormula pl)
Checks if a propositional formula is a valid head formula for a definite causal law, which means either a contradiction, a fluent or the negation of a fluent.- Parameters:
pl
- a propositional formula- Returns:
- true, if pl is a valid definite head formula
-
isConjunctiveClause
protected boolean isConjunctiveClause(FolFormula pl)
a conjunctive clause is either a literal or a conjunction of literals.- Parameters:
pl
- a propositional formula- Returns:
- true, if pl is a conjunctive clause
-
-