SSTG-0.1.0.5: STG Symbolic Execution

Safe HaskellSafe
LanguageHaskell2010

SSTG.Core.Execution.Models

Description

Symbolic STG Execution Models

Synopsis

Documentation

newtype SymbolicT s a Source #

Symbolic Transformation We supply some state(s), it gives back those state(s) and some result.

Constructors

SymbolicT 

Fields

  • run :: s -> (s, a)
     

Instances

Monad (SymbolicT s) Source #

Monad instance of Symbolic Transformation Used for transitioning between different types of state manipulations.

Methods

(>>=) :: SymbolicT s a -> (a -> SymbolicT s b) -> SymbolicT s b #

(>>) :: SymbolicT s a -> SymbolicT s b -> SymbolicT s b #

return :: a -> SymbolicT s a #

fail :: String -> SymbolicT s a #

Functor (SymbolicT s) Source #

Functor instance of Symbolic Transformation Apply transformations on the result.

Methods

fmap :: (a -> b) -> SymbolicT s a -> SymbolicT s b #

(<$) :: a -> SymbolicT s b -> SymbolicT s a #

Applicative (SymbolicT s) Source #

Applicative instance of Symbolic Transformation Can be used to chain together step-wise execution.

Methods

pure :: a -> SymbolicT s a #

(<*>) :: SymbolicT s (a -> b) -> SymbolicT s a -> SymbolicT s b #

(*>) :: SymbolicT s a -> SymbolicT s b -> SymbolicT s b #

(<*) :: SymbolicT s a -> SymbolicT s b -> SymbolicT s a #

newtype Stack Source #

Stack

Constructors

Stack [Frame] 

data Code Source #

Evaluation State

type PathCons = [PathCond] Source #

Path Constraints

nameOccStr :: Name -> String Source #

Name Occ String

nameUnique :: Name -> Int Source #

Name Unique

varName :: Var -> Name Source #

Var Name

memAddrInt :: MemAddr -> Int Source #

Mem Addr Int

lookupLocals :: Var -> Locals -> Maybe Value Source #

Lookup Locals

insertLocals :: Var -> Value -> Locals -> Locals Source #

Insert Locals

insertLocalsList :: [(Var, Value)] -> Locals -> Locals Source #

Insert Locals List

allocHeap :: HeapObj -> Heap -> (Heap, MemAddr) Source #

Allocate Heap

allocHeapList :: [HeapObj] -> Heap -> (Heap, [MemAddr]) Source #

Allocate Heap List

insertHeap :: MemAddr -> HeapObj -> Heap -> Heap Source #

Insert Heap

insertHeapList :: [(MemAddr, HeapObj)] -> Heap -> Heap Source #

Insert Heap List

lookupGlobals :: Var -> Globals -> Maybe Value Source #

Lookup Globals

insertGlobals :: Var -> Value -> Globals -> Globals Source #

Insert Globals

insertGlobalsList :: [(Var, Value)] -> Globals -> Globals Source #

Insert Globals List

lookupValue :: Var -> Locals -> Globals -> Maybe Value Source #

Lookup Value

vlookupHeap :: Var -> Locals -> Globals -> Heap -> Maybe (MemAddr, HeapObj) Source #

Lookup Heap by Variable

memAddrType :: MemAddr -> Heap -> Maybe Type Source #

MemAddr Type