• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
    • Debugging
    • Std
    • Proof-automation
    • Macro-libraries
    • ACL2
      • Theories
      • Rule-classes
      • Proof-builder
      • Recursion-and-induction
      • Hons-and-memoization
      • Events
      • Parallelism
      • History
      • Programming
        • Defun
        • Declare
        • System-utilities
        • Stobj
        • State
        • Mutual-recursion
        • Memoize
        • Mbe
        • Io
        • Defpkg
        • Apply$
        • Loop$
        • Programming-with-state
        • Arrays
        • Characters
        • Time$
        • Defmacro
        • Loop$-primer
        • Fast-alists
        • Defconst
        • Evaluation
        • Guard
        • Equality-variants
        • Compilation
        • Hons
        • ACL2-built-ins
        • Developers-guide
          • Developers-guide-background
          • Developers-guide-maintenance
          • Developers-guide-build
          • Developers-guide-utilities
          • Developers-guide-logic
          • Developers-guide-evaluation
          • Developers-guide-programming
          • Developers-guide-introduction
          • Developers-guide-extending-knowledge
          • Developers-guide-examples
          • Developers-guide-contributing
          • Developers-guide-prioritizing
          • Developers-guide-other
            • Developers-guide-emacs
            • Developers-guide-style
            • Developers-guide-miscellany
            • Developers-guide-releases
            • Developers-guide-ACL2-devel
            • Developers-guide-pitfalls
          • System-attachments
          • Advanced-features
          • Set-check-invariant-risk
          • Numbers
          • Efficiency
          • Irrelevant-formals
          • Introduction-to-programming-in-ACL2-for-those-who-know-lisp
          • Redefining-programs
          • Lists
          • Invariant-risk
          • Errors
          • Defabbrev
          • Conses
          • Alists
          • Set-register-invariant-risk
          • Strings
          • Program-wrapper
          • Get-internal-time
          • Basics
          • Packages
          • Oracle-eval
          • Defmacro-untouchable
          • <<
          • Primitive
          • Revert-world
          • Unmemoize
          • Set-duplicate-keys-action
          • Symbols
          • Def-list-constructor
          • Easy-simplify-term
          • Defiteration
          • Fake-oracle-eval
          • Defopen
          • Sleep
        • Operational-semantics
        • Real
        • Start-here
        • Debugging
        • Miscellaneous
        • Output-controls
        • Macros
        • Interfacing-tools
      • Interfacing-tools
      • Hardware-verification
      • Software-verification
      • Math
      • Testing-utilities
    • Developers-guide

    Developers-guide-other

    Topics Not Covered

    There are many aspects of the ACL2 implementation, even major ones, that aren't covered in this Development Guide.

    It's perfectly OK that this Guide is incomplete!

    ACL2 has been maintained for more than 25 years by people who don't recall very much about large portions of the source code, probably the majority of it. The key is that when making changes, one explores relevant code, reading relevant user-level documentation and code comments (including Essays), and talking with other developer(s) about questions and issues. System maintenance generally gets easier with experience.

    Here is a partial list of topics, in no particular order, that are left uncovered by this guide, or largely so: defproxy and (except for brief mention) defattach; stobjs, including nested stobjs and abstract stobjs; arrays; hons, memoization, and fast-alists (see hons-and-memoization); the serialize reader and writer; apply$; make-event; metafunctions and clause-processors; hints, including computed-hints, default hints, override-hints, and custom keyword hints; wormholes; printing, including evisceration (see evisc-tuple), iprinting, pretty-printing, fmt, cw, print-object$ and with-output; constraints and functional-instantiation; the documentation system; the prover, including the waterfall, the rewriter (for example break-rewrite, congruences and patterned congruences, the rewrite-cache, etc.), the tau-system, forward-chaining, and much more; pathnames, including canonical-pathnames; encapsulate and functional-instantiation, including the proved-functional-instances-alist; the proof-builder; and certifying and including books. And this is only a partial list!

    But again, the Guide is not intended to be complete. In principle, at least, you can learn about any of the topics above when necessary, by reading user-level documentation and using the Emacs tags-search and meta-. commands to find relevant code, and comments, and in particular, essays.

    Expanding this Guide

    Perhaps this Guide will be expanded in the future. If so, the expansion should probably not duplicate code comments, but rather, provide overview information and perspective with pointers to those comments.

    NEXT SECTION: developers-guide-examples