liquid-fixpoint-0.7.0.2: Predicate Abstraction-based Horn-Clause/Implication Constraint Solver

Safe HaskellNone
LanguageHaskell98

Language.Fixpoint.Types.Theories

Contents

Description

This module contains the types defining an SMTLIB2 interface.

Synopsis

Serialized Representation

type Raw = Text Source #

Raw is the low-level representation for SMT values

Theory Symbol

data TheorySymbol Source #

TheorySymbol represents the information about each interpreted Symbol

Constructors

Thy 

Fields

Instances

Eq TheorySymbol Source # 
Data TheorySymbol Source # 

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> TheorySymbol -> c TheorySymbol #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c TheorySymbol #

toConstr :: TheorySymbol -> Constr #

dataTypeOf :: TheorySymbol -> DataType #

dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c TheorySymbol) #

dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c TheorySymbol) #

gmapT :: (forall b. Data b => b -> b) -> TheorySymbol -> TheorySymbol #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> TheorySymbol -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> TheorySymbol -> r #

gmapQ :: (forall d. Data d => d -> u) -> TheorySymbol -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> TheorySymbol -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> TheorySymbol -> m TheorySymbol #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> TheorySymbol -> m TheorySymbol #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> TheorySymbol -> m TheorySymbol #

Ord TheorySymbol Source # 
Show TheorySymbol Source # 
Generic TheorySymbol Source # 

Associated Types

type Rep TheorySymbol :: * -> * #

Binary TheorySymbol Source # 
NFData TheorySymbol Source # 

Methods

rnf :: TheorySymbol -> () #

PPrint TheorySymbol Source # 
Fixpoint TheorySymbol Source # 
type Rep TheorySymbol Source # 
type Rep TheorySymbol = D1 (MetaData "TheorySymbol" "Language.Fixpoint.Types.Theories" "liquid-fixpoint-0.7.0.2-3repHVQ2bkqGganvJ6cFNP" False) (C1 (MetaCons "Thy" PrefixI True) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "tsSym") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Symbol)) (S1 (MetaSel (Just Symbol "tsRaw") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Raw))) ((:*:) (S1 (MetaSel (Just Symbol "tsSort") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Sort)) (S1 (MetaSel (Just Symbol "tsInterp") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Sem)))))

data Sem Source #

Sem describes the SMT semantics for a given symbol

Constructors

Uninterp

for UDF: len, height, append

Data

for ADT ctors & accessor: cons, nil, head

Theory

for theory ops: mem, cup, select

Instances

Eq Sem Source # 

Methods

(==) :: Sem -> Sem -> Bool #

(/=) :: Sem -> Sem -> Bool #

Data Sem Source # 

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Sem -> c Sem #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Sem #

toConstr :: Sem -> Constr #

dataTypeOf :: Sem -> DataType #

dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c Sem) #

dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Sem) #

gmapT :: (forall b. Data b => b -> b) -> Sem -> Sem #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Sem -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Sem -> r #

gmapQ :: (forall d. Data d => d -> u) -> Sem -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Sem -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Sem -> m Sem #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Sem -> m Sem #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Sem -> m Sem #

Ord Sem Source # 

Methods

compare :: Sem -> Sem -> Ordering #

(<) :: Sem -> Sem -> Bool #

(<=) :: Sem -> Sem -> Bool #

(>) :: Sem -> Sem -> Bool #

(>=) :: Sem -> Sem -> Bool #

max :: Sem -> Sem -> Sem #

min :: Sem -> Sem -> Sem #

Show Sem Source # 

Methods

showsPrec :: Int -> Sem -> ShowS #

show :: Sem -> String #

showList :: [Sem] -> ShowS #

Generic Sem Source # 

Associated Types

type Rep Sem :: * -> * #

Methods

from :: Sem -> Rep Sem x #

to :: Rep Sem x -> Sem #

Binary Sem Source # 

Methods

put :: Sem -> Put #

get :: Get Sem #

putList :: [Sem] -> Put #

NFData Sem Source # 

Methods

rnf :: Sem -> () #

