dc.rights.license | CC-BY-NC-ND | |
dc.contributor.advisor | Prasetya, Wishnu | |
dc.contributor.author | Al-Awwadi, Hassan | |
dc.date.accessioned | 2025-08-15T00:02:40Z | |
dc.date.available | 2025-08-15T00:02:40Z | |
dc.date.issued | 2025 | |
dc.identifier.uri | https://studenttheses.uu.nl/handle/20.500.12932/49740 | |
dc.description.abstract | The Path explosion problem is a bane that haunts all symbolic execution engines. Too many programming constructs contribute to it, from the humble if statement to the noble fork statement. There are multiple methods to try and reduce it, heuristics for choosing paths, diagonalizing the search space of paths, pruning paths early, and the one we will be focusing on: State Merging.
In state merging the paths get fused back together at ‘join points’, but the merging of the states causes the final state to be bigger, to contain a disjunction within its premise, and as a result its not always a win. Often, its a loss, where the combined state is harder to solve for a SMT-solver than the separate states would’ve been. So again we are forced to use heuristics to decide whether we merge or not, or prune paths. Introducing State Merging without anything is not enough.
We extend state merging with abstraction, in the hope that this provides fruitful, but find that it does not. State merging in general performs quite a bit better than initially expected, however, even without the abstraction. | |
dc.description.sponsorship | Utrecht University | |
dc.language.iso | EN | |
dc.subject | Symbolic Execution is known to suffer from the 'path explosion' problem, where programs have explosively many paths to symbolically execute. We research state merging, where paths are rejoined at 'merge points', this is sometimes a performance boost and sometimes a performance malus and we try to figure out when its which. | |
dc.title | Symbolic Execution + Merging | |
dc.type.content | Master Thesis | |
dc.rights.accessrights | Open Access | |
dc.subject.keywords | Computer Science, Program Analysis, Program Verification, Static Verification, Symbolic Execution | |
dc.subject.courseuu | Computing Science | |
dc.thesis.id | 51662 | |