• 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
      • Operational-semantics
      • Real
      • Start-here
      • Debugging
      • Miscellaneous
      • Output-controls
      • Macros
      • Interfacing-tools
        • Io
          • Fmt
          • Msg
          • Cw
          • Set-evisc-tuple
            • Set-brr-evisc-tuple
          • Set-iprint
          • Print-control
          • Read-file-into-string
          • Std/io
          • Msgp
          • Printing-to-strings
          • Evisc-tuple
          • Output-controls
          • Observation
          • *standard-co*
          • Ppr-special-syms
          • Standard-oi
          • Standard-co
          • Without-evisc
          • Serialize
          • Output-to-file
          • Fmt-to-comment-window
          • Princ$
          • Character-encoding
          • Open-output-channel!
          • Cw-print-base-radix
          • Set-print-case
          • Set-print-base
          • Print-object$
          • Extend-pathname
          • Print-object$+
          • Fmx-cw
          • Set-print-radix
          • Set-fmt-hard-right-margin
          • File-write-date$
          • Proofs-co
          • Set-print-base-radix
          • Print-base-p
          • *standard-oi*
          • Wof
          • File-length$
          • Fms!-lst
          • Delete-file$
          • *standard-ci*
          • Write-list
          • Trace-co
          • Fmt!
          • Fms
          • Cw!
          • Fmt-to-comment-window!
          • Fms!
          • Eviscerate-hide-terms
          • Fmt1!
          • Fmt-to-comment-window!+
          • Read-file-into-byte-array-stobj
          • Fmt1
          • Fmt-to-comment-window+
          • Cw-print-base-radix!
          • Read-file-into-character-array-stobj
          • Fmx
          • Cw!+
          • Read-objects-from-book
          • Newline
          • Cw+
          • Probe-file
          • Write-objects-to-file!
          • Write-objects-to-file
          • Read-objects-from-file
          • Read-object-from-file
          • Read-file-into-byte-list
          • Set-fmt-soft-right-margin
          • Read-file-into-character-list
          • Io-utilities
        • Defttag
        • Sys-call
        • Save-exec
        • Quicklisp
        • Std/io
        • Oslib
        • Bridge
        • Clex
        • Tshell
        • Unsound-eval
        • Hacker
        • ACL2s-interface
        • Startup-banner
        • Command-line
    • Interfacing-tools
      • Io
        • Fmt
        • Msg
        • Cw
        • Set-evisc-tuple
          • Set-brr-evisc-tuple
        • Set-iprint
        • Print-control
        • Read-file-into-string
        • Std/io
        • Msgp
        • Printing-to-strings
        • Evisc-tuple
        • Output-controls
        • Observation
        • *standard-co*
        • Ppr-special-syms
        • Standard-oi
        • Standard-co
        • Without-evisc
        • Serialize
        • Output-to-file
        • Fmt-to-comment-window
        • Princ$
        • Character-encoding
        • Open-output-channel!
        • Cw-print-base-radix
        • Set-print-case
        • Set-print-base
        • Print-object$
        • Extend-pathname
        • Print-object$+
        • Fmx-cw
        • Set-print-radix
        • Set-fmt-hard-right-margin
        • File-write-date$
        • Proofs-co
        • Set-print-base-radix
        • Print-base-p
        • *standard-oi*
        • Wof
        • File-length$
        • Fms!-lst
        • Delete-file$
        • *standard-ci*
        • Write-list
        • Trace-co
        • Fmt!
        • Fms
        • Cw!
        • Fmt-to-comment-window!
        • Fms!
        • Eviscerate-hide-terms
        • Fmt1!
        • Fmt-to-comment-window!+
        • Read-file-into-byte-array-stobj
        • Fmt1
        • Fmt-to-comment-window+
        • Cw-print-base-radix!
        • Read-file-into-character-array-stobj
        • Fmx
        • Cw!+
        • Read-objects-from-book
        • Newline
        • Cw+
        • Probe-file
        • Write-objects-to-file!
        • Write-objects-to-file
        • Read-objects-from-file
        • Read-object-from-file
        • Read-file-into-byte-list
        • Set-fmt-soft-right-margin
        • Read-file-into-character-list
        • Io-utilities
      • Defttag
      • Sys-call
      • Save-exec
      • Quicklisp
      • Std/io
      • Oslib
      • Bridge
      • Clex
      • Tshell
      • Unsound-eval
      • Hacker
      • ACL2s-interface
      • Startup-banner
      • Command-line
    • Hardware-verification
    • Software-verification
    • Math
    • Testing-utilities
  • Io

Set-evisc-tuple

Control suppression of details when printing

ACL2 output is generally printed in full. However, ACL2 can be directed to abbreviate, or ``eviscerate'', objects before printing them, through the use of a so-called ``evisc-tuple''. See evisc-tuple for a discussion of evisc-tuples. The utility set-evisc-tuple modifies certain global evisc-tuples, as explained below, to affect the extent to which ACL2 eviscerates objects during printing, for example during proof output or when printing top-level evaluation results.

