• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
    • Debugging
    • Community
    • Std
    • Proof-automation
      • Gl
      • Witness-cp
      • Ccg
      • Install-not-normalized
      • Rewrite$
      • Fgl
        • Fgl-rewrite-rules
        • Fgl-function-mode
        • Fgl-object
        • Fgl-solving
        • Fgl-handling-if-then-elses
        • Fgl-counterexamples
        • Fgl-getting-bits-from-objects
        • Fgl-primitive-and-meta-rules
        • Fgl-interpreter-overview
        • Fgl-correctness-of-binding-free-variables
        • Fgl-debugging
        • Fgl-testbenches
        • Def-fgl-boolean-constraint
        • Fgl-stack
        • Def-fgl-param-thm
        • Fgl-rewrite-tracing
          • Fgl-trace
          • Fgl-advanced-tracing
          • Fgl-modify-current-tracespec
          • Fgl-trace*
          • Trace-repl
          • Fgl-untrace*
          • Fgl-untrace-all*
          • Fgl-untrace
          • Fgl-delete-current-tracespec
          • Fgl-untrace-all
        • Def-fgl-thm
        • Fgl-fast-alist-support
        • Fgl-array-support
        • Advanced-equivalence-checking-with-fgl
        • Fgl-fty-support
        • Fgl-internals
      • Removable-runes
      • Efficiency
      • Rewrite-bounds
      • Bash
      • Def-dag-measure
      • Bdd
      • Remove-hyps
      • Contextual-rewriting
      • Simp
      • Rewrite$-hyps
      • Bash-term-to-dnf
      • Use-trivial-ancestors-check
      • Minimal-runes
      • Clause-processor-tools
      • Fn-is-body
      • Without-subsumption
      • Rewrite-equiv-hint
      • Def-bounds
      • Rewrite$-context
      • Try-gl-concls
      • Hint-utils
    • Macro-libraries
    • ACL2
    • Interfacing-tools
    • Hardware-verification
    • Software-verification
    • Math
    • Testing-utilities
  • Fgl

Fgl-rewrite-tracing

How to trace the FGL rewriter

FGL allows attempts at applying rewrite rules to be traced using a configurable tracing function. By default, a basic tracing function is provided such that the user only needs to set up some state global variables to enable and use it.

Basic Tracing

The default tracing implementation may be activated by setting the following state globals:

;; Enable the tracing function
(assign :fgl-trace-rewrites t)

;; Alist whose keys are the rules that will be traced
(assign :fgl-trace-rule-alist '(((:rewrite fgl::fgl-lognot))))

;; Evisc tuple for trace output
(assign :fgl-trace-evisc-tuple (evisc-tuple 8 12 nil nil))

Advanced Tracing

More specific tracing behavior can be specified for each rule via the trace-rule-alist. The fgl-trace macro offers a more user-friendly interface for this than direct manipulation of the trace-rule-alist; see that topic for options, as well as fgl-advanced-tracing.

Subtopics

Fgl-trace
Trace an FGL rule.
Fgl-advanced-tracing
List of advanced things you can do while tracing a rewrite rule in FGL
Fgl-modify-current-tracespec
When invoked from a trace expression, change the trace processing of the current rule invocation.
Fgl-trace*
Add a trace for an FGL rule during symbolic execution
Trace-repl
Enter a read-eval-print loop to explore the FGL state and modify traces.
Fgl-untrace*
Untrace an FGL rule during symbolic execution
Fgl-untrace-all*
Untrace all FGL rules during symbolic execution
Fgl-untrace
Untrace an FGL rule
Fgl-delete-current-tracespec
When invoked from a trace expression, stop further trace processing of the current rule invocation.
Fgl-untrace-all
Remove all trace settings for FGL rules