### ACL2 TUTORIAL PDF

Tutorial Description. ACL2 (“A Computational Logic for Applicative Common Lisp”) is both a programming language in which you can model computer systems. ACL2’s logic is constructed on top of a real programming language, Common Lisp, and supports a wide variety of. David Hardin’s current a liation: Ajile Systems. PDF | We describe a tutorial that demonstrates the use of the ACL2 theorem prover. We have three goals: to enable a motivated reader to start.

Author: | Nebar Duktilar |

Country: | Colombia |

Language: | English (Spanish) |

Genre: | Finance |

Published (Last): | 17 December 2013 |

Pages: | 358 |

PDF File Size: | 8.63 Mb |

ePub File Size: | 7.76 Mb |

ISBN: | 631-3-97741-788-2 |

Downloads: | 30291 |

Price: | Free* [*Free Regsitration Required] |

Uploader: | Tojagor |

It would be even better if we could write a test that will check several types of lists to see that our function does what wcl2 want.

## Aspects of ACL2 User Interaction

You will probably want to admit these functions to ACL2’s: The reverse of an empty list is just an empty list: The name of the test is rev-rev-test. We don’t recommend tutorizl, but it is not an uncommon practice for Lisp development. You also need ACL2 version 3. We want to take these parts and assemble a new, reversed list. A report on this course was presented at the ACL2 Workshop inand can be found here. Essentially, the REPL will execute any code avl2 type in the text field on bottom the “prompt” and show the result in the log above.

To run the test, just paste it into the definitions area. To install Dracula using this utility, execute: Try admitting your sum function from before.

If everything has been entered correctly, ACL2 will tktorial, and the bar will turn dark green with a checkmarkindicating that the property has been proven correct.

This simply means that the code was executed by ACL2 without any problems. To do this, we need to write a property-style test. You instantly see the result, which is 5 4 3 2 1.

This page provides instructions for downloading the software, working in Racket’s ACL2 language, writing interactive graphical programs, and for reporting bugs. It will run, and if it passes, a afl2 bar will appear to the left of the test.

Upgrading To upgrade Dracula, run the following at the command line: For put-at-end x xswe can use append:. The definitions area is where you write your functions, theorems, and other state-altering expressions.

If the proof or admission was successful, the error pane won’t open up by default. We can just use rev rest xs to reverse the rest of the list, but what do we do with first xs? This adds the content of the Definitions Window to DrRacket’s “knowledge base”. Running Dracula Start DrRacket. On Windows, this utility is in the directory where Racket is installed; on Mac or Unix, it is in the bin subdirectory.

One property we can test with DoubleCheck is that reversing a list twice gives you the same list you started with. You may also copy and paste such expressions into the Definitions Window. You may now restart ACL2 if desired. The simplest automatic test provided by Proof Pad is check-expect.

You can read more about ACL2’s two modes herethough this is strictly optional reading; you don’t need to have an intimate understanding of this for Proof Pad, since it abstracts these parts away for you.

This automatic admission occurs in: You can see that this makes the test fail. If the automatic admission succeeds, the proof bar turns light green next to the admitted code. The reverse zcl2 an empty list is just an empty list:. After we split it up into two parts, 1 and list 2 3 4 5we can reverse the list part to get list 5 4 3 2. In order to define a recursive function in ACL2, we need to think about what it would return in a couple of different cases. Tutodial the Dracula accl2 or its documentation does not get installed correctly, try running the following command to fix it: We could write some more check-expect style tests, but they can only get us so far.

### — ACL2 Version

Dracula is available as a Racket package. Alternately, feel free to inquire on the Racket User’s mailing listfile a bug report via DrRacket’s Help menu, or contact the author.

A doublecheck tutroial has three parts: