• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
    • Debugging
      • Break-rewrite
      • Proof-builder
      • Accumulated-persistence
      • Cgen
      • Forward-chaining-reports
      • Proof-tree
      • Print-gv
      • Dmr
      • With-brr-data
      • Splitter
      • Guard-debug
      • Set-debugger-enable
      • Redo-flat
      • Time-tracker
      • Set-check-invariant-risk
      • Removable-runes
      • Efficiency
      • Explain-near-miss
      • Tail-biting
      • Failed-forcing
      • Sneaky
      • Invariant-risk
      • Failure
      • Measure-debug
      • Dead-events
      • Compare-objects
      • Prettygoals
      • Remove-hyps
      • Type-prescription-debugging
      • Pstack
      • Trace
        • Trace$
          • Trace*
          • Wet
          • Trace!
          • Break-on-error
          • Set-trace-evisc-tuple
          • Untrace$
          • Open-trace-file
          • Open-trace-file!
          • Close-trace-file
        • Set-register-invariant-risk
        • Walkabout
        • Disassemble$
        • Nil-goal
        • Cw-gstack
        • Set-guard-msg
        • Find-lemmas
        • Watch
        • Quick-and-dirty-subsumption-replacement-step
        • Profile-all
        • Profile-ACL2
        • Set-print-gv-defaults
        • Minimal-runes
        • Spacewalk
        • Try-gl-concls
        • Near-misses
      • 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
          • Break-rewrite
          • Proof-builder
          • Accumulated-persistence
          • Cgen
          • Forward-chaining-reports
          • Proof-tree
          • Print-gv
          • Dmr
          • With-brr-data
          • Splitter
          • Guard-debug
          • Set-debugger-enable
          • Redo-flat
          • Time-tracker
          • Set-check-invariant-risk
          • Removable-runes
          • Efficiency
          • Explain-near-miss
          • Tail-biting
          • Failed-forcing
          • Sneaky
          • Invariant-risk
          • Failure
          • Measure-debug
          • Dead-events
          • Compare-objects
          • Prettygoals
          • Remove-hyps
          • Type-prescription-debugging
          • Pstack
          • Trace
            • Trace$
              • Trace*
              • Wet
              • Trace!
              • Break-on-error
              • Set-trace-evisc-tuple
              • Untrace$
              • Open-trace-file
              • Open-trace-file!
              • Close-trace-file
            • Set-register-invariant-risk
            • Walkabout
            • Disassemble$
            • Nil-goal
            • Cw-gstack
            • Set-guard-msg
            • Find-lemmas
            • Watch
            • Quick-and-dirty-subsumption-replacement-step
            • Profile-all
            • Profile-ACL2
            • Set-print-gv-defaults
            • Minimal-runes
            • Spacewalk
            • Try-gl-concls
            • Near-misses
          • Miscellaneous
          • Output-controls
          • Macros
          • Interfacing-tools
        • Interfacing-tools
        • Hardware-verification
        • Software-verification
        • Math
        • Testing-utilities
      • Trace$

      Trace*

      Trace* is a beginner-friendly variant of trace$, the ACL2 tracing utility.

      See trace$ for more documentation and advanced functionality.

      Trace* should be used with :set-guard-checking :none and should not be used to trace built-in functions.

      The log below illustrates the differences between trace* and trace$:

      ACL2 p>
      (defun app (x y)
        (if (endp x)
          y
          (cons (car x) (app (cdr x) y))))
      ...
       APP
      ACL2 p>(trace$ app)
       ((APP))
      ACL2 p>(app (list 1 2) (list 3))
      1> (ACL2_*1*_ACL2::APP (1 2) (3))
        2> (ACL2_*1*_ACL2::APP (2) (3))
          3> (ACL2_*1*_ACL2::APP NIL (3))
          <3 (ACL2_*1*_ACL2::APP (3))
        <2 (ACL2_*1*_ACL2::APP (2 3))
      <1 (ACL2_*1*_ACL2::APP (1 2 3))
      (1 2 3)
      ACL2 p>(trace* app)
       (APP)
      ACL2 p>(app (list 1 2) (list 3))
      1> (APP (LIST 1 2) (LIST 3))
        2> (APP (LIST 2) (LIST 3))
          3> (APP NIL (LIST 3))
          <3 (APP NIL (LIST 3))
           = (LIST 3)
        <2 (APP (LIST 2) (LIST 3))
         = (LIST 2 3)
      <1 (APP (LIST 1 2) (LIST 3))
       = (LIST 1 2 3)
      (1 2 3)
      ACL2 p>