tip-lib-0.2.2: tons of inductive problems - support library and tools

Safe HaskellNone
LanguageHaskell2010

Tip.Utils.Specialiser

Documentation

specialise :: forall d c a. (Ord d, Ord c, Ord a) => [(d, [Rule c a])] -> ([(d, Subst a Void c)], [d]) Source

safeRule :: Eq a => Rule c a -> Maybe (Rule c a) Source

data Rule c a Source

Constructors

Rule 

Fields

rule_pre :: [Expr c a]

The trigger(s).

rule_post :: Expr c a

The action. The variables here must be a subset of those in pre.

Instances

Functor (Rule c) Source 
Foldable (Rule c) Source 
Traversable (Rule c) Source 
(Eq c, Eq a) => Eq (Rule c a) Source 
(Ord c, Ord a) => Ord (Rule c a) Source 
(Show c, Show a) => Show (Rule c a) Source 
(Eq a, Pretty a, Pretty c) => Pretty (Rule c a) Source 

data Expr c a Source

Constructors

Var a 
Con c [Expr c a] 

Instances

Functor (Expr c) Source 
Foldable (Expr c) Source 
Traversable (Expr c) Source 
(Eq c, Eq a) => Eq (Expr c a) Source 
(Ord c, Ord a) => Ord (Expr c a) Source 
(Show c, Show a) => Show (Expr c a) Source 
(Pretty a, Pretty c) => Pretty (Expr c a) Source 

type Closed c = Expr c Void Source

subtermRules :: Rule c a -> [Rule c a] Source

subterms :: Expr c a -> [Expr c a] Source

type Subst a b c = [(a, Expr c b)] Source

type Inst a c = (Subst a Void c, Closed c) Source