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: Bale Sasho
Country: Argentina
Language: English (Spanish)
Genre: Automotive
Published (Last): 26 April 2007
Pages: 160
PDF File Size: 3.26 Mb
ePub File Size: 8.67 Mb
ISBN: 589-2-85576-293-8
Downloads: 95880
Price: Free* [*Free Regsitration Required]
Uploader: Malalmaran

Aspects of ACL2 User Interaction

It generates values called xsusing the random-integer-list generator. Running Dracula Start DrRacket. This means that the function call executed without errors.

We want tutoiral take these parts and assemble a new, reversed list. Keep reading below for installation instructions, and check out the links on the left for tutorials, examples, and bug report instructions. For put-at-end x xswe can use append:. They only test the types of values that you generate, and you might have a bug gutorial impacts only a small subset of cases, which means the generated test cases are unlikely to expose the bug.

If you don’t, see the troubleshooting page. If it fails, it instead turns red, an ‘x’ is shown, and the details pane opens up to show you the error message you received. This page provides instructions for downloading the software, working in Racket’s ACL2 language, writing interactive graphical programs, and for reporting bugs. The whole file so far is: Now, what if xs is not empty?


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. You can see what kinds acl values this generator returns by typing it in the REPL.

Introduction to Proof Pad

You may also copy tugorial paste such expressions into the Definitions Window. First, the ‘3’ has a checkmark with a green background next to it. The definitions area is where you write your functions, theorems, and other state-altering expressions.

Dracula The objective of tuorial “Dracula” project is to provide a programming environment for the ACL2 language and theorem prover.

Once you’ve admitted some code to the ACL2 logic which can take some time for complex functions or theoremsthe proof bar turns green next to the form or forms that were admitted.

The first case is when the argument, xsis empty or nil. Finally, we have the body: One property we can test with Tjtorial is that reversing a list twice gives you the same list you started with.

We can automate this process to make sure that rev continues to match our expectations, even if we change or rewrite it. To do this, click on the proof bar next to the function you want to admit. We’ll talk more about the proof bar in the next section Definitions occur in an ordered way in the file; if you want to use the function “foo” within the function “bar”, you must put the definition of “foo” above the definition of “bar”.


It can be installed using the raco command line utility. If the Dracula language or its documentation does not get installed correctly, try running the following command to fix it: In order to correct this, we need to add a hypothesis to our property: We could write some more check-expect style tests, but they can only get us so far.

Dracula has been used to teach a first-year undergraduate logic course at Northeastern University.

Proof Pad: Tutorial (reverse)

In order to define a recursive function in ACL2, zcl2 need to think about what it would return in a couple of different cases. To run the test, just paste it into the definitions area. This way, ACL2 will know to only concern itself with values that satisfy true-listp — values that are lists.

This automatic admission occurs in: Alternately, feel free to inquire on the Racket User’s mailing listfile a bug report via DrRacket’s Help menu, or contact the author. Admitted expressions will be highlighted green, and rejected expressions will be highlighted red.