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

it.unibz.inf.ontop.substitution.UnifierBuilder Maven / Gradle / Ivy

package it.unibz.inf.ontop.substitution;

import com.google.common.collect.ImmutableList;
import it.unibz.inf.ontop.model.term.ImmutableTerm;

import java.util.Optional;
import java.util.function.Function;
import java.util.function.IntFunction;
import java.util.stream.IntStream;
import java.util.stream.Stream;

/**
 * Creates a unifier for args1 and args2
 *
 * The operation is as follows
 *
 * {x/y, m/y} composed with (y,z) is equal to {x/z, m/z, y/z}
 *
 */

public interface UnifierBuilder {

    UnifierBuilder unify(ImmutableList args1, ImmutableList args2);

    UnifierBuilder unify(IntStream indexes, IntFunction args1, IntFunction args2);

     UnifierBuilder unify(Stream stream, Function args1, Function args2);

    UnifierBuilder unify(T t1, T t2);

    Optional> build();
}