Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Last revision Both sides next revision | ||
sav07_lecture_3_skeleton [2007/03/21 11:01] vkuncak |
sav07_lecture_3_skeleton [2007/03/21 14:27] vkuncak |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Lecture 3 (Skeleton) ====== | ====== Lecture 3 (Skeleton) ====== | ||
- | ===== Converting programs (with simple values) to formulas ===== | + | Summary of what we are doing: |
+ | {{vcg-big-picture.png}} | ||
+ | |||
+ | ===== Verification condition generation: converting programs into formulas ===== | ||
==== Context ==== | ==== Context ==== | ||
Line 25: | Line 28: | ||
R( c ) -> error=false | R( c ) -> error=false | ||
+ | |||
Line 38: | Line 42: | ||
R(havoc x) = frame(x) | R(havoc x) = frame(x) | ||
- | R(assume F) = F[x:=x_0, y:=y_0, error:=error_0] | + | R(assume F) = F[x:=x_0, y:=y_0, error:=error_0] & frame() |
R(assert F) = (F -> frame) | R(assert F) = (F -> frame) | ||
Line 157: | Line 161: | ||
- | ===== Proving quantifier-free linear arithmetic formulas ===== | + | |
+ | ===== One useful decision procedure: Proving quantifier-free linear arithmetic formulas ===== | ||
Suppose that we obtain (one or more) verification conditions of the form | Suppose that we obtain (one or more) verification conditions of the form | ||
Line 164: | Line 169: | ||
\end{equation*} | \end{equation*} | ||
- | whose validity we need to prove. We here assume that F contains only | + | whose validity we need to prove. We here assume that F contains only linear arithmetic. Note: we can check satisfiability of $F\ \land\ (\mbox{error}=\mbox{true})$. We show an algorithm to check this satisfiability. |
- | + | ||
- | Note: we can check satisfiability of $F\ \land\ (\mbox{error}=\mbox{true})$. | + | |
==== Quantifier Presburger arithmetic ==== | ==== Quantifier Presburger arithmetic ==== | ||
Line 176: | Line 179: | ||
T ::= var | T + T | K * T (terms) | T ::= var | T + T | K * T (terms) | ||
A ::= T=T | T <= T (atomic formulas) | A ::= T=T | T <= T (atomic formulas) | ||
- | F ::= F & F | F|F | ~F (formulas) | + | F ::= A | F & F | F|F | ~F (formulas) |
To get full Presburger arithmetic, allow existential and universal quantifiers in formula as well. | To get full Presburger arithmetic, allow existential and universal quantifiers in formula as well. | ||
Line 185: | Line 188: | ||
Proof: small model theorem. | Proof: small model theorem. | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
==== Small model theorem for Quantifier-Free Presburger Arithmetic (QFPA) ==== | ==== Small model theorem for Quantifier-Free Presburger Arithmetic (QFPA) ==== | ||
Line 213: | Line 209: | ||
* solution of Ax=b (A regular) has as components rationals of form p/q with bounded p,q | * solution of Ax=b (A regular) has as components rationals of form p/q with bounded p,q | ||
* duality of linear programming | * duality of linear programming | ||
- | * obtains bound $M = n(ma)^{2m+1}$, which needs $(2m+1)(\log n + \log m + \log a)$ bits | + | * obtains bound $M = n(ma)^{2m+1}$, which needs $\log n + (2m+1)\log(ma)$ bits |
* we could encode the problem into SAT: use circuits for addition, comparison etc. | * we could encode the problem into SAT: use circuits for addition, comparison etc. | ||
Line 241: | Line 237: | ||
* Presburger Arithmetic (PA) bounds: {{papadimitriou81complexityintegerprogramming.pdf}} | * Presburger Arithmetic (PA) bounds: {{papadimitriou81complexityintegerprogramming.pdf}} | ||
* Specializing PA bounds: http://www.lmcs-online.org/ojs/viewarticle.php?id=43&layout=abstract | * Specializing PA bounds: http://www.lmcs-online.org/ojs/viewarticle.php?id=43&layout=abstract | ||
- | |||
- | |||
- | |||
- |