1 / 26

Integrating Stålmarck’s algorithm in Coq

Integrating Stålmarck’s algorithm in Coq. Laurent Théry Lemme. Motivations. Verifying verification tools Adding more automation to Coq. Outline. What is Stålmarck’s algorithm? How to integrate it to Coq? How efficient is the result?. Stålmarck’s algorithm. Tautology Checker

inigo
Télécharger la présentation

Integrating Stålmarck’s algorithm in Coq

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. Integrating Stålmarck’s algorithm in Coq Laurent Théry Lemme

  2. Motivations • Verifying verification tools • Adding more automation to Coq

  3. Outline • What is Stålmarck’s algorithm? • How to integrate it to Coq? • How efficient is the result?

  4. Stålmarck’s algorithm • Tautology Checker • Developed by Gunnar Stålmarck • Year 1994 • Commercialised by Prover Technology • Patented Algorithm!!!!

  5. Boolean Formulae Constant value: Variables: Negation: Conjunction: Disjunction: Implication:

  6. Checking tautologies Checking if the formula is true for all assignment:

  7. Triplets

  8. Refutation

  9. Propagation Rules If Then If Then If Then

  10.    Example   

  11. Case Split Propagation Case Split Case Splitting Propagation Exponential Growth Propagation

  12. Intersection Dilemma Rule Propagation Case Split Propagation Propagation

  13. Iteration On all variables Till no new information is gained

  14. Nesting Level 2: most tautologies

  15. Extraction Reflection Coq Proof Checking Trace Integrating

  16. Implementation • A Single Implementation for Extraction and Reflection • Functional style • Strict termination criterion

  17. State • Variables: integer (T=1,=-1) • State: {2=-3,3=-1,4=5} • Union-find: {1  1, 2  1, 3  -1, 4 4, 5  4} • Back-pointer: {1 [2,-3],2 -1,3 -1,4 [5],5 4}

  18. Termination • Easy except: fun append = [] M => M | L [] => L | [a|L] [b|M] => if (lt a b) then [a |(append [a|L] M)] else [b | (append L [b|M])] • _

  19. fun append = [] M => M | L [] => L | [a|L] [b|M] => if (lt a b) then [a |(append L [b|M])] else let append1 = fun [] => L | [c|N] => if (lt a c) then [a|(append L [c|N])] else [c|(append1 N)] in [b|(append1 M)]

  20. Extraction/Reflection

  21. Trace Coq Ocaml

  22. 3 Level Approach • Adding Trace: • Checking Trace: • Correctness Theorem:

  23. Trace Reducing Search: Successful case splitting (v) Successful rule propagation (r) Result of the intersection (i)

  24. Benchmark (time)

  25. Benchmarck (size)

  26. Conclusions • Extraction: clearly the most efficient • Reflection: computation is expensive in Coq (< 1s) • Trace: practical if we can reduce the amount of computation

More Related