System-level algorithms that users can modify with attachments
This topic concerns advanced methods for modifying the behavior of ACL2. See defattach for some relevant background.
If you evaluate the form
Here are two functions that are useful for attaching to many attachable 0-ary system functions.
Function:
(defun constant-t-function-arity-0 nil (declare (xargs :guard t)) t)
Function:
(defun constant-nil-function-arity-0 nil (declare (xargs :guard t)) nil)
To see how to use one of these functions, consider the following example of
a pair
(ASSUME-TRUE-FALSE-AGGRESSIVE-P . CONSTANT-NIL-FUNCTION-ARITY-0)
Here is how we can make the so-called ``assume-true-false'' algorithm more aggressive; see assume-true-false-aggressive-p.
(defattach-system assume-true-false-aggressive-p constant-t-function-arity-0)
The following brief explanations are intentionally brief. We expect that those who want to use such system attachments are comfortable as “system programmers”, so that the brief documentation below is sufficient for getting started. Perusal of the ACL2 source code and its comments can fill in details as needed.
Also see efficiency for further discussion on making system attachments that modify ACL2's default behavior.
Built-in attachment:
[Undocumented: low-level system utility]
Built-in attachment:
Documentation: See make-event.
Built-in attachment:
Documentation: Backchaining control; see use-trivial-ancestors-check. Source function
Built-in attachment:
[Undocumented: low-level system utility]
Built-in attachment:
Documentation: See assume-true-false-aggressive-p.
Built-in attachment:
[Undocumented: low-level system utility]
Built-in attachment:
Documentation: Attach to
Built-in attachment:
Documentation: See with-brr-data.
Built-in attachment:
Documentation: See with-brr-data.
Built-in attachment:
Documentation: Attach to a constant function that returns a natural number (default
Built-in attachment:
Documentation: See heavy-linear-p.
Built-in attachment:
Documentation: See hide.
Built-in attachment:
Documentation: See free-variables-type-prescription.
Built-in attachment:
Documentation: See set-print-clause-ids.
Built-in attachment:
Documentation: See quick-and-dirty-subsumption-replacement-step.
Built-in attachment:
[Undocumented: low-level system utility]
Built-in attachment:
Documentation: See guard-holders.
Built-in attachment:
Documentation: See guard-holders.
Built-in attachment:
Documentation: See remove-trivial-equivalences-enabled-p.
Built-in attachment:
Documentation: See rewrite-if-avoid-swap.
Built-in attachment:
[Undocumented: low-level system utility]
Built-in attachment:
[Undocumented: low-level system utility]
Built-in attachment:
[Undocumented: low-level system utility]
Built-in attachment:
Documentation: See ld-history.
Built-in attachment:
Documentation: See theories-and-primitives.
Built-in attachment:
Documentation: Heuristic for discarding rewriter result with
“too many IFs”. Defeat by
attaching
Built-in attachment:
Documentation: Heuristic for skipping rewrite when unrewritten
result has “too many IFs”. Defeat
by attaching
Built-in attachment:
Documentation: See lambda$.
Built-in attachment:
Documentation: See with-brr-data.
Built-in attachment:
Documentation: See with-brr-data.
Built-in attachment:
Documentation: Heuristic for treating
Built-in attachment:
[Undocumented: low-level system utility]
Built-in attachment:
[Undocumented: low-level system utility]