• Top
    • Documentation
    • Books
      • Cert.pl
      • Community-books
      • Project-dir-alist
      • Bookdata
      • Uncertified-books
      • Book-hash
      • Sysfile
      • Show-books
      • Best-practices
      • Books-reference
        • Include-book
        • Certify-book
        • Cbd
        • Set-write-ACL2x
        • Book-compiled-file
        • Add-include-book-dir
        • Pathname
        • With-current-package
        • Add-include-book-dir!
        • Full-book-name
        • Delete-include-book-dir
        • With-cbd
          • Delete-include-book-dir!
          • Set-cbd
          • Certify-book-debug
        • 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-reference

    With-cbd

    To bind the connected book directory

    With-cbd sets the connected book directory (see cbd) within its scope.

    Example Forms:
    
    ; Equivalent to (include-book "dir1/dir2/foo"):
    (with-cbd "dir1"
              (include-book "dir2/foo"))
    
    ; Equivalent to evaluation of the form,
    ; (include-book "arithmetic/top" :dir :system)'):
    (with-cbd (cdr (assoc-eq :system (project-dir-alist (w state))))
              (include-book "arithmetic/top"))

    See cbd for a description of the connected book directory. The “Technical Remark” there, about Lisp using the cbd to elaborate relative pathnames, applied to with-cbd as well.

    General Form:
    (with-cbd str form)

    where str evaluates to a nonempty string that represents the desired directory (see pathname) and form evaluates to an error-triple.

    The effect of (with-cbd str form) is to evaluate first (set-cbd str) and then to evaluate form, after which the connected book directory is restored to the value it had before that evaluation of set-cbd. However, the implementation is designed so that the connected book directory is restored even when the evaluation of form causes an error.

    The form (with-cbd str ev) is an event form if ev is an event form; thus, it may occur in books as well as encapsulate and progn events. See embedded-event-form. But in an event context, str must be a string, not merely an expression that evaluates to a string.

    Finally, note that Lisp compilers may vary in how they handle functions defined within the scope of with-cbd. If you find an example of slower execution caused by using with-cbd, please feel free to send it to the ACL2 implementors.