Now I am confused about symbolic execution (SE) and reachability analysis (RA). As I know, SE uses symbols to execute some code to reach each branch with branch conditions. And RA can be used to find the reachability of each branch, right? When RA is used, we may extract the branch condition for each branch. If so, what's the difference between them? Can they be swift? Are they all static analysis?
Thanks, Eve
Reachability analysis is mostly used to see if a model can reach a state or not. However, Symbolic Execution is a static analysis technique (sometimes also dynamic, like what KLEE does) to find all the paths in a program/source code.