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.
|Published (Last):||16 November 2004|
|PDF File Size:||5.99 Mb|
|ePub File Size:||14.37 Mb|
|Price:||Free* [*Free Regsitration Required]|
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 we want. Test reverse Now that we have a good working definition for reverse, we need to test it tuttorial see that it works.
If the automatic admission succeeds, the proof bar turns light green next to the admitted code.
Introduction to Proof Pad
It will run, and if it passes, a green bar will appear to the left of the test. You can see that this makes the test fail.
This way, ACL2 will know to only concern itself with values that satisfy true-listp — values that are lists.
On Windows, this utility is in the directory where Racket is installed; on Mac or Unix, it is in the bin subdirectory. Upgrading To upgrade Dracula, run the following at the command line: You may now restart ACL2 if desired.
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 Ac,2, since it abstracts these parts away for you. You will probably want to admit these functions to ACL2’s: This titorial that the function call executed without errors. The simplest automatic test provided by Proof Pad is check-expect.
If the Dracula language or its documentation does not get installed correctly, try running the following command to fix it: If everything has been entered correctly, ACL2 will succeed, and the bar will turn dark green with a checkmarkindicating that the property has been proven correct.
Try typing some math into the REPL now: The first case is when the argument, xsis empty or nil. DrRacket will then evaluate them next time you click Run. Tytorial define and edit functions, use the Definitions window.
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. And what we want for the whole list is list 5 4 3 2 1. Download and install from the Racket site.
The intent of this is to let you test your functions in the REPL, even if they aren’t carefully written enough in the way ACL2 expects to be used in: So we need to put 1 at the end of the reversed list. This test has one aacl2. Here’s a definition for ‘sum’ that you can either retype or copy and paste: We could write some more check-expect style tests, but they can only get us so far. Keep reading below for installation instructions, and check out the links on the left for tutorials, examples, and bug report instructions.
Proof Pad: Tutorial (reverse)
This automatic admission occurs in: Try admitting your sum function from before. The proof bar handles this for you.
We can automate this process to make sure that rev ttuorial to match our expectations, even if we change or rewrite it.
It can be installed using the raco command line utility. Proof bar The proof bar is the normally white bar to the left of the definitions panel that allows you to view and manipulate the status of ACL2 with respect to your code. Define reverse reverse xs is a built-in function that takes a list and returns a list with all of the elements in the opposite order. Dracula is available as a Racket package. Alternately, feel free to inquire on the Tktorial User’s mailing listfile a bug report via DrRacket’s Help menu, or contact the author.
We can just use rev rest xs to reverse the rest of the list, but what do we do with first xs? If the proof or admission was successful, the error pane won’t open up by default.