Filtering...

oracle-eval-real

books/tools/oracle-eval-real
other
(in-package "ACL2")
other
(defttag oracle-eval)
other
(remove-untouchable 'read-acl2-oracle t)
real-oracle-evalfunction
(defun real-oracle-eval
  (term alist state)
  (declare (xargs :guard t
      :stobjs state
      :guard-hints (("goal" :in-theory (enable read-acl2-oracle))))
    (ignorable term alist))
  (mv-let (err1 eval-error state)
    (read-acl2-oracle state)
    (mv-let (err2 evaluation state)
      (read-acl2-oracle state)
      (cond ((or err1 err2) (mv "Evaluation mysteriously failed (oracle empty)~%"
            nil
            state))
        (eval-error (mv eval-error nil state))
        (t (mv nil evaluation state))))))
state-p1-of-read-acl2-oracletheorem
(defthm state-p1-of-read-acl2-oracle
  (implies (state-p1 state)
    (state-p1 (mv-nth 2 (read-acl2-oracle state))))
  :hints (("Goal" :in-theory (enable read-acl2-oracle))))
state-p1-of-real-oracle-evaltheorem
(defthm state-p1-of-real-oracle-eval
  (implies (state-p1 state)
    (state-p1 (mv-nth 2 (real-oracle-eval term alist state)))))
in-theory
(in-theory (disable real-oracle-eval))
other
(progn! (set-raw-mode t)
  (defun real-oracle-eval
    (term alist state)
    (mv-let (erp translation-and-val state)
      (simple-translate-and-eval term
        alist
        '(state)
        "The given term"
        'real-oracle-eval
        (w state)
        state
        t)
      (if erp
        (mv erp nil state)
        (mv nil (cdr translation-and-val) state)))))