ContentsIndex
Engine.Unification.MM2
Portabilityportable
Stabilityexperimental
Maintaineregallego@babel.ls.fi.upm.es
Description
Martelli Montanary unification algorithm.
Synopsis
type Var = String
type MultiSet a = [a]
type MultiEq = (Set Var, Set STerm)
mgumm2 :: MultiSet STerm -> Maybe [MultiEq]
mgumm' :: [MultiEq] -> [MultiEq]
unifymm :: MultiSet STerm -> Maybe [MultiEq]
unifyloop :: [MultiEq] -> [MultiEq] -> Maybe [MultiEq]
substitute :: MultiEq -> [MultiEq] -> [MultiEq]
sub :: Substitution -> [(Set Var, Set STerm)] -> [(Set Var, Set STerm)]
selecteq :: [MultiEq] -> Maybe (MultiEq, [MultiEq])
toposelect :: [MultiEq] -> Maybe (MultiEq, [MultiEq])
getrhsvars :: MultiEq -> Set Var
vars_set :: Set STerm -> Set Var
set_concat :: Ord a => Set (Set a) -> Set a
notLHS :: Set Var -> MultiEq -> Bool
compacteq :: [MultiEq] -> [MultiEq]
mered :: MultiEq -> Maybe [MultiEq]
splitTerms :: Set STerm -> Maybe (STerm, [MultiEq])
check_common_head :: MultiSet STerm -> Maybe STerm
makemulteq :: MultiSet STerm -> [MultiEq]
type Substitution = String -> STerm
apply :: Substitution -> STerm -> STerm
subVar :: String -> STerm -> Substitution
Documentation
type Var = String
type MultiSet a = [a]
type MultiEq = (Set Var, Set STerm)
mgumm2 :: MultiSet STerm -> Maybe [MultiEq]
mgumm' :: [MultiEq] -> [MultiEq]
unifymm :: MultiSet STerm -> Maybe [MultiEq]
MM algorithm Keep in mind that this returns the triangular multiequation, not the MGU.
unifyloop :: [MultiEq] -> [MultiEq] -> Maybe [MultiEq]
substitute :: MultiEq -> [MultiEq] -> [MultiEq]
sub :: Substitution -> [(Set Var, Set STerm)] -> [(Set Var, Set STerm)]
selecteq :: [MultiEq] -> Maybe (MultiEq, [MultiEq])
toposelect :: [MultiEq] -> Maybe (MultiEq, [MultiEq])
getrhsvars :: MultiEq -> Set Var
vars_set :: Set STerm -> Set Var
set_concat :: Ord a => Set (Set a) -> Set a
notLHS :: Set Var -> MultiEq -> Bool
compacteq :: [MultiEq] -> [MultiEq]
mered :: MultiEq -> Maybe [MultiEq]
splitTerms :: Set STerm -> Maybe (STerm, [MultiEq])
Returns (Common part, Frontier) Fixme: It has a bug whem ms is empty.
check_common_head :: MultiSet STerm -> Maybe STerm
makemulteq :: MultiSet STerm -> [MultiEq]
type Substitution = String -> STerm
apply :: Substitution -> STerm -> STerm
subVar :: String -> STerm -> Substitution
Produced by Haddock version 0.8