hermit-0.6.0.0: Haskell Equational Reasoning Model-to-Implementation Tunnel

Safe HaskellNone
LanguageHaskell2010

HERMIT.Dictionary.Rules

Contents

Synopsis

GHC Rewrite Rules and Specialisation

externals :: [External] Source

Externals dealing with GHC rewrite rules.

Rules

ruleR :: (AddBindings c, ExtendPath c Crumb, HasCoreRules c, HasEmptyContext c, ReadBindings c, ReadPath c Crumb, HasDynFlags m, HasHermitMEnv m, HasLemmas m, LiftCoreM m, MonadCatch m, MonadIO m, MonadThings m, MonadUnique m) => RuleName -> Rewrite c m CoreExpr Source

Lookup a rule by name, attempt to apply it. If successful, record it as an unproven lemma.

ruleToEqualityT :: (BoundVars c, HasDynFlags m, HasHermitMEnv m, MonadThings m, MonadCatch m) => Transform c m CoreRule Equality Source

Transform GHC's CoreRule into an Equality.

ruleNameToEqualityT :: (BoundVars c, HasCoreRules c, HasDynFlags m, HasHermitMEnv m, LiftCoreM m, MonadCatch m, MonadIO m, MonadThings m) => RuleName -> Transform c m a Equality Source

Build an Equality from a named GHC rewrite rule.

getHermitRuleT :: (HasCoreRules c, HasHermitMEnv m, LiftCoreM m, MonadIO m) => RuleName -> Transform c m a CoreRule Source

Get a GHC CoreRule by name.

getHermitRulesT :: (HasCoreRules c, HasHermitMEnv m, LiftCoreM m, MonadIO m) => Transform c m a [(RuleName, CoreRule)] Source

Return all in-scope CoreRules (including specialization RULES on binders), with their names.

Specialisation

specConstrR :: RewriteH ModGuts Source

Run GHC's specConstr pass, and apply any rules generated.

specialiseR :: RewriteH ModGuts Source

Run GHC's specialisation pass, and apply any rules generated.