### BibTeX

@MISC{Kaufmann_anacl2,

author = {Matt Kaufmann and J Strother Moore},

title = {An ACL2 Tutorial},

year = {}

}

### OpenURL

### Abstract

Abstract. We describe a tutorial that demonstrates the use of the ACL2 theorem prover. We have three goals: to enable a motivated reader to start on a path towards effective use of ACL2; to provide ideas for other interactive theorem prover projects; and to elicit feedback on how we might incorporate features of other proof tools into ACL2. 1

### Citations

530 |
A computational logic
- Boyer, Moore
- 1979
(Show Context)
Citation Context ...ge, a formal logic, and a mechanized proof system. It was developed by the authors of this paper, with early contributions by Bob Boyer, and is the latest in the line of “Boyer-Moore” theorem provers =-=[2, 3]-=- starting with the 1973 Edinburgh Pure Lisp Prover’ [1]. The ACL2 logic and programming language are first-order and admit total recursive function definitions, and are based on a non-trivial purely f... |

395 |
A Computational Logic Handbook
- Boyer, Moore
- 1988
(Show Context)
Citation Context ...ge, a formal logic, and a mechanized proof system. It was developed by the authors of this paper, with early contributions by Bob Boyer, and is the latest in the line of “Boyer-Moore” theorem provers =-=[2, 3]-=- starting with the 1973 Edinburgh Pure Lisp Prover’ [1]. The ACL2 logic and programming language are first-order and admit total recursive function definitions, and are based on a non-trivial purely f... |

220 |
Jr., Common Lisp: The Language
- Steele
- 1990
(Show Context)
Citation Context ...re Lisp Prover’ [1]. The ACL2 logic and programming language are first-order and admit total recursive function definitions, and are based on a non-trivial purely functional subset of the Common Lisp =-=[20]-=- programming language. Thus, ACL2 can be built on many Lisp platforms. We have extended this subset in some important ways, in no small part because ACL2 is written primarily in itself! Extensions inc... |

49 | Structured theory development for a mechanized logic
- Kaufmann, Moore
(Show Context)
Citation Context ... ACL2 features that they illustrate. In those demos we will refer to sections of the online hypertext user’s manual [16] with the notation “see documentation”. This note skips the logical foundations =-=[12,13]-=-, focusing instead on the use of ACL2. We conclude this section with a few words about how the ACL2 proof engine attempts an individual proof and how ACL2 supports interactive proof development. Figur... |

31 | Partial functions in ACL2
- Manolios, Moore
(Show Context)
Citation Context ...nts – traditional tactics (macro-commands) for the proof-checker – partially-defined functions (see encapsulate) and, mimicking second-order logic, functional instantiation [5, 13] – a defpun utility =-=[18]-=- for defining non-terminating tail-recursive functions, built on top of ACL2 with macros – capabilities for system-level control, such as user-defined tables, state with applicative semantics, and an ... |

19 | Nonstandard Analysis in ACL2
- Gamboa, Kaufmann
- 2001
(Show Context)
Citation Context ...ers-and-modes) – hooks to external tools [17], built on a trust tag mechanism (defttag) [6] – experimental extensions others have initiated, to support: • Real numbers (through non-standard analysis) =-=[8]-=- • Hash cons, function memoization, and applicative hash tables [4] • Parallel evaluation [19] – more debugging tools, e.g. to trace or to inspect the rewrite stack – diverse tools for querying the lo... |

11 | A precise description of the ACL2 logic
- Kaufmann, Moore
- 1998
(Show Context)
Citation Context ... ACL2 features that they illustrate. In those demos we will refer to sections of the online hypertext user’s manual [16] with the notation “see documentation”. This note skips the logical foundations =-=[12,13]-=-, focusing instead on the use of ACL2. We conclude this section with a few words about how the ACL2 proof engine attempts an individual proof and how ACL2 supports interactive proof development. Figur... |

9 |
Modular proof: The fundamental theorem of calculus
- Kaufmann
- 2000
(Show Context)
Citation Context ...teractively, specifically highlighting several aspects of using ACL2. We use a shell running under Emacs, but an Eclipse-based interface is available [7]. – Top-down proof development (see the-method =-=[11]-=-), using simplification checkpoints to debug proof failures – Helpful proof automation, in particular conditional rewriting with respect to equivalence and congruence relations and a loop-stopper heur... |

8 |
Functional instantiation in first-order logic
- Boyer, Goldschlag, et al.
- 1991
(Show Context)
Citation Context ...and dynamically computed hints – traditional tactics (macro-commands) for the proof-checker – partially-defined functions (see encapsulate) and, mimicking second-order logic, functional instantiation =-=[5, 13]-=- – a defpun utility [18] for defining non-terminating tail-recursive functions, built on top of ACL2 with macros – capabilities for system-level control, such as user-defined tables, state with applic... |

