Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision | Next revision Both sides next revision | ||
sav07_lecture_3_skeleton [2007/03/21 10:53] vkuncak |
sav07_lecture_3_skeleton [2007/03/21 10:56] vkuncak |
||
---|---|---|---|
Line 102: | Line 102: | ||
This idea is important in static analysis. | This idea is important in static analysis. | ||
+ | |||
Line 112: | Line 113: | ||
Symbolic execution converts programs into formulas by going forward. It is therefore somewhat analogous to the way an [[interpreter]] for the language would work. | Symbolic execution converts programs into formulas by going forward. It is therefore somewhat analogous to the way an [[interpreter]] for the language would work. | ||
+ | Avoid renaming all the time. | ||
+ | |||
+ | SE(F,k, c1; c2) = SE(F & R(c1), k+1, c2) (update formula) | ||
+ | |||
+ | SE(F,k,(c1 [] c2); c2) = SE(F, k, c1) | SE(F,k,c2) (explore both branches) | ||
+ | |||
+ | Note: how many branches do we get? | ||
Strongest postcondition: | Strongest postcondition: |