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):||19 March 2016|
|PDF File Size:||6.54 Mb|
|ePub File Size:||1.21 Mb|
|Price:||Free* [*Free Regsitration Required]|
This means that the function call executed without errors. One property we can test with DoubleCheck is that reversing a list twice gives tutorisl the same list you started with.
First, the ‘3’ has a checkmark with a green background next to it. It generates values called xsusing the random-integer-list generator.
And what we want for the whole list is list 5 4 3 2 1. For put-at-end x xswe can use append:. Thanks to Rex Page for the inspiration for this project, Dale Vaillancourt for the initial implementation, and Matthias Felleisen for his constant support.
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. There are a couple of things to note at this point. The whole file so far is: The definitions area is where you write your functions, theorems, and other state-altering expressions.
A doublecheck test has three parts: To run the test, just paste it into the definitions area. You need DrRacket version 5.
Tutorial: reverse of reverse
DrRacket tugorial then evaluate them next time you click Run. Alternately, feel free to inquire on the Racket User’s mailing listfile a bug report via DrRacket’s Help menu, or contact the author.
This test has one generator. The reverse of an empty list is just an empty list:.
Aspects of ACL2 User Interaction
This way, ACL2 will know to tutoorial concern itself with values that satisfy true-listp — values that are lists. Test reverse Now that we have a good working definition for reverse, we need to test it to see that it works. You may also copy and paste such expressions into the Definitions Window. In this case, it fails all cases, but it might help you to diagnose the problem if only some of the cases fail too.
Introduction to Proof Pad
Finally, we have the body: As you hover afl2 the proof bar, it will show you a preview of what’s going to be done; in particular, if you want to admit an expression, you have to first admit all the expressions above it. Admitted expressions will be highlighted green, and rejected expressions will be highlighted red. When a test fails, it shows you which cases it failed on.
Now, what if xs is not empty? This page provides instructions for downloading the software, working in Racket’s ACL2 language, writing interactive graphical programs, and for reporting bugs. If a single case fails, the test fails. Try typing some math into the REPL now: It can be installed using the raco command line utility.
You also need ACL2 version 3.
Proof Pad: Tutorial (reverse)
You may also enter definitions into the Interactions Window if you want to test something on the fly. We don’t recommend this, but it is not an uncommon practice for Lisp development. You instantly see the result, which is 5 4 3 2 1. If the automatic admission succeeds, the proof bar turns light green next to the admitted code.
We could write some tutorail check-expect style tests, but they can only get us so far. Define reverse reverse xs is a built-in function that takes a list and returns a list with all of the elements acp2 the opposite order.