Identity function in execution; in the logic, ensures that the assumption field of the ipasir is empty, which it must be by the guard.
(ipasir-cancel-assumption ipasir) → new-ipasir
See ipasir-add-binary, particularly
Function:
(defun ipasir-cancel-assumption$inline (ipasir) (declare (xargs :stobjs (ipasir))) (declare (xargs :guard (not (ipasir-get-assumption ipasir)))) (let ((__function__ 'ipasir-cancel-assumption)) (declare (ignorable __function__)) (mbe :logic (non-exec (change-ipasir$a ipasir :assumption nil)) :exec ipasir)))
Theorem:
(defthm ipasir-cancel-assumption-status (b* ((?new-ipasir (ipasir-cancel-assumption$inline ipasir))) (equal (ipasir$a->status new-ipasir) (ipasir$a->status ipasir))))
Theorem:
(defthm ipasir-cancel-assumption-formula (b* ((?new-ipasir (ipasir-cancel-assumption$inline ipasir))) (equal (ipasir$a->formula new-ipasir) (ipasir$a->formula ipasir))))
Theorem:
(defthm ipasir-cancel-assumption-assumption (b* ((?new-ipasir (ipasir-cancel-assumption$inline ipasir))) (not (ipasir$a->assumption new-ipasir))))
Theorem:
(defthm ipasir-cancel-assumption-new-clause (b* ((?new-ipasir (ipasir-cancel-assumption$inline ipasir))) (equal (ipasir$a->new-clause new-ipasir) (ipasir$a->new-clause ipasir))))