Logic form of ipasir-add-lit. See ipasir for usage.
(ipasir-add-lit$a solver lit) → new-solver
Function:
(defun ipasir-add-lit$a (solver lit) (declare (xargs :guard (and (ipasir$a-p solver) (litp lit)))) (declare (xargs :guard (not (eq (ipasir-get-status$a solver) :undef)))) (let ((__function__ 'ipasir-add-lit$a)) (declare (ignorable __function__)) (b* (((ipasir$a solver)) (- (mbe :logic nil :exec (and (not (signed-byte-p 32 lit)) (raise "Out of bounds literal: ~x0" lit))))) (change-ipasir$a solver :new-clause (cons (lit-fix lit) solver.new-clause) :status :input :history (cons (cons ':add (cons (lit-fix lit) 'nil)) solver.history)))))
Theorem:
(defthm ipasir$a-p-of-ipasir-add-lit$a (b* ((new-solver (ipasir-add-lit$a solver lit))) (ipasir$a-p new-solver)) :rule-classes :rewrite)
Theorem:
(defthm status-of-ipasir-add-lit$a (b* ((?new-solver (ipasir-add-lit$a solver lit))) (equal (ipasir$a->status new-solver) :input)))
Theorem:
(defthm new-clause-of-ipasir-add-lit$a (b* ((?new-solver (ipasir-add-lit$a solver lit))) (equal (ipasir$a->new-clause new-solver) (cons (lit-fix lit) (ipasir$a->new-clause solver)))))
Theorem:
(defthm formula-of-ipasir-add-lit$a (b* ((?new-solver (ipasir-add-lit$a solver lit))) (equal (ipasir$a->formula new-solver) (ipasir$a->formula solver))))
Theorem:
(defthm assumption-of-ipasir-add-lit$a (b* ((?new-solver (ipasir-add-lit$a solver lit))) (equal (ipasir$a->assumption new-solver) (ipasir$a->assumption solver))))
Theorem:
(defthm ipasir-add-lit$a-of-ipasir$a-fix-solver (equal (ipasir-add-lit$a (ipasir$a-fix solver) lit) (ipasir-add-lit$a solver lit)))
Theorem:
(defthm ipasir-add-lit$a-ipasir$a-equiv-congruence-on-solver (implies (ipasir$a-equiv solver solver-equiv) (equal (ipasir-add-lit$a solver lit) (ipasir-add-lit$a solver-equiv lit))) :rule-classes :congruence)
Theorem:
(defthm ipasir-add-lit$a-of-lit-fix-lit (equal (ipasir-add-lit$a solver (lit-fix lit)) (ipasir-add-lit$a solver lit)))
Theorem:
(defthm ipasir-add-lit$a-lit-equiv-congruence-on-lit (implies (lit-equiv lit lit-equiv) (equal (ipasir-add-lit$a solver lit) (ipasir-add-lit$a solver lit-equiv))) :rule-classes :congruence)