-
Notifications
You must be signed in to change notification settings - Fork 0
Home
This project is an experimental implementation of a generic library to construct control-flow analyses for abstract collecting semantics on top of different abstract machines.
The constructed analyses can feature Abstract Garbage Collection, counting, shared or per-state store, different variants of context-sensitivity depending on a used underlying monad and particular implementation of analysis-specific type-classes.
We assume Glasgow Haskell Compiler (GHC) version 7.2 or newer is installed in the system.
The following commands should be executed from the project root.
ex
is usually an implicitly imported simple program to test the analyses in the appropriate calculus, unless it is said otherwise.
The actual code is self-explanatory and can be found in the appropriate example files and companion utility modules.
ghci CFA/CPS/Examples/Concrete.hs
concreteResult ex
ghci CFA/CPS/Examples/AbstractNonShared.hs
nonSharedResultC ex
ghci CFA/CPS/Examples/AbstractNonSharedCount.hs
abstractResultC ex
ghci CFA/CPS/Examples/AbstractShared.hs
abstractResultSSC ex
ghci CFA/CPS/Examples/AbstractSharedCount.hs
abstractResultSSC ex
ghci CFA/CESK/Examples/Concrete.hs
concreteResult ex
ghci CFA/CESK/Examples/AbstractNonShared.hs
abstractResult ex
ghci CFA/AFJ/Examples/AbstractNonShared.hs
abstractResult ctable mainVars mainStmts
To build the library, make sure that the Glasgow Haskell Compiler is installed in your system.
To build the whole project, execute from the project root:
make all
To remove generated binaries:
make clean
Last time this code was tested, the examples above worked fine only if the code hasn't been built before via make
(otherwise some symbols are reported missing at the runtime).
If you intend to run the examples in the interactive mode, make sure you have run make clean
before. We hope to fix this minor issue soon.
The sources are released under CRAPL license.
If you have questions or concerns about the CRAPL, or you need more information about this license, please contact Prof. Matthew Might.