Package net.hydromatic.morel.util
Class MartelliUnifier
- java.lang.Object
-
- net.hydromatic.morel.util.Unifier
-
- net.hydromatic.morel.util.MartelliUnifier
-
public class MartelliUnifier extends Unifier
Unification algorithm due to Martelli, Montanari (1976) and Paterson, Wegman (1978).
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class net.hydromatic.morel.util.Unifier
Unifier.Action, Unifier.Failure, Unifier.Result, Unifier.Sequence, Unifier.Substitution, Unifier.SubstitutionResult, Unifier.Term, Unifier.TermTerm, Unifier.TermVisitor<R>, Unifier.Tracer, Unifier.Variable
-
-
Constructor Summary
Constructors Constructor Description MartelliUnifier()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private voidact(Unifier.Variable variable, Unifier.Term term, List<Unifier.TermTerm> termPairs, Unifier.Substitution substitution, Map<Unifier.Variable,Unifier.Action> termActions, int depth)private intfindDelete(List<Unifier.TermTerm> termPairs)private intfindNonVarVar(List<Unifier.TermTerm> termPairs)private intfindSeqSeq(List<Unifier.TermTerm> termPairs)private intfindVarAny(List<Unifier.TermTerm> termPairs)private voidsubstituteList(List<Unifier.TermTerm> termPairs, Unifier.Tracer tracer, Map<Unifier.Variable,Unifier.Term> map)Applies a mapping to all term pairs in a list, modifying them in place.Unifier.Resultunify(List<Unifier.TermTerm> termPairs, Map<Unifier.Variable,Unifier.Action> termActions, Unifier.Tracer tracer)-
Methods inherited from class net.hydromatic.morel.util.Unifier
apply, apply, atom, failure, occurs, sequenceApply, substitution, variable, variable
-
-
-
-
Method Detail
-
unify
@Nonnull public Unifier.Result unify(List<Unifier.TermTerm> termPairs, Map<Unifier.Variable,Unifier.Action> termActions, Unifier.Tracer tracer)
-
substituteList
private void substituteList(List<Unifier.TermTerm> termPairs, Unifier.Tracer tracer, Map<Unifier.Variable,Unifier.Term> map)
Applies a mapping to all term pairs in a list, modifying them in place.
-
act
private void act(Unifier.Variable variable, Unifier.Term term, List<Unifier.TermTerm> termPairs, Unifier.Substitution substitution, Map<Unifier.Variable,Unifier.Action> termActions, int depth)
-
findDelete
private int findDelete(List<Unifier.TermTerm> termPairs)
-
findSeqSeq
private int findSeqSeq(List<Unifier.TermTerm> termPairs)
-
findNonVarVar
private int findNonVarVar(List<Unifier.TermTerm> termPairs)
-
findVarAny
private int findVarAny(List<Unifier.TermTerm> termPairs)
-
-