Class InferenceRule<T extends Invertable>

java.lang.Object
org.tweetyproject.arg.aspic.syntax.InferenceRule<T>
Type Parameters:
T - is the type of the language that the ASPIC theory's rules range over
All Implemented Interfaces:
Formula, Rule<T,T>, ComplexLogicalFormula, LogicStructure, SimpleLogicalFormula
Direct Known Subclasses:
DefeasibleInferenceRule, StrictInferenceRule

public abstract class InferenceRule<T extends Invertable> extends Object implements Rule<T,T>, ComplexLogicalFormula
This stands for an inference rule or for a premise if premises has length 0. If this is a premise and defeasible it is an ordinary premise else it is an axiom.
Author:
Nils Geilen
  • Constructor Details

    • InferenceRule

      public InferenceRule()
      Creates an empty instance
    • InferenceRule

      public InferenceRule(T conclusion, Collection<T> premise)
      Constructs a new inference rule of rule p -> c if strict or p => c else
      Parameters:
      conclusion - ^= p
      premise - ^= c
  • Method Details

    • hashCode

      public int hashCode()
      Specified by:
      hashCode in interface SimpleLogicalFormula
      Overrides:
      hashCode in class Object
    • equals

      public boolean equals(Object obj)
      Specified by:
      equals in interface SimpleLogicalFormula
      Overrides:
      equals in class Object
    • isDefeasible

      public abstract boolean isDefeasible()
      Returns:
      true iff this rule is defeasible
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • toStrict

      public StrictInferenceRule<T> toStrict()
      Returns:
      a strict instance of this rule
    • toDefeasible

      public DefeasibleInferenceRule<T> toDefeasible()
      Returns:
      a defeasible instance of this rule
    • getIdentifier

      public String getIdentifier()
      Returns the name if it has one, else it returns the hashcode
      Returns:
      an identifier for this rule
    • getName

      public String getName()
      Returns the name
      Returns:
      this rul's name
    • setName

      public void setName(String name)
      Sets the name
      Parameters:
      name - new name
    • isFact

      public boolean isFact()
      Description copied from interface: Rule
      isFact
      Specified by:
      isFact in interface Rule<T extends Invertable,T extends Invertable>
      Returns:
      whether the rule is a fact
    • isConstraint

      public boolean isConstraint()
      Description copied from interface: Rule
      isConstraint
      Specified by:
      isConstraint in interface Rule<T extends Invertable,T extends Invertable>
      Returns:
      whether the rule is a constraint
    • setConclusion

      public void setConclusion(T conclusion)
      Description copied from interface: Rule
      Set the conclusion of this rule.
      Specified by:
      setConclusion in interface Rule<T extends Invertable,T extends Invertable>
      Parameters:
      conclusion - some formula
    • addPremise

      public void addPremise(T premise)
      Description copied from interface: Rule
      Add the given premise to this rule.
      Specified by:
      addPremise in interface Rule<T extends Invertable,T extends Invertable>
      Parameters:
      premise - some formula
    • addPremises

      public void addPremises(Collection<? extends T> premises)
      Description copied from interface: Rule
      Add the given premises to this rule.
      Specified by:
      addPremises in interface Rule<T extends Invertable,T extends Invertable>
      Parameters:
      premises - some formulas
    • getSignature

      public Signature getSignature()
      Description copied from interface: Formula
      Returns the signature of the language of this formula.
      Specified by:
      getSignature in interface Formula
      Specified by:
      getSignature in interface Rule<T extends Invertable,T extends Invertable>
      Returns:
      the signature of the language of this formula.
    • getPremise

      public Collection<? extends T> getPremise()
      Description copied from interface: Rule
      Returns the premise of this rule.
      Specified by:
      getPremise in interface Rule<T extends Invertable,T extends Invertable>
      Returns:
      the premise of this rule.
    • getConclusion

      public T getConclusion()
      Description copied from interface: Rule
      Returns the conclusion of this rule.
      Specified by:
      getConclusion in interface Rule<T extends Invertable,T extends Invertable>
      Returns:
      the conclusion of this rule.
    • allGroundInstances

      public Set<InferenceRule<T>> allGroundInstances(Set<Constant> constants)
      Parameters:
      constants - constans
      Returns:
      all ground instances
    • substitute

      public abstract InferenceRule<T> substitute(Term<?> v, Term<?> t) throws IllegalArgumentException
      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 interface ComplexLogicalFormula
      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:
      IllegalArgumentException - if "v" and "t" are of different sorts
    • substitute

      public InferenceRule<T> substitute(Map<? extends Term<?>,? extends Term<?>> map) throws IllegalArgumentException
      Description copied from interface: ComplexLogicalFormula
      Substitutes all occurrences of all terms "v" in map.keyset() in this formula by map.get(v) and returns the new formula.
      Specified by:
      substitute in interface ComplexLogicalFormula
      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:
      IllegalArgumentException - if any term and its mapping are of different sorts
    • clone

      public abstract InferenceRule<T> clone()
      Description copied from interface: SimpleLogicalFormula
      Creates a deep copy of this formula
      Specified by:
      clone in interface ComplexLogicalFormula
      Specified by:
      clone in interface SimpleLogicalFormula
      Returns:
      the cloned formula
    • allSubstitutions

      public Set<Map<Variable,Term<?>>> allSubstitutions(Collection<? extends Term<?>> terms) throws IllegalArgumentException
      Computes all possible substitutions, i.e. maps from variables to terms, of unbound variables of this formula's inner fol formulas to terms in "terms".
      Parameters:
      terms - a set of terms.
      Returns:
      a set of maps from variables to terms.
      Throws:
      IllegalArgumentException - if there is an unbound variable in this formula for which there is no term in "terms" with the same sort.
    • getUnboundVariables

      public Set<Variable> getUnboundVariables()
      Returns:
      the unbound variables
    • exchange

      public InferenceRule<T> exchange(Term<?> v, Term<?> t) throws IllegalArgumentException
      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 interface ComplexLogicalFormula
      Parameters:
      v - a term.
      t - a term.
      Returns:
      a new logical formula with both "v" and "t" exchanged.
      Throws:
      IllegalArgumentException - if "v" and "t" are of different sorts
    • 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 interface ComplexLogicalFormula
      Returns:
      "true" if this formula is ground.
    • isWellFormed

      public boolean isWellFormed()
      Description copied from interface: ComplexLogicalFormula
      Checks if this formula is well formed in the logical langauge. What well- formed means is highly language dependent and the documentation of implementing sub classes shall describe the well formed term for the language they model.
      Specified by:
      isWellFormed in interface ComplexLogicalFormula
      Returns:
      true if the formula is well-formed, false otherwise
    • getAtoms

      public Set<? extends Atom> getAtoms()
      Description copied from interface: SimpleLogicalFormula
      Processes the set of all atoms which appear in this formula
      Specified by:
      getAtoms in interface SimpleLogicalFormula
      Returns:
      The set of all atoms
    • getPredicateCls

      public Class<? extends Predicate> getPredicateCls()
      Specified by:
      getPredicateCls in interface SimpleLogicalFormula
      Returns:
      The class description of the predicate used by this formula.
    • isLiteral

      public boolean isLiteral()
      Specified by:
      isLiteral in interface SimpleLogicalFormula
      Returns:
      true if the formula represents a literal in the language or false otherwise
    • containsTermsOfType

      public <C extends Term<?>> boolean containsTermsOfType(Class<C> cls)
      Description copied from interface: LogicStructure
      Checks if this logical structure contains at least one term of type C. This method is a shortcut for !getTerms(TermImplementation.class).isEmpty().
      Specified by:
      containsTermsOfType in interface LogicStructure
      Type Parameters:
      C - the type of terms
      Parameters:
      cls - The class structure representing the type C of the term.
      Returns:
      True if this logical structure contains at least one term of type C or false otherwise.
    • getPredicates

      public Set<? extends Predicate> getPredicates()
      Description copied from interface: SimpleLogicalFormula
      Processes the set of all predicates which appear in this formula
      Specified by:
      getPredicates in interface SimpleLogicalFormula
      Returns:
      all predicates that appear in this formula
    • getTerms

      public Set<Term<?>> getTerms()
      Specified by:
      getTerms in interface LogicStructure
      Returns:
      a set containing all terms of this logical structure
    • getTerms

      public <C extends Term<?>> Set<C> getTerms(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 interface LogicStructure
      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