1 / 26

Integrating Stålmarck's Algorithm into Coq: Enhancements and Efficiency

This paper explores the integration of Stålmarck’s algorithm into the Coq proof assistant, aiming to automate verification processes. It provides a comprehensive overview of Stålmarck’s method, developed in 1994, which focuses on checking tautologies through a Boolean formula manipulation approach. By outlining practical implementations and evaluating efficiency, this integration seeks to enhance Coq's verification tools. The findings highlight the balance between extraction and reflection, discussing the theorem of correctness and implications of computational expenses in Coq's environment.

inigo
Télécharger la présentation

Integrating Stålmarck's Algorithm into Coq: Enhancements and Efficiency

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