This module provides a Herbrand solver.
The type of terms is parameterized by the HTerm type class.
- class Ord (VarId t) => HTerm t where
- data Herbrand t a = Herbrand {}
- type Heap t m = Map (VarId t) (Binding t m)
- data Binding t m
- data HState t m = HState {
- var_supply :: VarSupply t
- heap :: Heap t m
- updateState :: (HTerm t, MonadState (HState t m) m) => (HState t m -> HState t m) -> m ()
- initState :: HTerm t => HState t m
- newvarH :: (HTerm t, MonadState (HState t m) m) => m t
- data Unify t = t Unify t
- addH :: (HTerm t, MonadState (HState t m) m) => Unify t -> m Bool
- unify :: (HTerm t, MonadState (HState t m) m) => t -> t -> m Bool
- failure :: Monad m => m Bool
- success :: Monad m => m Bool
- bindt :: (HTerm t, MonadState (HState t m) m) => VarId t -> t -> m Bool
- bindv :: (HTerm t, MonadState (HState t m) m) => VarId t -> VarId t -> m Bool
- registerAction :: (HTerm t, MonadState (HState t m) m) => t -> m Bool -> m ()
- shallow_normalize :: (HTerm t, MonadState (HState t m) m) => t -> m t
- normalize :: (HTerm t, MonadState (HState t m) m) => t -> m t
Documentation
class Ord (VarId t) => HTerm t whereSource
Herbrand terms
Herbrand monad
HState | |
|
MonadState (HState t (Herbrand t)) (Herbrand t) | |
Solver s => MonadState (HState t (HerbrandT t s)) (HerbrandT t s) |
updateState :: (HTerm t, MonadState (HState t m) m) => (HState t m -> HState t m) -> m ()Source
newvarH :: (HTerm t, MonadState (HState t m) m) => m tSource
bindt :: (HTerm t, MonadState (HState t m) m) => VarId t -> t -> m BoolSource
bind a variable to a term
bindv :: (HTerm t, MonadState (HState t m) m) => VarId t -> VarId t -> m BoolSource
alias one variable to another
registerAction :: (HTerm t, MonadState (HState t m) m) => t -> m Bool -> m ()Source
shallow_normalize :: (HTerm t, MonadState (HState t m) m) => t -> m tSource
normalize :: (HTerm t, MonadState (HState t m) m) => t -> m tSource