General Form:
(set-evisc-tuple evisc-tuple  ; a legal evisc-tuple, or :DEFAULT
                :iprint val   ; one of *iprint-actions*
                :sites sites) ; either :ALL, or an element or a subset of
                              ;   the list of legal sites (see below)

where the value of :iprint is passed to set-iprint, :sites :all abbreviates :sites '(:term :ld :trace :abbrev :gag-mode :brr), and other documentation is provided below. Note that all arguments are evaluated.

See without-evisc for how to avoid evisceration for ACL2 output.

The following example illustrates an invocation of set-evisc-tuple that limits the print-level to 3 — only three descents into list structures are permitted before eviscerating a subterm — and limits the print-length to 4 — only the first four elements of any list structure will be printed.

ACL2 !>(set-evisc-tuple (evisc-tuple 3   ; print-level
                                     4   ; print-length
                                     nil ; alist
                                     nil ; hiding-cars
                                     )
                        :iprint :same ; better yet, T
                        :sites :all)
 (:TERM :LD :TRACE :ABBREV ...)
ACL2 !>'((a b ((c d)) e f g) u v w x y)
((A B (#) E ...) U V W ...)
ACL2 !>

We recommend however using :iprint t so that eviscerated terms may be read back in (see set-iprint), as shown here:

ACL2 !>(set-evisc-tuple (evisc-tuple 3   ; print-level
                                     4   ; print-length
                                     nil ; alist
                                     nil ; hiding-cars
                                     )
                        :iprint t
                        :sites :all)

ACL2 Observation in SET-EVISC-TUPLE:  Iprinting has been enabled.
 (:TERM :LD :TRACE :ABBREV . #@1#)
ACL2 !>(without-evisc '(:TERM :LD :TRACE :ABBREV . #@1#))
(:TERM :LD
       :TRACE :ABBREV
       :GAG-MODE :BRR)
ACL2 !>

Indeed, the :iprint argument is required as a reminder to the user to consider that issue, unless iprinting has been enabled at least once. If :sites or a required :iprint argument is omitted, however, ACL2 will query the user for the missing arguments rather than causing an error.

ACL2 eviscerates by default only in a few cases, primarily in informational messages for errors, warnings, and queries (i.e., in the :EVISC case below), and in response to break-rewrite commands. Users can modify the default behavior by supplying a suitable argument to set-evisc-tuple. The argument may be :default, which denotes the evisceration provided when ACL2 starts up. Otherwise that argument is an evisc-tuple, which is either nil (no evisceration) or as described above. Moreover, there are six evisc-tuple ``evisceration contexts'', each with its own evisceration control. The value returned by set-evisc-tuple indicates the evisceration contexts whose evisc-tuple has been set. The evisceration contexts are as follows, all of which use a default value of nil for the hiding-cars. Accessors are also shown for retrieving the corresponding evisc-tuple.

  • :TERM — used for printing terms. The accessor is (term-evisc-tuple flg state), where flg is ignored if set-evisc-tuple has been called for :term with value other than :default, and otherwise (hence initially): a flg of nil indicates an evisc-tuple of nil, and otherwise the term-evisc-tuple has a print-level of 3 and print-length of 4.
  • :ABBREV — used for printing informational messages for errors, warnings, and queries. Initially, the alist abbreviates the ACL2 world, print-level is 5, and print-level is 7. The accessor is (abbrev-evisc-tuple state).
  • :BRR — used for output from brr-commands issued in the break-rewrite loop. When the value is :DEFAULT then the effective value of this evisc-tuple is the :TERM evisc-tuple with flg = t (see above). Also see brr-evisc-tuple.
  • :GAG-MODE — used for printing induction schemes (and perhaps, in the future, for other printing) when gag-mode is on. If gag-mode is off, the value used for this evisc-tuple is (term-evisc-tuple nil state). But if gag-mode is on (i.e., (gag-mode) evaluates to a non-nil value), then with one exception, the value is an evisc-tuple or nil, to be used in gag-mode for printing of induction schemes and, during proofs, the ``The non-trivial part of the guard conjecture''. The exceptional value is t, which indicates that in gag-mode, no printing of induction schemes should be and the guard conjecture should be printed using (term-evisc-tuple t state). The accessor is (gag-mode-evisc-tuple state).
  • :LD — used by the ACL2 read-eval-print loop. The accessor is (ld-evisc-tuple state).
  • :TRACE — used for printing trace output. No accessor is available (though in raw Lisp, (trace-evisc-tuple) returns the trace-evisc-tuple).

Each context ectx also has an updater, (set-ectx-evisc-tuple val state), where val is a legal value for set-evisc-tuple as described above: :default or an evisc-tuple (possibly nil).

Subtopics

Set-brr-evisc-tuple
Set the brr-evisc-tuple