You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Symex: always generate an assumption when truncating a path
Whenever we truncate a particular execution path, whether due to --unwind or --depth settings,
we should generate an assumption so that it is not necessary to record the rejected path in the
state guard.
For example, before if we exceeded the depth limit then we would set the guard to false, and rely
on carrying this missing path forwards to any future assume or assert statement. By emitting an
assume we explicitly make a constraint ruling this path out, meaning that downstream guards no
longer need to carry that information (for example, where before we might have had guard `x` and
VCCs `!x => y` and `!x => z`, we can now emit a constraint `!x`, restore the guard to `true` and
produce VCCs `y` and `z`).
Note this commit does not actually change when the guard is set false and when it is not, as this
will have additional performance consequences and should be benchmarked independently.
0 commit comments