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):||25 October 2017|
|PDF File Size:||13.50 Mb|
|ePub File Size:||11.52 Mb|
|Price:||Free* [*Free Regsitration Required]|
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. Download and install from the Racket site. The proof bar handles this for you. This means that the function call executed without errors. Essentially, the REPL will execute any code you type in the text field on bottom the “prompt” and show the result in the log above.
We can automate this process to make sure that rev continues to match our expectations, even if we change or rewrite it. The definitions area is where you write your functions, theorems, and other state-altering expressions. 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: It generates values called xsusing the random-integer-list generator.
Alternately, feel free to inquire on the Racket User’s mailing listfile a bug report via DrRacket’s Help menu, or tutirial the author. A doublecheck test has three parts: So we need to put 1 at the end of the reversed list.
This page provides instructions for downloading the software, working in Racket’s ACL2 language, writing interactive graphical programs, and for reporting bugs.
We can just use rev rest xs to tuotrial the rest of the list, but what do we do with first xs? Running Dracula Start DrRacket.
In this case, our test as written will fail. You may now restart ACL2 if desired. Admitted expressions will be highlighted green, and rejected expressions will be highlighted red.
The reverse of an empty list is just an empty list: It will run, and if it passes, a green bar will appear to the left of the test. This simply means that the code was executed by ACL2 without any problems. You may also copy and paste such expressions into the Definitions Window. There are a couple of things to note at this point. You may also enter definitions into the Interactions Window if you want to test something on the fly.
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.
To define and edit functions, use the Definitions window. You need DrRacket version 5. To run your program, click on Run.
Test reverse Now that we have a good working definition for reverse, we tutoiral to test it to see that it works. This has to do with how ACL2 processes events; the ACL2 “world” must be logically consistent after each and every event, so if you used “foo” before defining it, ACL2 might be accepting something that won’t actually work. The first case is when the argument, xs cal2, is empty or nil.
Dracula is available as a Racket package. If the Dracula language or its documentation aacl2 not get installed correctly, try running the following command to fix it: On Windows, this utility is in the directory where Racket is installed; on Mac or Unix, it is in the bin subdirectory. 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”.
We want to take these parts and assemble a new, reversed list.
To install Dracula using this utility, execute: The name of the test is rev-rev-test. If a single case fails, the test fails. Try admitting your sum function from before. It can be installed using the raco command line utility. Upgrading To upgrade Dracula, run the following at the command line: Keep reading below for installation instructions, and check out the links on the left for tutorials, examples, and bug report instructions.
You can see that this makes the test fail.
Proof Pad: Introduction
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 REPL is a good place to test the functions you write in the definitions area, or just to get a sense of how to use a certain function or feature. In this case, it fails all cases, but it might help you to diagnose the problem if only some of the cases fail too.
If you don’t, see the troubleshooting page.