8 | Efficient execution in an automated reasoning environment
- Greve, Kaufmann, et al.
(Show Context)
Citation Context ...w is a partial list of useful ACL2 features not mentioned above, many of them requested by users. For more about ACL2, see the home page [14]. – a primitive for user-installed executable counterparts =-=[9]-=- – proof control [10], including user-installed metatheoretic simplifiers, usersupplied syntactic conditions for rewrite rules, and dynamically computed hints – traditional tactics (macro-commands) fo... |

6 |
Proving theorems about pure lisp functions
- Boyer, Moore
- 1975
(Show Context)
Citation Context ...developed by the authors of this paper, with early contributions by Bob Boyer, and is the latest in the line of “Boyer-Moore” theorem provers [2, 3] starting with the 1973 Edinburgh Pure Lisp Prover’ =-=[1]-=-. The ACL2 logic and programming language are first-order and admit total recursive function definitions, and are based on a non-trivial purely functional subset of the Common Lisp [20] programming la... |

6 |
Meta Reasoning in ACL2
- Hunt, Kaufmann, et al.
- 2005
(Show Context)
Citation Context ...of useful ACL2 features not mentioned above, many of them requested by users. For more about ACL2, see the home page [14]. – a primitive for user-installed executable counterparts [9] – proof control =-=[10]-=-, including user-installed metatheoretic simplifiers, usersupplied syntactic conditions for rewrite rules, and dynamically computed hints – traditional tactics (macro-commands) for the proof-checker –... |

6 |
The ACL2 home page
- Kaufmann, Moore
- 2009
(Show Context)
Citation Context ...use of ACL2; to provide ideas for other interactive theorem prover projects; and to elicit feedback on how we might incorporate features of other proof tools into ACL2. 1 Introduction The name “ACL2” =-=[14]-=- stands for “A Computational Logic for Applicative Common Lisp” and refers to a functional programming language, a formal logic, and a mechanized proof system. It was developed by the authors of this ... |

6 | Integrating External Deduction Tools with ACL2
- Kaufmann, Moore, et al.
- 2006
(Show Context)
Citation Context ...fining templates for creating events – guards, which may be viewed as a general, semantic replacement for types – many modes and switches (see switches-parameters-and-modes) – hooks to external tools =-=[17]-=-, built on a trust tag mechanism (defttag) [6] – experimental extensions others have initiated, to support: • Real numbers (through non-standard analysis) [8] • Hash cons, function memoization, and ap... |

5 | Adding parallelism capabilities in ACL2
- Rager
- 2006
(Show Context)
Citation Context ... experimental extensions others have initiated, to support: • Real numbers (through non-standard analysis) [8] • Hash cons, function memoization, and applicative hash tables [4] • Parallel evaluation =-=[19]-=- – more debugging tools, e.g. to trace or to inspect the rewrite stack – diverse tools for querying the logical database (see history) – quantification via Skolemization (see defun-sk) Acknowledgement... |

2 |
The ACL2 User’s Manual
- Kaufmann, Moore
- 2008
(Show Context)
Citation Context ...nd other useful information.s2 The remaining sections summarize a few ACL2 demos and ACL2 features that they illustrate. In those demos we will refer to sections of the online hypertext user’s manual =-=[16]-=- with the notation “see documentation”. This note skips the logical foundations [12,13], focusing instead on the use of ACL2. We conclude this section with a few words about how the ACL2 proof engine ... |

1 |
Function memoization and unique object representation for ACL2 functions
- Hunt
- 2006
(Show Context)
Citation Context ... mechanism (defttag) [6] – experimental extensions others have initiated, to support: • Real numbers (through non-standard analysis) [8] • Hash cons, function memoization, and applicative hash tables =-=[4]-=- • Parallel evaluation [19] – more debugging tools, e.g. to trace or to inspect the rewrite stack – diverse tools for querying the logical database (see history) – quantification via Skolemization (se... |

1 | Hacking and extending ACL2
- Dillinger, Kaufmann, et al.
- 2007
(Show Context)
Citation Context ...which may be viewed as a general, semantic replacement for types – many modes and switches (see switches-parameters-and-modes) – hooks to external tools [17], built on a trust tag mechanism (defttag) =-=[6]-=- – experimental extensions others have initiated, to support: • Real numbers (through non-standard analysis) [8] • Hash cons, function memoization, and applicative hash tables [4] • Parallel evaluatio... |

1 | Proof Search Debugging Tools in ACL2
- Kaufmann, Moore
- 2008
(Show Context)
Citation Context ...succeeds, then ACL2 makes a corresponding extension to its logical world. Otherwise, ACL2 provides output that can suggest lemmas to prove, and it also offers a variety of other proof debugging tools =-=[15]-=-. Ultimately, a completed proof may be checked by certifying the resulting books: input files of events, in particular definitions and proved theorems. Books can be developed independently and combine... |