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: | Shakasho Vojinn |

Country: | Algeria |

Language: | English (Spanish) |

Genre: | Technology |

Published (Last): | 21 March 2011 |

Pages: | 404 |

PDF File Size: | 16.24 Mb |

ePub File Size: | 7.9 Mb |

ISBN: | 313-9-45157-727-5 |

Downloads: | 7649 |

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

Uploader: | Fauramar |

We can automate this process to make sure that rev continues to match our expectations, even if we change or rewrite it. The name of the test is rev-rev-test. Now you can evaluate expressions in the Interactions Window that refer to the definitions in the Definitions Window. And what we want for the whole list is list 5 4 3 2 1. 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.

To install Dracula using this utility, execute: 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. 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. It generates values called xsusing the random-integer-list generator.

This test has one generator. They only test the types of values that you generate, and you might have a bug that impacts only a small subset of cases, which means the generated test cases are unlikely to expose the bug. Test reverse Now that we have a good working definition for reverse, we need to test it to see that it works.

To do this, we need to write a property-style test. Acknowledgements Thanks to Rex Page for the inspiration for this project, Dale Vaillancourt for the initial implementation, and Matthias Felleisen for his constant support.

You may also copy and paste such expressions into the Definitions Window. Admitted expressions will be highlighted green, and rejected expressions will be highlighted red. You need DrRacket version 5. A doublecheck test has three parts: 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 tutodial definition of “bar”.

This automatic admission occurs in: A report on this course was presented at the ACL2 Workshop inand can be tutprial here.

When a test fails, it shows you which cases it failed on. One property we can test with DoubleCheck is that reversing a list twice gives you the same list you started with.

## Aspects of ACL2 User Interaction

You can see that this makes the test fail. There are a couple of things to note at this point. To run the test, just paste it into the definitions area. Thanks to Rex Page for the inspiration for this project, Dale Vaillancourt for the initial implementation, and Matthias Felleisen for his constant support.

DrRacket will then evaluate them next time you click Run. 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: This means that the function call executed without errors.

To run your program, click on Run.

The whole file so far is: Guards are restrictions on what values a function will tutoria in this case, endp xs expects a list, and we gave it a number. This page provides instructions for downloading the software, working in Racket’s ACL2 language, writing interactive graphical programs, and for reporting bugs. The definitions area is where you write your functions, theorems, and other state-altering expressions.

### — ACL2 Version

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: Uninstalling To uninstall Dracula, run the following at the command line: Try typing some math into the REPL now: You will probably want to admit these functions to ACL2’s: Try rutorial your sum function from before. On Windows, this utility is in the directory where Racket is installed; on Mac or Unix, it is in the bin subdirectory.