Sets an error flag in the FGL interpreter state so that it will abort the current rewrite rule application attempt.
(abort-current-rewrite &key (interp-st 'interp-st)) → new-interp-st
Can be run by fancy-ev, e.g. inside FGL's syntax-interp or syntax-bind as well as in
Function:
(defun abort-current-rewrite-fn (interp-st) (declare (xargs :stobjs (interp-st))) (declare (xargs :guard t)) (let ((__function__ 'abort-current-rewrite)) (declare (ignorable __function__)) (if (interp-st->errmsg interp-st) interp-st (update-interp-st->errmsg :abort-rewrite interp-st))))
Theorem:
(defthm interp-st-get-of-abort-current-rewrite (b* ((?new-interp-st (abort-current-rewrite-fn interp-st))) (implies (member (interp-st-field-fix key) *logically-relevant-interp-st-fields*) (equal (interp-st-get key new-interp-st) (interp-st-get key interp-st)))))
Theorem:
(defthm interp-st-bfrs-ok-of-abort-current-rewrite (b* ((?new-interp-st (abort-current-rewrite-fn interp-st))) (implies (interp-st-bfrs-ok interp-st) (interp-st-bfrs-ok new-interp-st))))
Theorem:
(defthm errmsg-of-abort-current-rewrite (b* ((?new-interp-st (abort-current-rewrite-fn interp-st))) (implies (interp-st->errmsg interp-st) (equal (interp-st->errmsg new-interp-st) (interp-st->errmsg interp-st)))))
Theorem:
(defthm interp-st->errmsg-equal-unreachable-of-abort-current-rewrite (b* ((?new-interp-st (abort-current-rewrite-fn interp-st))) (implies (not (equal (interp-st->errmsg interp-st) :unreachable)) (not (equal (interp-st->errmsg new-interp-st) :unreachable)))))