Recognize
Function:
(defun vl-qmark-p (x) (declare (xargs :guard (vl-expr-p x))) (let ((__function__ 'vl-qmark-p)) (declare (ignorable __function__)) (b* (((when (vl-fast-atom-p x)) (mv nil nil nil)) ((unless (and (eq (vl-nonatom->op x) :vl-qmark) (mbt (equal (len (vl-nonatom->args x)) 3)))) (mv nil nil nil)) ((list a b c) (vl-nonatom->args x))) (mv a b c))))
Theorem:
(defthm return-type-of-vl-qmark-p.a (b* (((mv ?a ?b ?c) (vl-qmark-p x))) (equal (vl-expr-p a) (if a t nil))) :rule-classes :rewrite)
Theorem:
(defthm return-type-of-vl-qmark-p.b (b* (((mv ?a ?b ?c) (vl-qmark-p x))) (equal (vl-expr-p b) (if a t nil))) :rule-classes :rewrite)
Theorem:
(defthm return-type-of-vl-qmark-p.c (b* (((mv ?a ?b ?c) (vl-qmark-p x))) (equal (vl-expr-p c) (if a t nil))) :rule-classes :rewrite)
Theorem:
(defthm vl-qmark-p-of-vl-expr-fix-x (equal (vl-qmark-p (vl-expr-fix x)) (vl-qmark-p x)))
Theorem:
(defthm vl-qmark-p-vl-expr-equiv-congruence-on-x (implies (vl-expr-equiv x x-equiv) (equal (vl-qmark-p x) (vl-qmark-p x-equiv))) :rule-classes :congruence)