Logic form of ipasir-init. See ipasir for usage.
(ipasir-init$a solver state) → (mv new-solver new-state)
Function:
(defun ipasir-init$a (solver state) (declare (xargs :stobjs (state))) (declare (xargs :guard (ipasir$a-p solver))) (declare (xargs :guard (eq (ipasir-get-status$a solver) :undef))) (let ((__function__ 'ipasir-init$a)) (declare (ignorable __function__)) (b* (((ipasir$a solver)) ((mv & initval state) (read-acl2-oracle state))) (mv (make-ipasir$a :status :input :callback-count 0 :history (cons (cons ':init (cons initval 'nil)) solver.history)) state))))
Theorem:
(defthm ipasir$a-p-of-ipasir-init$a.new-solver (b* (((mv ?new-solver ?new-state) (ipasir-init$a solver state))) (ipasir$a-p new-solver)) :rule-classes :rewrite)
Theorem:
(defthm return-type-of-ipasir-init$a.new-state (b* (((mv ?new-solver ?new-state) (ipasir-init$a solver state))) (equal new-state (mv-nth 2 (read-acl2-oracle state)))) :rule-classes :rewrite)
Theorem:
(defthm ipasir-init$a-status (b* (((mv ?new-solver ?new-state) (ipasir-init$a solver state))) (equal (ipasir$a->status new-solver) :input)))
Theorem:
(defthm ipasir-init$a-formula (b* (((mv ?new-solver ?new-state) (ipasir-init$a solver state))) (equal (ipasir$a->formula new-solver) nil)))
Theorem:
(defthm ipasir-init$a-assumption (b* (((mv ?new-solver ?new-state) (ipasir-init$a solver state))) (equal (ipasir$a->assumption new-solver) nil)))
Theorem:
(defthm ipasir-init$a-new-clause (b* (((mv ?new-solver ?new-state) (ipasir-init$a solver state))) (equal (ipasir$a->new-clause new-solver) nil)))
Theorem:
(defthm ipasir-init$a-of-ipasir$a-fix-solver (equal (ipasir-init$a (ipasir$a-fix solver) state) (ipasir-init$a solver state)))
Theorem:
(defthm ipasir-init$a-ipasir$a-equiv-congruence-on-solver (implies (ipasir$a-equiv solver solver-equiv) (equal (ipasir-init$a solver state) (ipasir-init$a solver-equiv state))) :rule-classes :congruence)