Recognizer for proof-obligation structures.
(proof-obligationp x) → *
Function:
(defun proof-obligationp (x) (declare (xargs :guard t)) (let ((__function__ 'proof-obligationp)) (declare (ignorable __function__)) (and (mbe :logic (and (alistp x) (equal (strip-cars x) '(variables hypotheses conclusion source-expression))) :exec (fty::alist-with-carsp x '(variables hypotheses conclusion source-expression))) (b* ((variables (cdr (std::da-nth 0 x))) (hypotheses (cdr (std::da-nth 1 x))) (conclusion (cdr (std::da-nth 2 x))) (source-expression (cdr (std::da-nth 3 x)))) (and (typed-variable-listp variables) (obligation-hyp-listp hypotheses) (expressionp conclusion) (expressionp source-expression))))))
Theorem:
(defthm consp-when-proof-obligationp (implies (proof-obligationp x) (consp x)) :rule-classes :compound-recognizer)