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

Safe HaskellNone
LanguageHaskell2010

Tip.Types

Description

The abstract syntax

Synopsis

Documentation

data Head a Source

Constructors

Gbl (Global a) 
Builtin Builtin 

Instances

Functor Head 
Foldable Head 
Traversable Head 
Eq a => Eq (Head a) 
Ord a => Ord (Head a) 
Show a => Show (Head a) 
PrettyVar a => Pretty (Head a) 
TransformBi (Head a) (Expr a) 
TransformBi (Head a) (Theory a) 

data Local a Source

Constructors

Local 

Fields

lcl_name :: a
 
lcl_type :: Type a
 

Instances

data Global a Source

Constructors

Global 

Fields

gbl_name :: a
 
gbl_type :: PolyType a
 
gbl_args :: [Type a]
 

data Expr a Source

Constructors

(Head a) :@: [Expr a] infix 5 
Lcl (Local a) 
Lam [Local a] (Expr a) 
Match (Expr a) [Case a]

The default case comes first if there is one

Let (Local a) (Expr a) (Expr a) 
Quant QuantInfo Quant [Local a] (Expr a) 

Instances

data Quant Source

Constructors

Forall 
Exists 

Instances

data QuantInfo Source

Constructors

NoInfo 

data Case a Source

Constructors

Case 

Fields

case_pat :: Pattern a
 
case_rhs :: Expr a
 

Instances

Functor Case 
Foldable Case 
Traversable Case 
Eq a => Eq (Case a) 
Ord a => Ord (Case a) 
Show a => Show (Case a) 

data Lit Source

Constructors

Int Integer 
Bool Bool 
String String 

Instances

data Pattern a Source

Patterns in branches

Constructors

Default 
ConPat 

Fields

pat_con :: Global a
 
pat_args :: [Local a]
 
LitPat Lit 

data PolyType a Source

Polymorphic types

Constructors

PolyType 

Fields

polytype_tvs :: [a]
 
polytype_args :: [Type a]
 
polytype_res :: Type a
 

data Type a Source

Types

Constructors

TyVar a 
TyCon a [Type a] 
[Type a] :=>: (Type a) 
BuiltinType BuiltinType 

Instances

data Signature a Source

Uninterpreted function

Constructors

Signature 

Fields

sig_name :: a
 
sig_type :: PolyType a
 

data Sort a Source

Uninterpreted sort

Constructors

Sort 

Fields

sort_name :: a
 
sort_arity :: Int
 

Instances

Functor Sort 
Foldable Sort 
Traversable Sort 
Eq a => Eq (Sort a) 
Ord a => Ord (Sort a) 
Show a => Show (Sort a) 

data Datatype a Source

Data definition

Constructors

Datatype 

Fields

data_name :: a
 
data_tvs :: [a]
 
data_cons :: [Constructor a]
 

data Formula a Source

Constructors

Formula 

Fields

fm_role :: Role
 
fm_tvs :: [a]

top-level quantified type variables

fm_body :: Expr a
 

Instances

data Role Source

Constructors

Assert 
Prove 

Instances

transformExpr :: (Expr a -> Expr a) -> Expr a -> Expr a Source

transformExprM :: Monad m => (Expr a -> m (Expr a)) -> Expr a -> m (Expr a) Source

transformExprIn :: TransformBi (Expr a) (f a) => (Expr a -> Expr a) -> f a -> f a Source

transformExprInM :: TransformBiM m (Expr a) (f a) => (Expr a -> m (Expr a)) -> f a -> m (f a) Source

transformType :: (Type a -> Type a) -> Type a -> Type a Source