crucible-0.7: Crucible is a library for language-agnostic symbolic simulation
Copyright(c) Galois Inc 2015
LicenseBSD3
MaintainerRob Dockins <rdockins@galois.com>
Stabilityprovisional
Safe HaskellSafe-Inferred
LanguageHaskell2010

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

data SymDom Source #

Constructors

Dead 
Symbolic 
Concrete 

Instances

Instances details
Show SymDom Source # 
Instance details

Defined in Lang.Crucible.Analysis.ForwardDataflow

Eq SymDom Source # 
Instance details

Defined in Lang.Crucible.Analysis.ForwardDataflow

Methods

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

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

Ord SymDom Source # 
Instance details

Defined in Lang.Crucible.Analysis.ForwardDataflow

symbolicResults :: IsSyntaxExtension ext => CFG ext blocks init ret -> String Source #

sym_call_transfer :: CtxRepr args -> TypeRepr ret -> Reg ctx (FunctionHandleType args ret) -> Ignore SymDom (FunctionHandleType args ret) -> Assignment a args -> Ignore SymDom ret Source #

data KildallPair (a :: k -> Type) (c :: Type) (tp :: k) Source #

Constructors

KP (a tp) c 

Instances

Instances details
(ShowF a, Show c) => ShowF (KildallPair a c :: k -> Type) Source # 
Instance details

Defined in Lang.Crucible.Analysis.ForwardDataflow

Methods

withShow :: forall p q (tp :: k0) a0. p (KildallPair a c) -> q tp -> (Show (KildallPair a c tp) => a0) -> a0 #

showF :: forall (tp :: k0). KildallPair a c tp -> String #

showsPrecF :: forall (tp :: k0). Int -> KildallPair a c tp -> String -> String #

(ShowF a, Show c) => Show (KildallPair a c tp) Source # 
Instance details

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 #

Constructors

Ignore 

Fields

Instances

Instances details
Show a => ShowF (Ignore a :: k -> Type) Source # 
Instance details

Defined in Lang.Crucible.Analysis.ForwardDataflow

Methods

withShow :: forall p q (tp :: k0) a0. p (Ignore a) -> q tp -> (Show (Ignore a tp) => a0) -> a0 #

showF :: forall (tp :: k0). Ignore a tp -> String #

showsPrecF :: forall (tp :: k0). Int -> Ignore a tp -> String -> String #

Show a => Show (Ignore a tp) Source # 
Instance details

Defined in Lang.Crucible.Analysis.ForwardDataflow

Methods

showsPrec :: Int -> Ignore a tp -> ShowS #

show :: Ignore a tp -> String #

showList :: [Ignore a tp] -> ShowS #

Eq a => Eq (Ignore a b) Source # 
Instance details

Defined in Lang.Crucible.Analysis.ForwardDataflow

Methods

(==) :: Ignore a b -> Ignore a b -> Bool #

(/=) :: Ignore a b -> Ignore a b -> Bool #

Ord a => Ord (Ignore a b) Source # 
Instance details

Defined in Lang.Crucible.Analysis.ForwardDataflow

Methods

compare :: Ignore a b -> Ignore a b -> Ordering #

(<) :: Ignore a b -> Ignore a b -> Bool #

(<=) :: Ignore a b -> Ignore a b -> Bool #

(>) :: Ignore a b -> Ignore a b -> Bool #

(>=) :: Ignore a b -> Ignore a b -> Bool #

max :: Ignore a b -> Ignore a b -> Ignore a b #

min :: Ignore a b -> Ignore a b -> Ignore a b #

data KildallForward ext blocks (a :: CrucibleType -> Type) c Source #

Constructors

KildallForward 

Fields

kildall_transfer :: forall ext a c blocks ret ctx. 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 ret init. KildallForward ext blocks a c -> CFG ext blocks init ret -> (Assignment a init, c) -> (Assignment (KildallPair (Assignment a) c) blocks, a ret, c) Source #