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

Safe HaskellNone
LanguageHaskell2010

Tip.Types

Contents

Description

the abstract syntax

Synopsis

Documentation

data Expr a Source

Constructors

(Head a) :@: [Expr a] infix 5

Function application: always perfectly saturated. Lambdas and locals are applied with At as head.

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)

Let (Local x t) b e = (let ((l x)) b e) Unlike SMT-LIB, this does not accept a list of bound variable-/expression-pairs. Fix?

Quant QuantInfo Quant [Local a] (Expr a) 

data Case a Source

Constructors

Case 

Fields

case_pat :: Pattern a
 
case_rhs :: Expr a
 

data PolyType a Source

Polymorphic types

Constructors

PolyType 

Fields

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

data Sort a Source

Uninterpreted sort

Constructors

Sort 

Fields

sort_name :: a
 
sort_tvs :: [a]
 

data Constructor a Source

Constructors

Constructor 

Fields

con_name :: a

Constructor name (e.g. Cons)

con_discrim :: a

Discriminator name (e.g. is-Cons)

con_args :: [(a, Type a)]

Argument types names of their projectors (e.g. [(head,a),(tail,List a)])

data Formula a Source

Constructors

Formula 

Fields

fm_role :: Role
 
fm_info :: Info a
 
fm_tvs :: [a]

top-level quantified type variables

fm_body :: Expr a
 

data Role Source

Constructors

Assert 
Prove 

Other views of theories

data Decl a Source

The different kinds of declarations in a Theory.

theoryDecls :: Theory a -> [Decl a] Source

Declarations in a Theory

declsToTheory :: [Decl a] -> Theory a Source

Assemble a Theory from some Declarations

declsPass :: ([Decl a] -> [Decl b]) -> Theory a -> Theory b Source

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