| Copyright | (c) Galois Inc 2015 |
|---|---|
| License | BSD3 |
| Maintainer | Rob Dockins <rdockins@galois.com> |
| Stability | provisional |
| Safe Haskell | None |
| Language | Haskell2010 |
Lang.Crucible.Analysis.ForwardDataflow
Description
Deprecated: Lang.Crucible.Analysis.Fixpoint is a better implementation of these ideas
This module defines a generic framework for forward dataflow analysis, with some additional control-flow data on the side.
We calculate a fixpoint of a given analysis via the straightforward method of iterating the transfer function until no more updates occur.
Our current method for doing this is quite naive, and more efficient methods exist.
Documentation
symbolicResults :: forall ext (blocks :: Ctx (Ctx CrucibleType)) (init :: Ctx CrucibleType) (ret :: CrucibleType). IsSyntaxExtension ext => CFG ext blocks init ret -> String Source #
sym_reg_transfer :: forall (ctx :: Ctx CrucibleType) (tp :: CrucibleType). Reg ctx tp -> Assignment (Ignore SymDom :: CrucibleType -> Type) ctx -> SymDom Source #
sym_expr_transfer :: forall ext (ctx :: Ctx CrucibleType) (tp :: CrucibleType). IsSyntaxExtension ext => Expr ext ctx tp -> Assignment (Ignore SymDom :: CrucibleType -> Type) ctx -> SymDom Source #
sym_call_transfer :: forall (args :: Ctx CrucibleType) (ret :: CrucibleType) (ctx :: Ctx CrucibleType) (a :: CrucibleType -> Type). CtxRepr args -> TypeRepr ret -> Reg ctx (FunctionHandleType args ret) -> Ignore SymDom (FunctionHandleType args ret) -> Assignment a args -> Ignore SymDom ret Source #
symbolicAnalysis :: forall ext (blocks :: Ctx (Ctx CrucibleType)). IsSyntaxExtension ext => KildallForward ext blocks (Ignore SymDom :: CrucibleType -> Type) SymDom Source #
data KildallPair (a :: k -> Type) c (tp :: k) Source #
Constructors
| KP (a tp) c |
Instances
| (ShowF a, Show c) => ShowF (KildallPair a c :: k -> Type) Source # | |
Defined in Lang.Crucible.Analysis.ForwardDataflow Methods withShow :: forall p q (tp :: k) a0. p (KildallPair a c) -> q tp -> (Show (KildallPair a c tp) => a0) -> a0 # showF :: forall (tp :: k). KildallPair a c tp -> String # showsPrecF :: forall (tp :: k). Int -> KildallPair a c tp -> String -> String # | |
| (ShowF a, Show c) => Show (KildallPair a c tp) Source # | |
Defined in Lang.Crucible.Analysis.ForwardDataflow Methods showsPrec :: Int -> KildallPair a c tp -> ShowS # show :: KildallPair a c tp -> String # showList :: [KildallPair a c tp] -> ShowS # | |
newtype Ignore a (b :: k) Source #
Instances
| Show a => ShowF (Ignore a :: k -> Type) Source # | |
| Show a => Show (Ignore a tp) Source # | |
| Eq a => Eq (Ignore a b) Source # | |
| Ord a => Ord (Ignore a b) Source # | |
Defined in Lang.Crucible.Analysis.ForwardDataflow | |
data KildallForward ext (blocks :: Ctx (Ctx CrucibleType)) (a :: CrucibleType -> Type) c Source #
Constructors
| KildallForward | |
Fields
| |
kildall_transfer :: forall ext a c (blocks :: Ctx (Ctx CrucibleType)) (ret :: CrucibleType) (ctx :: Ctx CrucibleType). KildallForward ext blocks a c -> TypeRepr ret -> Block ext blocks ret ctx -> (Assignment a ctx, c) -> State (Assignment (KildallPair (Assignment a) c) blocks, a ret, c) (Set (Some (BlockID blocks))) Source #
kildall_forward :: forall ext a c (blocks :: Ctx (Ctx CrucibleType)) (ret :: CrucibleType) (init :: Ctx CrucibleType). KildallForward ext blocks a c -> CFG ext blocks init ret -> (Assignment a init, c) -> (Assignment (KildallPair (Assignment a) c) blocks, a ret, c) Source #