imsos-monad-0.2.4.0: src/Control/Monad/IMSOS/Fixed.hs
module Control.Monad.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(..), HasRulesErrors(..), SemEntities(..), HasDefaults(..), runSem, Rel
, GivesSemanticsTo, SharedSemEntities
-- from IMSOS.Signature
,Signature, HasSubSig(..)
--,IsSubSortWitness(..), Share, IsSubSort, HasSubSort, liftTerm, lowerTerm
-- from IMSOS.Rules.Step
,HasTaggedRel(..)
,isValue, toValue, HasValOps(..), IsLangOp, IsValOp, ValOp, TermL, Language(..), Lang, Sort
,StepDefined(..), StepRes(..), steps, stepsOrHalt, stepsOrHaltWhen, StepAvailable, StepsAvailable, StepsTo
-- to simplify writing rules
,premise, premiseE, trans, notrans
-- from IMSOS.Rules.Trans
--,TransAvailable, TransDefined(..), (:~>:)(..), EvaluatesTo(..), EvalTag, Direct, Via
-- from ProjectionExt
,(:*:)(..), (:<~), (:<|), pr, uncons, recons
-- from Control.Monad.IMSOS.Algebras
,HasAlg(..), GetCarrier(..), HasCarrier(..), eval
,Term, inject, project, unTerm
,(:+:), (:<:), caseH
-- deriving hfunctors
,HFunctor, makeHFunctor, smartConstructors, derive, K(..)
-- related to Show, Ord and Eq
,ShowHF(), makeShowHF
) where
import Control.Monad.IMSOS.Signatures
import Control.Monad.IMSOS.Monad
import Control.Monad.IMSOS.Rules.Relations
import Control.Monad.IMSOS.Algebras
import Control.Monad.IMSOS.Rules.Step
import Control.Monad.Error.Class (MonadError(..))
import Control.Applicative (Alternative(..))
import Data.Comp.ProjectionExt
import Data.Comp.Multi.Ops ((:+:), (:<:), caseH)
import Data.Comp.Multi.Derive (makeHFunctor, HFunctor, smartConstructors, derive, makeShowHF, ShowHF)
import Data.Comp.Multi.Sum (inject)
import Data.Comp.Multi ( project, unTerm )
import Data.Comp.Multi.Term ( Term )
import Data.Comp.Multi.HFunctor (K(..))