imsos-monad-0.2.4.0: src/Control/Monad/IMSOS/Layered.hs
module Control.Monad.IMSOS.Layered
(
-- alternative definitions related to 'sort-polymorphic, layered terms'
Term(..), inject, project, unTerm, fixL
,Alg, HasAlg(..), cata, eval
,StepDefined(..), steps, stepsOrHalt, stepsOrHaltWhen, premise, premiseE, trans, notrans
,isValue, toValue, HasValOps(..), StepsAvailable, StepsTo, SharedSemEntities, IsValOp, ValOp, IsLangOp
,HasRulesErrors(..)
-- deriving
,smartConstructors
-- as in IMSOS.Fixed
-- from IMSOS.Monad
,MonadIMSOS(..), SemMonad, runIMSOS, yieldIMSOS
,Control.Monad.IMSOS.Monad.tell, Control.Monad.IMSOS.Monad.listen, Control.Monad.IMSOS.Monad.censor
,Control.Monad.IMSOS.Monad.local, Control.Monad.IMSOS.Monad.reader, Control.Monad.IMSOS.Monad.ask
,Control.Monad.IMSOS.Monad.get, Control.Monad.IMSOS.Monad.put, Control.Monad.IMSOS.Monad.modify
,fail, MonadError(..)
,guard, Alternative(..)
-- from IMSOS.Rules.Relations
,RelID(..), SemEntities(..), HasDefaults(..), runSem, Rel
, GivesSemanticsTo
-- from IMSOS.Signature
,Signature, HasSubSig(..)
--,IsSubSortWitness(..), Share, IsSubSort, HasSubSort, liftTerm, lowerTerm
-- from IMSOS.Rules.Step
,HasTaggedRel(..)
,TermL, Language(..), Lang, Sort
-- to simplify writing rules
-- from IMSOS.Rules.Trans
--,TransAvailable, TransDefined(..), (:~>:)(..), EvaluatesTo(..), EvalTag, Direct, Via
-- from ProjectionExt
,(:*:)(..), (:<~), (:<|), pr, uncons, recons
-- from Control.Monad.IMSOS.Algebras
,(:+:), (:<:), caseH
-- deriving hfunctors
,HFunctor, makeHFunctor, derive, K(..)
-- related to Show, Ord and Eq
,ShowHF(), makeShowHF
) where
import Control.Monad.IMSOS.Monad
import Control.Monad.IMSOS.LayeredAlgebras
import Control.Monad.IMSOS.LayeredTerms
import Control.Monad.IMSOS.LayeredDeriving (smartConstructors)
import Control.Monad.IMSOS.Rules.LayeredStep
import Control.Monad.IMSOS.Rules.Relations
import Control.Monad.Except
import Control.Applicative
import Control.Monad.IMSOS.Signatures
import Data.Comp.ProjectionExt
import Data.Comp.Multi hiding (Alg, cata, unTerm, project, inject, Term)
import Data.Comp.Multi.Derive hiding (smartConstructors)