monadiccp-0.6: Constraint Programming

Control.CP.Herbrand.HerbrandT

Description

This module provides a Herbrand solver as a monad transformer.

The constraints offered are Either (Unify t) (Constraint m) where m is the transformed solver. Hence, both unification and the underlying solver's constraints are available.

The terms offered are L t1 where t1 is the Herbrand solver's terms and R t2 where t2 are the underlying solver's types.

Documentation

newtype HerbrandT t s a Source

Constructors

HerbrandT 

Fields

unHT :: StateT (HState t (HerbrandT t s)) s a
 

Instances

MonadTrans (HerbrandT t) 
Monad s => Monad (HerbrandT t s) 
(Solver s, HTerm t) => Solver (HerbrandT t s) 
(HTerm t, Solver s, Term s st) => Term (HerbrandT t s) (R st) 
(HTerm t, Solver s) => Term (HerbrandT t s) (L t) 
Solver s => MonadState (HState t (HerbrandT t s)) (HerbrandT t s) 

data L a Source

Constructors

L a 

Instances

(HTerm t, Solver s) => Term (HerbrandT t s) (L t) 

data R a Source

Constructors

R a 

Instances

(HTerm t, Solver s, Term s st) => Term (HerbrandT t s) (R st)