Class InferenceRule<T extends Invertable>

    • Field Summary

      Fields 
      Modifier and Type Field Description
      private T conclusion
      The rule's conclusion
      private java.lang.String name
      Identifying name.
      private java.util.Collection<T> premises
      The rule's premises
    • Constructor Summary

      Constructors 
      Constructor Description
      InferenceRule()
      Creates an empty instance
      InferenceRule​(T conclusion, java.util.Collection<T> premise)
      Constructs a new inference rule of rule p -> c if strict or p => c else
    • Field Detail

      • conclusion

        private T extends Invertable conclusion
        The rule's conclusion
      • premises

        private java.util.Collection<T extends Invertable> premises
        The rule's premises
      • name

        private java.lang.String name
        Identifying name. used e.g. for formula generation
    • Constructor Detail

      • InferenceRule

        public InferenceRule()
        Creates an empty instance
      • InferenceRule

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

      • hashCode

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

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

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

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • getIdentifier

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

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

        public void setName​(java.lang.String name)
        Sets the name
        Parameters:
        name - new name
      • getPremise

        public java.util.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 java.util.Set<InferenceRule<T>> allGroundInstances​(java.util.Set<Constant> constants)
      • substitute

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

        public InferenceRule<T> substitute​(java.util.Map<? extends Term<?>,​? extends Term<?>> map)
                                    throws java.lang.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:
        java.lang.IllegalArgumentException - if any term and its mapping are of different sorts
      • allSubstitutions

        public java.util.Set<java.util.Map<Variable,​Term<?>>> allSubstitutions​(java.util.Collection<? extends Term<?>> terms)
                                                                              throws java.lang.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:
        java.lang.IllegalArgumentException - if there is an unbound variable in this formula for which there is no term in "terms" with the same sort.
      • getUnboundVariables

        public java.util.Set<Variable> getUnboundVariables()
      • exchange

        public InferenceRule<T> exchange​(Term<?> v,
                                         Term<?> t)
                                  throws java.lang.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:
        java.lang.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 java.util.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
      • 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​(java.lang.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 java.util.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 java.util.Set<Term<?>> getTerms()
        Specified by:
        getTerms in interface LogicStructure
        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 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