Presentation is loading. Please wait.

Presentation is loading. Please wait.

SAT for Software Model Checking Introduction to SAT-problem for newbie

Similar presentations


Presentation on theme: "SAT for Software Model Checking Introduction to SAT-problem for newbie"— Presentation transcript:

1 SAT for Software Model Checking Introduction to SAT-problem for newbie
Choi,

2 Introductionto SAT-problem for newbie Choi, Chang-Beom@pswlab
Content Motivation Model Checking as a SAT problem SAT & SAT-solver? Discussion Introductionto SAT-problem for newbie Choi,

3 Introductionto SAT-problem for newbie Choi, Chang-Beom@pswlab
Motivation Model Checking Requirements Target Program Requirement Properties (F W) Model Checker System Model Okay Satisfied Not satisfied Counter example Introductionto SAT-problem for newbie Choi,

4 Motivation - Model Checking
Detail of Explicit State Model Checking Process Requirement Properties Target Program (F W) Introductionto SAT-problem for newbie Choi,

5 Motivation – State Explosion
The Limitation of Model Checking 4 processes 2 processes 3 processes 제 5 세부과제 : 김문주 5 /38 Introductionto SAT-problem for newbie Choi,

6 Countermeasure of State Explosion
Motivation Countermeasure of State Explosion Clarke / Emerson: CTL Model Checking Sifakis / Quielle 1982 EMC: Explicit Model Checker Clarke, Emerson, Sistla 1990 Symbolic Model Checking Burch, Clarke, Dill, McMillan SMV: Symbolic Model Verifier McMillan Bounded Model Checking using SAT Biere, Clarke, Zhu 2000 Counterexample-guided Abstraction Refinement Clarke, Grumberg, Jha, Lu, Veith 105 10100 CBMC 101000 MAGIC Introductionto SAT-problem for newbie Choi,

7 Model Checking as a SAT Problem
Motivation Model Checking as a SAT Problem Requirements Target Program Requirement Properties (F W) Model Checker System Model Okay Satisfied Not satisfied Counter example SAT-solver + Introductionto SAT-problem for newbie Choi,

8 Model Checking as a SAT Problem
Motivation Model Checking as a SAT Problem What we are going to do Program Code Requirements Target Program Requirement Properties (F W) Model Checker System Model Okay Satisfied Not satisfied Counter example SAT-solver + Software Model Checking Introductionto SAT-problem for newbie Choi,

9 Model Checking as a SAT problem
SAT = Satisfiability = Propositional Satisfiability NP-Complete problem We can get the answer sometimes SAT Propositional Formula SAT problem UNSAT Introductionto SAT-problem for newbie Choi,

10 Model Checking as a SAT problem
SAT Formula A set of propositional variables and clauses involving variables (x1 ∨ x2’ ∨ x3)  (x2 ∨ x1’ ∨ x4) x1, x2, x3 and x4 are variables (true or false) Literals: Variable and its negation x1 and x1’ A clause is satisfied if one of the literals is true x1=true satisfies clause 1 x1=false satisfies clause 2 Solution: An assignment that satisfies all clauses Introductionto SAT-problem for newbie Choi,

11 Model Checking as a SAT problem
SAT-Solvers? Started with DPLL (1962) Able to solve variable problems Satz (Chu Min Li, 1995) Able to solve some 1000 variable problems Chaff (Malik et al., 2001) Intelligently hacked DPLL , Won the 2004 competition Able to solve some variable problems Current state-of-the-art Minisat and SATELITEGTI (Chalmer’s university, ) Jerusat and Haifasat (Intel Haifa, 2002) Ace (UCLA, ) Introductionto SAT-problem for newbie Choi,

