Loading in 5 sec....

Integrating Stålmarck’s algorithm in CoqPowerPoint Presentation

Integrating Stålmarck’s algorithm in Coq

- By
**inigo** - Follow User

- 82 Views
- Uploaded on

Download Presentation
## PowerPoint Slideshow about ' Integrating Stålmarck’s algorithm in Coq' - inigo

**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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript

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
- Developed by Gunnar Stålmarck
- Year 1994
- Commercialised by Prover Technology
- Patented Algorithm!!!!

Nesting

Level 2: most tautologies

Implementation

- A Single Implementation for Extraction and Reflection
- Functional style
- Strict termination criterion

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}

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])]

- _

[] 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)]

3 Level Approach

- Adding Trace:
- Checking Trace:
- Correctness Theorem:

Trace

Reducing Search:

Successful case splitting (v)

Successful rule propagation (r)

Result of the intersection (i)

Conclusions

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

Download Presentation

Connecting to Server..