Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell98 |
This module contains the types defining an SMTLIB2 interface.
Synopsis
- type Raw = Text
- data TheorySymbol = Thy {}
- data Sem
- data SmtSort
- sortSmtSort :: Bool -> SEnv DataDecl -> Sort -> SmtSort
- isIntSmtSort :: SEnv DataDecl -> Sort -> Bool
- data SymEnv = SymEnv {}
- symEnv :: SEnv Sort -> SEnv TheorySymbol -> [DataDecl] -> SEnv Sort -> [Sort] -> SymEnv
- symEnvSort :: Symbol -> SymEnv -> Maybe Sort
- symEnvTheory :: Symbol -> SymEnv -> Maybe TheorySymbol
- insertSymEnv :: Symbol -> Sort -> SymEnv -> SymEnv
- insertsSymEnv :: SymEnv -> [(Symbol, Sort)] -> SymEnv
- symbolAtName :: PPrint a => Symbol -> SymEnv -> a -> Sort -> Text
- symbolAtSmtName :: PPrint a => Symbol -> SymEnv -> a -> FuncSort -> Text
Serialized Representation
Theory Symbol
data TheorySymbol Source #
TheorySymbol
represents the information about each interpreted Symbol
Instances
Sem
describes the SMT semantics for a given symbol
Uninterp | for UDF: |
Ctor | for ADT constructor and tests: |
Test | for ADT tests : `is$cons` |
Field | for ADT field: |
Theory | for theory ops: mem, cup, select |
Instances
Data Sem Source # | |
Defined in Language.Fixpoint.Types.Theories 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 # 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 :: forall r r'. (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 # | |
Generic Sem Source # | |
Show Sem Source # | |
NFData Sem Source # | |
Defined in Language.Fixpoint.Types.Theories | |
Eq Sem Source # | |
Ord Sem Source # | |
PPrint Sem Source # | |
Defined in Language.Fixpoint.Types.Theories | |
Store Sem Source # | |
type Rep Sem Source # | |
Defined in Language.Fixpoint.Types.Theories type Rep Sem = D1 ('MetaData "Sem" "Language.Fixpoint.Types.Theories" "liquid-fixpoint-0.9.2.5-8VOJ4a5jXPy7nyhLFTxkOW" 'False) ((C1 ('MetaCons "Uninterp" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Ctor" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "Test" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "Field" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Theory" 'PrefixI 'False) (U1 :: Type -> Type)))) |
Theory Sorts
A Refinement of Sort
that describes SMTLIB Sorts
Instances
sortSmtSort :: Bool -> SEnv DataDecl -> Sort -> SmtSort Source #
The poly
parameter is True when we are *declaring* sorts,
and so we need to leave the top type variables be; it is False when
we are declaring variables etc., and there, we serialize them
using Int
(though really, there SHOULD BE NO floating tyVars...
'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
SymEnv | |
|
Instances
Data SymEnv Source # | |
Defined in Language.Fixpoint.Types.Theories 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 :: forall r r'. (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 # | |
Monoid SymEnv Source # | |
Semigroup SymEnv Source # | |
Generic SymEnv Source # | |
Show SymEnv Source # | |
NFData SymEnv Source # | |
Defined in Language.Fixpoint.Types.Theories | |
Eq SymEnv Source # | |
Store SymEnv Source # | |
type Rep SymEnv Source # | |
Defined in Language.Fixpoint.Types.Theories |
symEnvTheory :: Symbol -> SymEnv -> Maybe TheorySymbol Source #