12 Model Checking as a SAT problem
DPLL(Davis-Putnam-Logemann-Loveland) Framework while (1) { if (decide_next_branch()) { //1. Branching while (deduce()==conflict) { //2. Deducing blevel=analyze_conflicts() // 3. Learning if (blevel < 0) return UNSAT else backtrack(blevel) // 4. Backtracking } else RETURN UNSAT; Introductionto SAT-problem for newbie Choi,

13 Model Checking as a SAT problem
DPLL Example {p ∨ r} ∧{p ∨ q ∨ r} ∧{p ∨ r} decide_next_branch() p=T p=F {T∨r} ∧{T ∨ q ∨ r} ∧{T ∨ r} deduce() {F ∨ r} ∧{F ∨ q ∨ r} ∧{F ∨ r} analyze_conflicts() SIMPLIFY SIMPLIFY {q,r} {r} ∧{r} SIMPLIFY {} Introductionto SAT-problem for newbie Choi,

14 Model Checking as a SAT problem
Simple Translation From Code to SAT Formula CBMC (C Bounded Model Checker, In CMU) Handles function calls using inlining Unwinds the loops a fixed number of times Allows user input to be modeled using non-determinism So that a program can be checked for a set of inputs rather than a single input Allows specification of assertions which are checked using the bounded model checking Introductionto SAT-problem for newbie Choi,

15 MC as a SAT problem - Simple Translation From Code to SAT Formula
Unwinding Loop Original code Unwinding the loop 3 times x=0; while (x < 2) { y=y+x; x++; } x=0; if (x < 2) { y=y+x; x++; } assert (! (x < 2)) Unwinding assertion: Introductionto SAT-problem for newbie Choi,

16 MC as a SAT problem - Simple Translation From Code to SAT Formula
From C Code to SAT Formula Original code Convert to static single assignment x=x+y; if (x!=1) x=2; else x++; assert(x<=3); x1=x0+y0; if (x1!=1) x2=2; else x3=x1+1; x4=(x1!=1)?x2:x3; assert(x4<=3); Generate constraints C  x1=x0+y0  x2=2  x3=x1+1 (x1!=1  x4=x2  x1=1  x4=x3) P  x4 <= 3 Check if C   P is satisfiable, if it is then the assertion is violated C   P is converted to Boolean logic using a bit vector representation for the integer variables y0,x0,x1,x2,x3,x4 Introductionto SAT-problem for newbie Choi,

17 Introductionto SAT-problem for newbie Choi, Chang-Beom@pswlab
SAT vs SMT p cnf −1 − −2 3 0 −1 2 − −3 4 0 −1 3 − −4 5 0 −1 4 − −5 6 0 −1 5 − −6 7 27 0 −1 26 − − −1 27 − − −1 28 − − −1 29 − − −1 30 − − −1 31 − − −33 32 − −1 − −1 − −1 − −1 − −1 21 − − −1 22 − − −1 23 − − −1 24 − − −1 25 − −26 16 − − −1 17 − − −1 18 − − −1 19 − − −1 20 − − 0 −1 6 − −7 8 0 −1 7 − −8 9 0 −1 8 − − −1 9 − − −1 10 − − −1 11 − − −1 12 − − −1 13 − − −1 14 − − −1 15 − − −1 −164 0 −132 − − − − − − −166 0 −133 − − − −170 0 −135 − − − − − − −172 0 −136 − − − − − − −168 0 −134 − − − − − − 158 0 −1 − −1 − −1 − −1 − −1 − − −1 131 − − − −1 − −1 − −1 − −1 − −1 − −1 − −1 − −1 − −1 − −1 − −1 − −1 − −1 − −1 − −1 −142 0 −1 − −1 − −1 − −1 − −1 − −1 − −1 − −1 −182 0 −141 − − − − − − −184 0 −142 − − − − − − −180 0 −140 − − − − − − −176 0 −138 − − − − − − −178 0 −139 − − − − − − −174 0 −137 − − − − − − −200 0 −150 − − − − − − −202 0 −151 − − − −206 0 −153 − − − − − − −208 0 −154 − − − − − − −204 0 −152 − − − − − − − − − −198 0 −149 − − − − − − −194 0 −147 − − − − − − −196 0 −148 − − − − − − −186 0 −143 − − − − − − −188 0 −144 − − − − − − −190 0 −145 − − − − − − −192 0 −146 − − − − − − −218 0 −159 − − − − − − −220 0 −160 − − − − − − −216 0 −158 − − − − − − −212 0 −156 − − − − − − −214 0 −157 − − − − − − −210 0 −155 − − − − − − −229 −230 − −231 0 − − −231 0 −229 − − − − − − − −234 0 −229 − −229 − − − − − − − −237 0 −229 − −229 −238 −153 −229 0 −154 −229 0 −155 −229 0 −156 −229 0 −157 −229 0 −158 −229 0 −159 −229 0 −160 −229 0 −161 −229 0 − 0 −142 −229 0 −143 −229 0 −144 −229 0 −145 −229 0 −146 −229 0 −147 −229 0 −148 −229 0 −149 −229 0 −150 −229 0 −151 −229 0 −152 −229 0 −229 0 −131 −229 0 −132 −229 0 −133 −229 0 −134 −229 0 −135 −229 0 −136 −229 0 −137 −229 0 −138 −229 0 −139 −229 0 −140 −229 0 −141 −229 − − − −222 0 −161 − − − − − −223 −224 0 − − −161 − −225 −224 − −32 − − − − −249 0 −229 − −229 − − − − − − − −252 0 −229 − −229 − − − − − − − −255 0 −229 − −229 − − 244 − − −246 0 −229 − −229 − − − − − − − − − − − −243 0 −229 − −229 − − − − − 0 69 − − − − − − −240 0 −229 − −229 − − − − − − − − − −273 0 −229 − −229 − − − −273 − − −279 0 −229 − −229 − − − − − − − 275 0 − − − −276 0 −229 − −229 − − − − − − −229 − − − − − − − −270 0 −229 − −229 − − −264 0 −229 − −229 − − − − − − − −267 0 −229 − − − − − −258 0 −229 − −229 − − − − −259 − − −261 0 −229 − −229 − − − − − − − −297 0 −229 − −229 − − − − − − − −300 0 −229 − − −294 0 −229 − −229 − − − − − − − − − − − −291 0 −229 − −229 − − − − −292 −282 0 −229 − −229 − − − − − − − −285 0 −229 − −229 − − − − − − − −288 0 −229 − −229 − − −229 − − − − − − − −321 0 −229 − −229 − − −326 0 − − −1 131 −327 0 −132 −327 − −328 0 − − −329 0 −315 0 −229 − −229 − − − − − − − −318 0 −229 − − − − − − −324 0 −229 − −229 − − − − −325 − − −312 0 −229 − −229 − − − − − − − 308 0 − − − −309 0 −229 − −229 − − − − − − −229 − − − − − − − −303 0 −229 − −229 − − − − − − − −306 0 −229 − −229 − − − −306 −338 0 −135 − − −1 338 −339 0 −136 −339 − −340 0 − − − −335 0 −134 − − −1 335 −336 0 −135 −336 − −337 0 − − − −332 0 −133 − − −1 332 −333 0 −134 −333 − −334 0 − − − 327 −329 0 −132 − − −1 329 −330 0 −133 −330 − −331 0 − − − −353 0 −140 − − −1 353 −354 0 −141 −354 − −355 0 − − − −359 0 −142 − − −1 359 −360 0 −143 −360 − −361 0 − − − −356 0 −141 − − −1 356 −357 0 −142 −357 − −358 0 − − − −350 0 −139 − − −1 350 −351 0 −140 −351 − −352 0 − − − −347 0 −138 − − −1 347 −348 0 −139 −348 − −349 0 − − − −341 0 −136 − − −1 341 −342 0 −137 −342 − −343 0 − − − −344 0 −137 − − −1 344 −345 0 −138 −345 − −346 0 − − − −371 0 −146 − − −1 371 −372 0 −147 −372 − −373 0 − − − −368 0 −145 − − −1 368 −369 0 −146 −369 − −370 0 − − − −365 0 −144 − − −1 365 −366 0 −145 −366 − −367 0 − − − −362 0 −143 − − −1 362 −363 0 −144 −363 − −364 0 − − − −389 0 −152 − − −1 389 −390 0 −153 −390 − −391 0 − − − −395 0 −154 − − −1 395 −396 0 −155 −396 − −397 0 − − − −392 0 −153 − − −1 392 −393 0 −154 −393 − −394 0 − − − −386 0 −151 − − −1 386 −387 0 −152 −387 − −388 0 − − − −383 0 −150 − − −1 383 −384 0 −151 −384 − −385 0 − − − −374 0 −147 − − −1 374 −375 0 −148 −375 − −376 0 − − − −377 0 −148 − − −1 377 −378 0 −149 −378 − −379 0 − − − −380 0 −149 − − −1 380 −381 0 −150 −381 − −382 0 − − − −410 0 −159 − − −1 410 −411 0 −160 −411 − −412 0 − − − −407 0 −158 − − −1 407 −408 0 −159 −408 − −409 0 − − − −401 0 −156 − − −1 401 −402 0 −157 −402 − −403 0 − − − −404 0 −157 − − −1 404 −405 0 −158 −405 − −406 0 − − − −398 0 −155 − − −1 398 −399 0 −156 −399 − −400 0 − − − −427 0 −227 − −227 − − − − − − − −430 0 −227 − − − − − − −436 0 −227 − −227 − − − − −437 −227 − − − − − − − −433 0 −227 − −227 − − − − −424 0 −227 − −227 − − − − − − − 420 0 − − − −421 0 −227 − −227 − − − − − −413 0 −160 − − −1 413 −414 0 −161 −414 − −415 0 − − − −416 0 −161 − − −1 416 − − −418 0 −227 − −227 − − − −418 − − − − − − −451 0 −227 − −227 − − − −451 − −227 − − − − − − − −448 0 −227 − −227 − − −442 0 −227 − −227 − − − − − − − −445 0 −227 − − −439 0 −227 − −227 − − − − − − − − − − − −469 0 −227 − −227 − − − − −470 − −475 0 −227 − −227 − − − − − − − −478 0 −227 − − −472 0 −227 − −227 − − − − − − −227 − − − − − − − −466 0 −227 − −227 − − −460 0 −227 − −227 − − − − − − − −463 0 −227 − 453 0 − − − −454 0 −227 − −227 − − − − − − − −457 0 −227 − −227 − − − − − − − − − −490 0 −227 − −227 − − − − − − − 486 0 − − − −487 0 −227 − −227 − − − − − − − − − − − −484 0 −227 − −227 − − − −484 − −227 − − − − − − − −481 0 −227 − −227 − − −227 − − − − − − −514 0 −131 −514 0 − −227 −515 0 0 − − − − −520 0 −227 − −227 − − − − − 131 − − − − − − −517 0 −227 − −227 − − − − −508 0 −227 − −227 − − − − − − − −511 0 −227 − − −505 0 −227 − −227 − − − − − − −493 0 −227 − −227 − − − − − − − −496 0 −227 − −227 − − − − − − − −499 0 −227 − −227 − − − − − − − −502 0 −227 − −227 − − − − −503 − − − − − − −535 0 −227 − −227 − − − 529 0 −227 − − − − − − − −532 0 −227 − −227 − 0 337 −526 0 −227 − −227 − − − − − − − −529 0 −227 −340 − − −523 0 −227 − −227 − − − − − − −526 − − − − −556 0 −227 − −227 − − − − − − − −559 0 −227 − −227 − − − − − − −562 0 373 −562 0 −227 − −227 − − − − − − − −565 0 −227 −376 − − − − − − −553 0 −227 − −227 − − − 547 0 −227 − − − − − − − −550 0 −227 − −227 − 0 355 −544 0 −227 − −227 − − − − − − − −547 0 −227 −358 − − − − −538 0 −227 − −227 − − − − − − − −541 0 −227 − −227 − − − − − − −544 − − −577 0 −227 − −227 − − − − − − −580 0 391 −580 0 −227 − −227 − − − − − − − −583 0 −227 −394 − − − − −574 0 −227 − −227 − − − − − − − − − − − −571 0 −227 − −227 − − − 565 0 −227 − − − − − − − −568 0 −227 − −227 − 601 0 −227 − − − − − − − −604 0 −227 − −227 − 37 −609 0 −32 − − −610 0 −32 − − −611 0 −32 − − −612 0 −32 − −613 0 − − − − − − −607 0 −32 − − −608 0 −32 − −609 0 0 409 −598 0 −227 − −227 − − − − − − − −601 0 −227 −412 − − −595 0 −227 − −227 − − − − − − −598 583 0 −227 − − − − − − − −586 0 −227 − −227 − − − − − − − −589 0 −227 − −227 − − − − − − − −592 0 −227 − −227 − − − − − 53 −625 0 −32 − − −626 0 −32 − − −627 0 −32 − − −628 0 −32 − −629 0 49 −621 0 −32 − − −622 0 −32 − − −623 0 −32 − − −624 0 −32 − −625 0 45 −617 0 −32 − − −618 0 −32 − − −619 0 −32 − − −620 0 −32 − −621 0 41 −613 0 −32 − − −614 0 −32 − − −615 0 −32 − − −616 0 −32 − −617 0 − −649 0 −32 − − − −650 0 −32 − − − − −652 0 −32 − − − −653 0 −32 − − − − −655 0 −32 − − − −656 0 −32 − − − − −658 0 −32 − − − −659 0 −32 −660 0 −32 − − − − −646 0 −32 − − − −647 0 −32 − − −429 0 − −641 0 −32 − − − − −643 0 −32 − − − −644 0 65 −637 0 −32 − − −638 0 −32 − −32 − − − − −640 0 −32 − − 57 −629 0 −32 − − −630 0 −32 − − −631 0 −32 − − −632 0 −32 − −633 0 61 −633 0 −32 − − −634 0 −32 − − −635 0 −32 − − −636 0 −32 − −637 0 670 −671 0 −32 − − − − −673 0 −32 − − − −674 0 −32 − 0 − − −668 0 −32 − − − − −670 0 −32 − − − − −664 0 −32 − − − −665 0 −32 − − − − −667 0 −32 −76 667 441 − − − −661 0 −32 − − − −662 0 −32 − − − 32 − − −691 0 −32 − − − −692 0 −32 − − − − 0 − −698 0 −32 − − − − −700 0 −32 − − − −701 0 −694 0 −32 − − − −695 0 −32 − − − − −697 0 −32 − − −686 0 −32 − − − − −688 0 −32 − − − −689 0 −32 − −690 0 − − −683 0 −32 − − − − −685 0 −32 − − − − − − −676 0 −32 − − − −677 0 −32 − − − −679 0 80 −679 0 −32 − − − −680 0 −32 − − − − −682 0 −32 − −713 0 −32 − − − − −715 0 −32 − − − −716 0 −32 −717 0 − − − −710 0 −32 − − − − −712 0 −32 − − − − −706 0 −32 − − − −707 0 −32 − − − − −709 0 −32 −32 − − − − −703 0 −32 − − − −704 0 −32 − − −486 0 516 − − −32 − − − −32 − − − −32 − − − − −32 − − − −32 − − − −32 − − − −32 − −32 − − − −32 − − − −32 − − − −32 − − − − − −733 0 −32 − − − −734 0 −32 −735 0 −227 − −32 −736 727 −728 0 −32 − − − − −730 0 −32 − − − −731 0 −32 − − −721 0 −32 − − − −722 0 −32 − − − − −724 0 −32 −95 724 498 − − − −718 0 −32 − − − −719 0 −32 − − − 0 − − −725 0 −32 − − − − −727 0 −32 − − − − − − −1 − −1 − − −1 768 − − −1 769 − 771 0 − −1 770 − − −1 771 − − −1 772 − − −1 773 − − − −32 − − − −32 − − − −32 − − − −32 754 0 −32 − − − −32 − − − −32 − − − −32 − −758 0 32 − −32 − − − −32 − − − −32 − − − −32 − − − −32 − − − −32 − − − −32 − − − −32 − − − −32 − − − −32 − − − −32 − − −570 − −1 778 − − −1 779 − − −1 780 − − −1 781 − −782 0 − −1 774 − − −1 775 − − −1 776 − − −1 777 − ASSERT(main_0_i_1 = 0bin ); QUERY((BVLT(main_0_i_1, 0bin )) => [main_0_i_1]:= main_0_i_1 ELSE main_0_a_0 ENDIF; 0bin )) THEN main_0_i_1 ELSE ASSERT(main_0_temp_i_1= IF (BVLT(main_0_i_1, 0bin )) THEN main_0_a_0 WITH ASSERT main_0_a_1 = IF (BVLT(main_0_i_1, (BVGE(main_0_i_1, 0bin )) AND (BVLT(main_0_i_1, 0bin ))); (BVGE(main_0_i_2, 0bin )) AND ASSERT main_0_a_2 = IF (BVLT(main_0_i_2, (BVLT(main_0_i_2, 0bin ))); QUERY((BVLT(main_0_i_2, 0bin )) => 0bin ) ELSE main_0_i_1 ENDIF); ASSERT(main_0_i_2= IF (BVLT(main_0_i_1, main_0_temp_i_0 ENDIF); 0bin )) THEN BVPLUS(32, main_0_i_1, ASSERT(main_0_i_3= IF (BVLT(main_0_i_2, 0bin )) THEN BVPLUS(32, main_0_i_2, main_0_temp_i_1 ENDIF); ASSERT(main_0_temp_i_2= IF (BVLT(main_0_i_2, 0bin )) THEN main_0_i_2 ELSE 0bin )) THEN main_0_a_1 WITH [main_0_i_2]:= main_0_i_2 ELSE main_0_a_1 ENDIF; NOT( (BVLT(main_0_i_3, 0bin )))); 0bin ) ELSE main_0_i_2 ENDIF); QUERY( (BVLT(main_0_i_2, 0bin )) => SMT ASSERT(main_0_i_1 = 0bin ); QUERY((BVLT(main_0_i_1, 0bin )) => (BVGE(main_0_i_1, 0bin )) AND (BVLT(main_0_i_1, 0bin ))); ASSERT main_0_a_1 = IF (BVLT(main_0_i_1, 0bin )) THEN main_0_a_0 WITH [main_0_i_1]:= main_0_i_1 ELSE main_0_a_0 ENDIF; ASSERT(main_0_temp_i_1= IF (BVLT(main_0_i_1, 0bin )) THEN main_0_i_1 ELSE main_0_temp_i_0 ENDIF); ASSERT(main_0_i_2= IF (BVLT(main_0_i_1, 0bin )) THEN BVPLUS(32, main_0_i_1, 0bin ) ELSE main_0_i_1 ENDIF); QUERY((BVLT(main_0_i_2, 0bin )) => (BVGE(main_0_i_2, 0bin )) AND (BVLT(main_0_i_2, 0bin ))); ASSERT main_0_a_2 = IF (BVLT(main_0_i_2, 0bin )) THEN main_0_a_1 WITH [main_0_i_2]:= main_0_i_2 ELSE main_0_a_1 ENDIF; ASSERT(main_0_temp_i_2= IF (BVLT(main_0_i_2, 0bin )) THEN main_0_i_2 ELSE main_0_temp_i_1 ENDIF); ASSERT(main_0_i_3= IF (BVLT(main_0_i_2, 0bin )) THEN BVPLUS(32, main_0_i_2, 0bin ) ELSE main_0_i_2 ENDIF); QUERY( (BVLT(main_0_i_2, 0bin )) => NOT( (BVLT(main_0_i_3, 0bin )))); for(i=0;i<2;i++) { a[i]=i; } SAT Introductionto SAT-problem for newbie Choi,

18 Introductionto SAT-problem for newbie Choi, Chang-Beom@pswlab
Discussion SAT-solver optimization using software structures Using control flow information to prune search space Data structures(Abstraction)? User Interaction? Code to SAT formula Pointers? Object-Oriented Structures? SAT vs SMT? Introductionto SAT-problem for newbie Choi,


Download ppt "SAT for Software Model Checking Introduction to SAT-problem for newbie"

Similar presentations


Ads by Google