1 / 11

Heuristic Theorem Prover

Heuristic Theorem Prover. Kenneth Roe 8/20/2006 www.fordocsys.com. Key contributions. Preprocessor before DPLL(T) Unate detection algorithm Rewriting Introduction of Symmetry Breaking to SMT Modulo Theorem Incremental difference logic encoding. SMT-COMP’06 configuration.

tarika
Download Presentation

Heuristic Theorem Prover

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Heuristic Theorem Prover Kenneth Roe 8/20/2006 www.fordocsys.com

  2. Key contributions • Preprocessor before DPLL(T) • Unate detection algorithm • Rewriting • Introduction of Symmetry Breaking to SMT Modulo Theorem • Incremental difference logic encoding

  3. SMT-COMP’06 configuration • BIconnected Graph Meta System for Encoding to Sat or Smt (BIG MESS)

  4. Rewriting • Algebraic simplification • Rules for arithmetic and boolean logic • Examples a+1+1+1+1 rewrites to a+4 a+2<b+3 rewrites to a<b+1 a and a rewrites to a • Some context rewriting a<b and b<a rewrites to False a<b and not(a=b) rewrites to a<b

  5. Symmetry breaking • Currently only works for QF_UF division • Step 1: Detect symmetric variables: • Example: P(a,b) ^ P(b,a) • The variables a and b can be swapped and form a symmetric pair. • Step 2: Detect symmetric predicates: • In the example above P(a,b) and P(b,a) are symmetric • Step 3: Generate Symmetry breaking tuples • P(a,b) or not(P(b,a))

  6. Unate detection algorithm • Detect atomic predicates that when asserted or denied make a complex boolean expression true or false • Example problem: • (a<b) and (if b=c then a+1=b else a<b+1) • For each subterm we compute four sets • Assert_makes_true • Deny_makes_true • Assert_makes_false • Deny_makes_false • Also compute pair wise implications between atomic predicates

  7. Unate detection algorithm example (a<b) and (if b=c then a+1=b else a<b+1) b=c assert_makes_true={b=c} deny_makes_false={b=c} a<b assert_makes_true={a<b,a+1=b} deny_makes_false={a<b,a<b+1} a+1=b assert_makes_true={a+1=b} deny_makes_false={a+1=b,a<b,a<b+1} a<b+1 assert_makes_true={a<b,a<b+1,a+1=b} deny_makes_false={a<b+1}

  8. Unate detection algorithm example (a<b) and (if b=c then a+1=b else a<b+1) if b=c then a+1=b else a<b+1 assert_makes_true={a+1=b} deny_makes_false={a<b+1} (a<b) and (if b=c then a+1=b else a<b+1) assert_makes_true={a+1=b} deny_makes_false={a<b,a<b+1}

  9. Difference logic encoding • Example • not(a < b) or ((a<b) and (b < c) and (c < a)) • Introduce boolean variables • (a < b) => A • (b < c) => B • (c < a) => C • Encode and add predicates for illegal combinations • (not(A) or (A and B and C)) and (not(A) or not(B) or not(C))

  10. Results • Difference logic encoding useful on most cases in QF_LIA, QF_LRA and QF_IDL—quite effective in gaining performance • Symmetry breaking effective in improving performance

  11. Results • Rewriting useful on select problems (WISA for example) • Unate detection not useful on its own but is a critical building block for the difference logic encoding

More Related