PPrint Sem Source # 

Methods

pprintTidy :: Tidy -> Sem -> Doc Source #

pprintPrec :: Int -> Tidy -> Sem -> Doc Source #

type Rep Sem Source # 
type Rep Sem = D1 (MetaData "Sem" "Language.Fixpoint.Types.Theories" "liquid-fixpoint-0.7.0.2-3repHVQ2bkqGganvJ6cFNP" False) ((:+:) (C1 (MetaCons "Uninterp" PrefixI False) U1) ((:+:) (C1 (MetaCons "Data" PrefixI False) U1) (C1 (MetaCons "Theory" PrefixI False) U1)))

Theory Sorts

data SmtSort Source #

A Refinement of Sort that describes SMTLIB Sorts

Instances

Eq SmtSort Source # 

Methods

(==) :: SmtSort -> SmtSort -> Bool #

(/=) :: SmtSort -> SmtSort -> Bool #

Data SmtSort Source # 

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> SmtSort -> c SmtSort #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c SmtSort #

toConstr :: SmtSort -> Constr #

dataTypeOf :: SmtSort -> DataType #

dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c SmtSort) #

dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c SmtSort) #

gmapT :: (forall b. Data b => b -> b) -> SmtSort -> SmtSort #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> SmtSort -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> SmtSort -> r #

gmapQ :: (forall d. Data d => d -> u) -> SmtSort -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> SmtSort -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> SmtSort -> m SmtSort #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> SmtSort -> m SmtSort #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> SmtSort -> m SmtSort #

Ord SmtSort Source # 
Show SmtSort Source # 
Generic SmtSort Source # 

Associated Types

type Rep SmtSort :: * -> * #

Methods

from :: SmtSort -> Rep SmtSort x #

to :: Rep SmtSort x -> SmtSort #

Binary SmtSort Source # 

Methods

put :: SmtSort -> Put #

get :: Get SmtSort #

putList :: [SmtSort] -> Put #

NFData SmtSort Source # 

Methods

rnf :: SmtSort -> () #

Hashable SmtSort Source # 

Methods

hashWithSalt :: Int -> SmtSort -> Int #

hash :: SmtSort -> Int #

PPrint SmtSort Source # 
type Rep SmtSort Source # 

sortSmtSort :: Bool -> SEnv a -> Sort -> SmtSort Source #

'smtSort True msg t' serializes a sort t using type variables, 'smtSort False msg t' serializes a sort t using Int instead of tyvars.

Symbol Environments

data SymEnv Source #

SymEnv is used to resolve the Sort and Sem of each Symbol

Constructors

SymEnv 

Fields

Instances

Eq SymEnv Source # 

Methods

(==) :: SymEnv -> SymEnv -> Bool #

(/=) :: SymEnv -> SymEnv -> Bool #

Data SymEnv Source # 

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> SymEnv -> c SymEnv #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c SymEnv #

toConstr :: SymEnv -> Constr #

dataTypeOf :: SymEnv -> DataType #

dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c SymEnv) #

dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c SymEnv) #

gmapT :: (forall b. Data b => b -> b) -> SymEnv -> SymEnv #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> SymEnv -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> SymEnv -> r #

gmapQ :: (forall d. Data d => d -> u) -> SymEnv -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> SymEnv -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> SymEnv -> m SymEnv #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> SymEnv -> m SymEnv #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> SymEnv -> m SymEnv #

Show SymEnv Source # 
Generic SymEnv Source # 

Associated Types

type Rep SymEnv :: * -> * #

Methods

from :: SymEnv -> Rep SymEnv x #

to :: Rep SymEnv x -> SymEnv #

Monoid SymEnv Source # 
Binary SymEnv Source # 

Methods

put :: SymEnv -> Put #

get :: Get SymEnv #

putList :: [SymEnv] -> Put #

NFData SymEnv Source # 

Methods

rnf :: SymEnv -> () #

type Rep SymEnv Source # 
type Rep SymEnv

symbolAtSmtName :: PPrint a => Symbol -> SymEnv -> a -> FuncSort -> Symbol Source #