| Copyright | (c) Galois Inc 2015-2016 |
|---|---|
| License | BSD3 |
| Maintainer | Ryan Scott <rscott@galois.com>, Langston Barrett <langston@galois.com> |
| Stability | provisional |
| Safe Haskell | None |
| Language | Haskell2010 |
Lang.Crucible.Backend.Simple
Contents
Description
An "offline" backend for communicating with SMT solvers. In contrast to Lang.Crucible.Backend.Online, this backend does not maintain a persistent connection to a solver. ----------------------------------------------------------------------
Synopsis
- data SimpleBackend t (st :: Type -> Type) fs
- newSimpleBackend :: forall t (st :: Type -> Type) fs. ExprBuilder t st fs -> IO (SimpleBackend t st fs)
- data FloatMode
- data FloatModeRepr (a :: FloatMode) where
- FloatIEEERepr :: FloatModeRepr 'FloatIEEE
- FloatUninterpretedRepr :: FloatModeRepr 'FloatUninterpreted
- FloatRealRepr :: FloatModeRepr 'FloatReal
- type FloatIEEE = 'FloatIEEE
- type FloatUninterpreted = 'FloatUninterpreted
- type FloatReal = 'FloatReal
- data Flags (fi :: FloatMode)
SimpleBackend
data SimpleBackend t (st :: Type -> Type) fs Source #
Instances
newSimpleBackend :: forall t (st :: Type -> Type) fs. ExprBuilder t st fs -> IO (SimpleBackend t st fs) Source #
Re-exports
Mode flag for how floating-point values should be interpreted.
Instances
| TestEquality FloatModeRepr | |
Defined in What4.FloatMode Methods testEquality :: forall (a :: FloatMode) (b :: FloatMode). FloatModeRepr a -> FloatModeRepr b -> Maybe (a :~: b) # | |
| ShowF FloatModeRepr | |
Defined in What4.FloatMode Methods withShow :: forall p q (tp :: FloatMode) a. p FloatModeRepr -> q tp -> (Show (FloatModeRepr tp) => a) -> a # showF :: forall (tp :: FloatMode). FloatModeRepr tp -> String # showsPrecF :: forall (tp :: FloatMode). Int -> FloatModeRepr tp -> String -> String # | |
| KnownRepr FloatModeRepr FloatIEEE | |
Defined in What4.FloatMode Methods | |
| KnownRepr FloatModeRepr FloatReal | |
Defined in What4.FloatMode Methods | |
| KnownRepr FloatModeRepr FloatUninterpreted | |
Defined in What4.FloatMode Methods | |
data FloatModeRepr (a :: FloatMode) where #
Constructors
| FloatIEEERepr :: FloatModeRepr 'FloatIEEE | |
| FloatUninterpretedRepr :: FloatModeRepr 'FloatUninterpreted | |
| FloatRealRepr :: FloatModeRepr 'FloatReal |
Instances
| TestEquality FloatModeRepr | |
Defined in What4.FloatMode Methods testEquality :: forall (a :: FloatMode) (b :: FloatMode). FloatModeRepr a -> FloatModeRepr b -> Maybe (a :~: b) # | |
| ShowF FloatModeRepr | |
Defined in What4.FloatMode Methods withShow :: forall p q (tp :: FloatMode) a. p FloatModeRepr -> q tp -> (Show (FloatModeRepr tp) => a) -> a # showF :: forall (tp :: FloatMode). FloatModeRepr tp -> String # showsPrecF :: forall (tp :: FloatMode). Int -> FloatModeRepr tp -> String -> String # | |
| KnownRepr FloatModeRepr FloatIEEE | |
Defined in What4.FloatMode Methods | |
| KnownRepr FloatModeRepr FloatReal | |
Defined in What4.FloatMode Methods | |
| KnownRepr FloatModeRepr FloatUninterpreted | |
Defined in What4.FloatMode Methods | |
| Show (FloatModeRepr fm) | |
Defined in What4.FloatMode Methods showsPrec :: Int -> FloatModeRepr fm -> ShowS # show :: FloatModeRepr fm -> String # showList :: [FloatModeRepr fm] -> ShowS # | |
In this mode "interpreted" floating-point values are treated as bit-precise IEEE-754 floats.
type FloatUninterpreted = 'FloatUninterpreted #
In this mode "interpreted" floating-point values are treated as bitvectors of the appropriate width, and all operations on them are translated as uninterpreted functions.
In this mode "interpreted" floating-point values are treated as real-number values, to the extent possible. Expressions that would result in infinities or NaN will yield unspecified values in this mode, or directly produce runtime errors.
data Flags (fi :: FloatMode) #