Function:
(defun fraig-classes-maybe-delete-class (delete-class-on-fail node classes fraig-stats) (declare (xargs :stobjs (classes fraig-stats))) (declare (xargs :guard (and (natp delete-class-on-fail) (natp node)))) (declare (xargs :guard (and (< node (classes-size classes)) (classes-wellformed classes)))) (let ((__function__ 'fraig-classes-maybe-delete-class)) (declare (ignorable __function__)) (b* (((when (zp delete-class-on-fail)) (mv classes fraig-stats)) (head (node-head node classes)) ((when (and (eql 0 head) (eql 1 delete-class-on-fail))) (mv classes fraig-stats)) ((mv classes ndeleted) (classes-delete-class-aux head 0 classes)) (fraig-stats (update-fraig-class-lits-deleted (+ ndeleted (fraig-class-lits-deleted fraig-stats)) fraig-stats))) (mv classes fraig-stats))))
Theorem:
(defthm classes-wellformed-of-fraig-classes-maybe-delete-class (b* (((mv ?new-classes ?new-fraig-stats) (fraig-classes-maybe-delete-class delete-class-on-fail node classes fraig-stats))) (implies (classes-wellformed classes) (classes-wellformed new-classes))))
Theorem:
(defthm classes-size-of-fraig-classes-maybe-delete-class (b* (((mv ?new-classes ?new-fraig-stats) (fraig-classes-maybe-delete-class delete-class-on-fail node classes fraig-stats))) (equal (classes-size new-classes) (classes-size classes))))
Theorem:
(defthm fraig-classes-maybe-delete-class-of-nfix-delete-class-on-fail (equal (fraig-classes-maybe-delete-class (nfix delete-class-on-fail) node classes fraig-stats) (fraig-classes-maybe-delete-class delete-class-on-fail node classes fraig-stats)))
Theorem:
(defthm fraig-classes-maybe-delete-class-nat-equiv-congruence-on-delete-class-on-fail (implies (nat-equiv delete-class-on-fail delete-class-on-fail-equiv) (equal (fraig-classes-maybe-delete-class delete-class-on-fail node classes fraig-stats) (fraig-classes-maybe-delete-class delete-class-on-fail-equiv node classes fraig-stats))) :rule-classes :congruence)
Theorem:
(defthm fraig-classes-maybe-delete-class-of-nfix-node (equal (fraig-classes-maybe-delete-class delete-class-on-fail (nfix node) classes fraig-stats) (fraig-classes-maybe-delete-class delete-class-on-fail node classes fraig-stats)))
Theorem:
(defthm fraig-classes-maybe-delete-class-nat-equiv-congruence-on-node (implies (nat-equiv node node-equiv) (equal (fraig-classes-maybe-delete-class delete-class-on-fail node classes fraig-stats) (fraig-classes-maybe-delete-class delete-class-on-fail node-equiv classes fraig-stats))) :rule-classes :congruence)