Assignment 3 - SVF-tools/Teaching-Software-Verification GitHub Wiki
Assignment-3 folder layout
$tree Assignment-3
├── Assignment-3.cpp
├── Assignment-3.h
├── CMakeLists.txt
├── Test3.cpp
$tree python
├── Assignment-3
└── Assignment-3.py
Make sure to switch your program to assign-3 before coding. For python user, you can set "program": "${workspaceFolder}/python/Assignment-3/Assignment-3.py" in launch.json.
1. Assignment 3 task
-
Implement methods from
Z3Examples::test1()toZ3Examples::test10()in classZ3ExamplesinAssignment-3.cpp. Or for Python user, impelment methods fromZ3Mgr.test1()toZ3Mgr.test10()inAssignment-3.py -
Pass the test without any assertion by
Test3.cpp. For Python user, pass the tests in the__main__function. -
Submit
Assignment-3.cpporAssignment-3.pyto canvas. Your implementation will be evaluated against our 10 internal tests. You will get the full marks if your code can pass them all. We have providedZ3ExampleMgr::test0()inTest3.cpporAssignment-3.pyas an example to help get started.
*You will be working on Assignment-3.cpp only and there is NO need to modify other files under the Assignment-3 folder
SVF Z3Mgr APIs to help with your implementation SVF Z3Mgr API or SVF Z3Mgr Python API
2. visualize ICFG and Debugging
Visualize ICFG by following here
You can debug by printing all the values of all expressions using printExprValues() method in Z3ExampleMgr class.