Filtering...

table-replay

books/tools/table-replay
other
(in-package "ACL2")
table-replay-initmacro
(defmacro table-replay-init
  (name)
  `(local (table table-replay-table ',NAME :init)))
replay-table-changesfunction
(defun replay-table-changes
  (name world)
  (declare (xargs :mode :program))
  (if (atom world)
    nil
    (let* ((entry (car world)) (entry-type (car entry)))
      (if (and (eq entry-type 'event-landmark)
          (eq (access-event-tuple-type (cddr entry)) 'table))
        (let* ((form (access-event-tuple-form (cddr entry))) (table-name (cadr form)))
          (cond ((eq name table-name) (cons form (replay-table-changes name (cdr world))))
            ((and (eq name 'table-replay-table)
               (equal (cadr form) (list 'quote name))
               (eq (caddr form) :init)) nil)
            (t (replay-table-changes name (cdr world)))))
        (replay-table-changes name (cdr world))))))
table-replaymacro
(defmacro table-replay
  (name)
  `(make-event (cons 'progn
      (reverse (replay-table-changes ',NAME (w state))))))