minimal symbolic model checker & fuzzer
Python
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.gitignore import from 551 repo May 20, 2015
README mention pygments May 27, 2015
bad.py remove mc_assert May 27, 2015
ffs_eqv.py remove mc_assert May 27, 2015
mc.py mc_fuzz: skip the first level traceback May 27, 2015
mc_util.py remove mc_assert May 27, 2015
mod_eqv.py remove mc_assert May 27, 2015
test_me.py remove mc_assert May 27, 2015

README

This directory contains a "minimal" implementation to demonstrate
the basic ideas of symbolic execution and concolic execution, using
Z3's Python interface.  You should read the KLEE and the SAGE papers
listed on the CSE 551 webiste.

* Install Z3/Python first: https://github.com/Z3Prover/z3

* (optional) Install Pygments: pip install Pygments

* Symbolic execution: run test_me.py.

* Check the implementation: sched_fork() in mc.py.

* Concolic execution: comment out the "test_me(x, y)" line,
  uncomment the next "mc_fuzz(...)" line, and run test_me.py.

* Check the implementation: mc_fuzz() and sched_flip() in mc.py.

* Try one more example: run bad.py.

* Run equivalence checking examples: ffs_eqv.py and mod_eqv.py.

Thanks to James Bornholt for the feedback.