All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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();

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy