• Top
    • Documentation
    • Books
      • Cert.pl
      • Community-books
      • Project-dir-alist
      • Bookdata
      • Uncertified-books
      • Book-hash
      • Sysfile
      • Show-books
      • Best-practices
        • Working-with-packages
        • Theory-management
        • Naming-rewrite-rules
        • Conventional-normal-forms
        • Where-do-i-place-my-book
        • File-names
        • File-extensions
        • Remove-whitespace
        • Finite-reasoning
      • Books-reference
      • Where-do-i-place-my-book
      • Books-tour
    • Boolean-reasoning
    • Projects
    • Debugging
    • Std
    • Proof-automation
    • Macro-libraries
    • ACL2
    • Interfacing-tools
    • Hardware-verification
    • Software-verification
    • Math
    • Testing-utilities
  • Books

Best-practices

Recommended best practices for ACL2 books.

DRAFT

This is a preliminary document. Feedback is very much welcome and appreciated. Please direct feedback to the acl2-books list or to Jared Davis.

We recommend the use of the Standard Libraries (std) to ease your burden of modeling and reasoning in a formal sytem. See other subtopics below for other best practices.

If you expect your library to be used at all by other people, put your code in a package. Jared, Rager, and Kaufmann spend a large amount of time just dealing with name clashes, and it leaves them grumpy. See working-with-packages.

Subtopics

Working-with-packages
How to set up new package and portcullis files.
Theory-management
Recommendations related to enabling and disabling functions and theorems.
Naming-rewrite-rules
Recommendations for writing understandable rule names.
Conventional-normal-forms
Recommendations for respecting global conventions that the ACL2 books authors have agreed to.
Where-do-i-place-my-book
How to decide where in the books directory structure to place your book
File-names
Restrictions to follow for naming books, directories, and other files.
File-extensions
Conventions to follow for choosing file extensions like .lisp, .lsp, and .acl2 files.
Remove-whitespace
How to find and remove whitespace from .lisp files
Finite-reasoning
Use gl to reason about finitely bounded values.