ddsmt a delta debugger for the smt lib v2 format
play

ddSMT: A Delta Debugger for the SMT-LIB v2 Format Aina Niemetz and - PowerPoint PPT Presentation

ddSMT: A Delta Debugger for the SMT-LIB v2 Format Aina Niemetz and Armin Biere Institute for Formal Models and Verification (FMV) Johannes Kepler University, Linz, Austria http://fmv.jku.at/ SMT Workshop 2013 July 8 - 9, 2013 Helsinki,


  1. ddSMT: A Delta Debugger for the SMT-LIB v2 Format Aina Niemetz and Armin Biere Institute for Formal Models and Verification (FMV) Johannes Kepler University, Linz, Austria http://fmv.jku.at/ SMT Workshop 2013 July 8 - 9, 2013 Helsinki, Finland

  2. Motivation Why delta debugging? 1 ( s❡t✲❧♦❣✐❝ UFNIA) 2 ( ❞❡❝❧❛r❡✲s♦rt sort1 0) 3 ( ❞❡❝❧❛r❡✲❢✉♥ x () sort1) 4 ( ❞❡❝❧❛r❡✲❢✉♥ y () sort1) 5 ( ❛ss❡rt ( ❂ x y )) 6 ( ♣✉s❤ 1) 7 ( ❞❡❢✐♥❡✲s♦rt sort2 () Bool) 8 ( ❞❡❝❧❛r❡✲❢✉♥ x () sort2) 9 ( ❞❡❝❧❛r❡✲❢✉♥ y () sort2) 10 ( ❛ss❡rt ( ❛♥❞ ( ❛s x Bool) ( ❛s y Bool ))) 11 ( ❛ss❡rt (! (not ( ❛s x Bool )) :named z)) 12 ( ❛ss❡rt z) 13 ( ♣♦♣ 1) 14 ( ❛ss❡rt ( ❢♦r❛❧❧ ((z Int)) ( ❡①✐sts ((zz Int)) ( ❂ z zz )))) 15 ( ❝❤❡❝❦✲s❛t ) 16 ( ❣❡t✲✈❛❧✉❡ ((let ((x 1) (y 1)) ( ❂ x y)))) 17 ( ❡①✐t ) 1 ( s e t − l o g i c UFNIA) 2 ( get − value ( f a l s e )) 3 ( e x i t )

  3. Motivation Why delta debugging? 1 ( s❡t✲❧♦❣✐❝ UFNIA) 2 ( ❞❡❝❧❛r❡✲s♦rt sort1 0) 3 ( ❞❡❝❧❛r❡✲❢✉♥ x () sort1) 4 ( ❞❡❝❧❛r❡✲❢✉♥ y () sort1) 5 ( ❛ss❡rt ( ❂ x y )) 6 ( ♣✉s❤ 1) 7 ( ❞❡❢✐♥❡✲s♦rt sort2 () Bool) 8 ( ❞❡❝❧❛r❡✲❢✉♥ x () sort2) 9 ( ❞❡❝❧❛r❡✲❢✉♥ y () sort2) 10 ( ❛ss❡rt ( ❛♥❞ ( ❛s x Bool) ( ❛s y Bool ))) 11 ( ❛ss❡rt (! (not ( ❛s x Bool )) :named z)) 12 ( ❛ss❡rt z) 13 ( ♣♦♣ 1) 14 ( ❛ss❡rt ( ❢♦r❛❧❧ ((z Int)) ( ❡①✐sts ((zz Int)) ( ❂ z zz )))) 15 ( ❝❤❡❝❦✲s❛t ) 16 ( ❣❡t✲✈❛❧✉❡ ((let ((x 1) (y 1)) ( ❂ x y)))) 17 ( ❡①✐t ) 1 ( s e t − l o g i c UFNIA) 2 ( get − value ( f a l s e )) 3 ( e x i t )

  4. Motivation What delta debugging? 1 ( s❡t✲❧♦❣✐❝ UFNIA) 2 ( ❞❡❝❧❛r❡✲s♦rt sort1 0) 3 ( ❞❡❝❧❛r❡✲❢✉♥ x () sort1) 4 ( ❞❡❝❧❛r❡✲❢✉♥ y () sort1) 5 ( ❛ss❡rt ( ❂ x y )) 6 ( ♣✉s❤ 1) 7 ( ❞❡❢✐♥❡✲s♦rt sort2 () Bool) 8 ( ❞❡❝❧❛r❡✲❢✉♥ x () sort2) 9 ( ❞❡❝❧❛r❡✲❢✉♥ y () sort2) 10 ( ❛ss❡rt ( ❛♥❞ ( ❛s x Bool) ( ❛s y Bool ))) 11 ( ❛ss❡rt (! (not ( ❛s x Bool )) :named z)) 12 ( ❛ss❡rt z) 13 ( ♣♦♣ 1) 14 ( ❛ss❡rt ( ❢♦r❛❧❧ ((z Int)) ( ❡①✐sts ((zz Int)) ( ❂ z zz )))) 15 ( ❝❤❡❝❦✲s❛t ) 16 ( ❣❡t✲✈❛❧✉❡ ((let ((x 1) (y 1)) ( ❂ x y)))) 17 ( ❡①✐t ) 1 ( s❡t✲❧♦❣✐❝ UFNIA) 2 ( ❣❡t✲✈❛❧✉❡ (false )) 3 ( ❡①✐t )

  5. Motivation What delta debugging? 1 ( s❡t✲❧♦❣✐❝ UFNIA) 2 ( ❞❡❝❧❛r❡✲s♦rt sort1 0) 3 ( ❞❡❝❧❛r❡✲❢✉♥ x () sort1) 4 ( ❞❡❝❧❛r❡✲❢✉♥ y () sort1) 5 ( ❛ss❡rt ( ❂ x y )) 6 ( ♣✉s❤ 1) 7 ( ❞❡❢✐♥❡✲s♦rt sort2 () Bool) 8 ( ❞❡❝❧❛r❡✲❢✉♥ x () sort2) 9 ( ❞❡❝❧❛r❡✲❢✉♥ y () sort2) 10 ( ❛ss❡rt ( ❛♥❞ ( ❛s x Bool) ( ❛s y Bool ))) 11 ( ❛ss❡rt (! (not ( ❛s x Bool )) :named z)) 12 ( ❛ss❡rt z) 13 ( ♣♦♣ 1) 14 ( ❛ss❡rt ( ❢♦r❛❧❧ ((z Int)) ( ❡①✐sts ((zz Int)) ( ❂ z zz )))) 15 ( ❝❤❡❝❦✲s❛t ) 16 ( ❣❡t✲✈❛❧✉❡ ((let ((x 1) (y 1)) ( ❂ x y)))) 17 ( ❡①✐t ) → easier to debug − 1 ( s❡t✲❧♦❣✐❝ UFNIA) 2 ( ❣❡t✲✈❛❧✉❡ (false )) → in a time efficient manner − 3 ( ❡①✐t )

  6. Preliminaries What is Delta Debugging? Delta Debugging = input minimization → originally introduced by R. Hildebrandt and A. Zeller in [HZ00] − → related work: shrinking in QuickCheck [CH00] − Basic Idea : Given executable Ex , failure-inducing input I : • Minimize (simplify) I − → I simp • I simp still triggers the original faulty behavior Original minimization strategy: • divide-and-conquer (binary) • remove parts irrelevant to the original faulty behavior → highly customizable, wide range of applications −

  7. Preliminaries Related Work deltaSMT • introduced by our group in [BB09] • tailored to the SMT-LIB v1 format • does not support quantifiers • implements hierarchical delta debugging strategy • nodes are substituted one-by-one in a breadth-first-search (BFS) manner by simpler nodes or their children − → bottleneck in the worst case − → cases, where deltaSMT struggled or unable to minimize input deltaSMT2 • recent and independent update of deltaSMT for SMT-LIB v2 • by P. F. Dobal and P. Fontaine at INRIA • syntactically extends deltaSMT for SMT-LIB v2 compliance • no full support for SMT-LIB v2 • still work-in-progress

  8. Preliminaries Related Work deltaSMT • introduced by our group in [BB09] • tailored to the SMT-LIB v1 format • does not support quantifiers • implements hierarchical delta debugging strategy • nodes are substituted one-by-one in a breadth-first-search (BFS) manner by simpler nodes or their children − → bottleneck in the worst case − → cases, where deltaSMT struggled or unable to minimize input deltaSMT2 • recent and independent update of deltaSMT for SMT-LIB v2 • by P. F. Dobal and P. Fontaine at INRIA • syntactically extends deltaSMT for SMT-LIB v2 compliance • no full support for SMT-LIB v2 • still work-in-progress

  9. ddSMT Overview ddSMT • input minimizer for the SMT-LIB v2 format • based on the exit code of a given executable • supports all SMT-LIB v2 logics • not based on deltaSMT • implements divide-and-conquer delta debugging strategy • employs simplification strategies for ◦ macros (command define-fun ) ◦ command-level scopes (commands push and pop ) ◦ named annotations (attribute :named ) • especially effective in combination with fuzz testing Technical Side Notes • implemented in Python 3 • provides a dedicated, modular, standalone SMT-LIB v2 parser

  10. ddSMT General Workflow Command-Level Command Scope Substitution Substitution Term Substitution Bit Vector Boolean Constant 0 Fresh Variables Constant false (or false term ) (bvor ( bv0 1) term ) (bvand ( bv1 1) term ) Constant true (and true term ) Fresh Variables Integer Constant 0 Fresh Variables store Real ite (left child) ite (right child) Constant 0 Fresh Variables let

  11. ddSMT General Workflow Command-Level Command Scope Substitution Substitution Term Substitution Bit Vector Boolean Constant 0 Fresh Variables Constant false (or false term ) (bvor ( bv0 1) term ) (bvand ( bv1 1) term ) Constant true (and true term ) Fresh Variables Integer Constant 0 Fresh Variables store Real ite (left child) ite (right child) Constant 0 Fresh Variables let

  12. ddSMT General Workflow Command-Level Command Scope Substitution Substitution Term Substitution Bit Vector Boolean Constant 0 Fresh Variables Constant false (or false term ) (bvor ( bv0 1) term ) (bvand ( bv1 1) term ) Constant true (and true term ) Fresh Variables Integer Constant 0 Fresh Variables store Real ite (left child) ite (right child) Constant 0 Constant 0 Fresh Variables let

  13. ddSMT General Workflow Command-Level Command Scope Substitution Substitution Term Substitution Bit Vector Boolean Constant 0 Fresh Variables Constant false (or false term ) (bvor ( bv0 1) term ) (bvand ( bv1 1) term ) Constant true (and true term ) for each set of define-fun, Fresh Variables Integer assert and get-value commands Constant 0 Fresh Variables store Real ite (left child) ite (right child) Constant 0 Fresh Variables let

  14. ddSMT General Workflow Command-Level Command Scope Substitution Substitution Term Substitution Bit Vector Boolean Constant 0 Fresh Variables Constant false (or false term ) (bvor ( bv0 1) term ) (bvand ( bv1 1) term ) Constant true (and true term ) Fresh Variables Integer Constant 0 Fresh Variables store Real ite (left child) ite (right child) Constant 0 Fresh Variables let

  15. ddSMT General Workflow Command-Level Command Scope Substitution Substitution Term Substitution Bit Vector Boolean Constant 0 Fresh Variables Constant false (or false term ) (bvor ( bv0 1) term ) (bvand ( bv1 1) term ) Constant true (and true term ) Fresh Variables Integer Constant 0 Fresh Variables store Real ite (left child) ite (right child) Constant 0 Fresh Variables let

  16. ddSMT General Workflow Command-Level Command Scope Substitution Substitution Term Substitution Bit Vector Boolean Constant 0 Fresh Variables Constant false (or false term ) (bvor ( bv0 1) term ) (bvand ( bv1 1) term ) Constant true (and true term ) Fresh Variables Integer Constant 0 Fresh Variables store Real ite (left child) ite (right child) Constant 0 Fresh Variables let

  17. ddSMT General Workflow Command-Level Command Scope Substitution Substitution Term Substitution Bit Vector Boolean Constant 0 Fresh Variables Constant false (or false term ) (bvor ( bv0 1) term ) (bvand ( bv1 1) term ) Constant true (and true term ) Fresh Variables Integer Constant 0 Fresh Variables store Real ite (left child) ite (right child) Constant 0 Fresh Variables let

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend