fr.boreal.model.logicalElements.api.FunctionalTerm Maven / Gradle / Ivy
The newest version!
package fr.boreal.model.logicalElements.api;
import java.util.Set;
/**
* A functional term is a Term that can be evaluated into another (non-functional) term
* @author Florent Tornil
*
*/
public interface FunctionalTerm extends Term {
@Override
default boolean isFunctionalTerm() {
return true;
}
/**
* Evaluate this term with the given substitution
* @param s a substitution
* @return the resulting term of the evaluation
*/
Term eval(Substitution s);
/**
* Computes the homomorphism from this term to o with respect to the given substitution
* @param o another functional term
* @param s initial substitution
* @return the homomorphism of this to o
*/
Substitution homomorphism(FunctionalTerm o, Substitution s);
/**
* Recursively enumerate all variable terms
* @return the set of variables included in this term
*/
Set getVariables();
/**
* Recursively enumerate all literal terms
* @return the set of literals included in this term
*/
Set> getLiterals();
}