The trusted clause processor
Theorem:
(defthm true-listp-smt-prove-stub (true-listp (smt-prove-stub term smtlink-hint state)) :rule-classes :type-prescription)
Function:
(defun smt-trusted-cp-main (cl smtlink-hint custom-p state) (declare (xargs :stobjs (state))) (declare (xargs :guard (and (pseudo-term-listp cl) (booleanp custom-p)))) (declare (xargs :stobjs state)) (let ((acl2::__function__ 'smt-trusted-cp-main)) (declare (ignorable acl2::__function__)) (b* ((smt-cnf (if custom-p (custom-smt-cnf) (default-smt-cnf))) (smtlink-hint (change-smtlink-hint smtlink-hint :smt-cnf smt-cnf)) ((mv res smt-precond state) (smt-prove-stub (disjoin cl) smtlink-hint state)) (subgoal-lst (cons (cons '(hint-please '(:in-theory (enable magic-fix hint-please type-hyp) :expand ((:free (x) (hide x))))) (cons smt-precond (cons (disjoin cl) 'nil))) 'nil))) (if res (prog2$ (cw "Proved!~%") (mv nil subgoal-lst state)) (mv (cons "NOTE: Unable to prove goal with ~ SMT-trusted-cp and indicated hint." nil) (list cl) state)))))
Function:
(defun smt-trusted-cp (cl smtlink-hint state) (declare (xargs :stobjs (state))) (declare (xargs :guard (and (pseudo-term-listp cl) (smtlink-hint-p smtlink-hint)))) (declare (xargs :stobjs state)) (let ((acl2::__function__ 'smt-trusted-cp)) (declare (ignorable acl2::__function__)) (prog2$ (cw "Using default SMT-trusted-cp...~%") (smt-trusted-cp-main cl smtlink-hint nil state))))
Function:
(defun smt-trusted-cp-custom (cl smtlink-hint state) (declare (xargs :stobjs (state))) (declare (xargs :guard (and (pseudo-term-listp cl) (smtlink-hint-p smtlink-hint)))) (declare (xargs :stobjs state)) (let ((acl2::__function__ 'smt-trusted-cp-custom)) (declare (ignorable acl2::__function__)) (prog2$ (cw "Using custom SMT-trusted-cp...~%") (smt-trusted-cp-main cl smtlink-hint t state))))