Function:
(defun hypothesis-syntax-p (term) (declare (xargs :guard t)) (let ((acl2::__function__ 'hypothesis-syntax-p)) (declare (ignorable acl2::__function__)) (or (and (atom term) (equal term nil)) (and (true-listp term) (car term) (not (cdr term)) (pseudo-termp (car term))) (and (true-listp term) (car term) (cadr term) (not (cdddr term)) (pseudo-termp (car term)) (equal (cadr term) ':hints) (hints-syntax-p (caddr term))))))
Theorem:
(defthm booleanp-of-hypothesis-syntax-p (b* ((syntax-good? (hypothesis-syntax-p term))) (booleanp syntax-good?)) :rule-classes :rewrite)
Theorem:
(defthm true-listp-of-caddr (implies (and (consp term) (consp (cdr term)) (true-listp (cddr term)) (equal (+ 2 (len (cddr term))) 3) (pseudo-termp (car term)) (equal (cadr term) :hints) (hints-syntax-p (caddr term))) (true-listp (caddr term))))
Function:
(defun hypothesis-syntax-fix (term) (declare (xargs :guard (hypothesis-syntax-p term))) (let ((acl2::__function__ 'hypothesis-syntax-fix)) (declare (ignorable acl2::__function__)) (mbe :logic (if (hypothesis-syntax-p term) term nil) :exec term)))
Theorem:
(defthm hypothesis-syntax-p-of-hypothesis-syntax-fix (b* ((fixed-term (hypothesis-syntax-fix term))) (hypothesis-syntax-p fixed-term)) :rule-classes :rewrite)
Function:
(defun hypothesis-syntax-equiv$inline (acl2::x acl2::y) (declare (xargs :guard (and (hypothesis-syntax-p acl2::x) (hypothesis-syntax-p acl2::y)))) (equal (hypothesis-syntax-fix acl2::x) (hypothesis-syntax-fix acl2::y)))
Theorem:
(defthm hypothesis-syntax-equiv-is-an-equivalence (and (booleanp (hypothesis-syntax-equiv x y)) (hypothesis-syntax-equiv x x) (implies (hypothesis-syntax-equiv x y) (hypothesis-syntax-equiv y x)) (implies (and (hypothesis-syntax-equiv x y) (hypothesis-syntax-equiv y z)) (hypothesis-syntax-equiv x z))) :rule-classes (:equivalence))
Theorem:
(defthm hypothesis-syntax-equiv-implies-equal-hypothesis-syntax-fix-1 (implies (hypothesis-syntax-equiv acl2::x x-equiv) (equal (hypothesis-syntax-fix acl2::x) (hypothesis-syntax-fix x-equiv))) :rule-classes (:congruence))
Theorem:
(defthm hypothesis-syntax-fix-under-hypothesis-syntax-equiv (hypothesis-syntax-equiv (hypothesis-syntax-fix acl2::x) acl2::x) :rule-classes (:rewrite :rewrite-quoted-constant))
Theorem:
(defthm equal-of-hypothesis-syntax-fix-1-forward-to-hypothesis-syntax-equiv (implies (equal (hypothesis-syntax-fix acl2::x) acl2::y) (hypothesis-syntax-equiv acl2::x acl2::y)) :rule-classes :forward-chaining)
Theorem:
(defthm equal-of-hypothesis-syntax-fix-2-forward-to-hypothesis-syntax-equiv (implies (equal acl2::x (hypothesis-syntax-fix acl2::y)) (hypothesis-syntax-equiv acl2::x acl2::y)) :rule-classes :forward-chaining)
Theorem:
(defthm hypothesis-syntax-equiv-of-hypothesis-syntax-fix-1-forward (implies (hypothesis-syntax-equiv (hypothesis-syntax-fix acl2::x) acl2::y) (hypothesis-syntax-equiv acl2::x acl2::y)) :rule-classes :forward-chaining)
Theorem:
(defthm hypothesis-syntax-equiv-of-hypothesis-syntax-fix-2-forward (implies (hypothesis-syntax-equiv acl2::x (hypothesis-syntax-fix acl2::y)) (hypothesis-syntax-equiv acl2::x acl2::y)) :rule-classes :forward-chaining)
Function:
(defun hypothesis-lst-syntax-p (term) (declare (xargs :guard t)) (let ((acl2::__function__ 'hypothesis-lst-syntax-p)) (declare (ignorable acl2::__function__)) (b* (((if (atom term)) (equal term nil)) ((cons first rest) term)) (and (hypothesis-syntax-p first) (hypothesis-lst-syntax-p rest)))))
Theorem:
(defthm booleanp-of-hypothesis-lst-syntax-p (b* ((syntax-good? (hypothesis-lst-syntax-p term))) (booleanp syntax-good?)) :rule-classes :rewrite)
Function:
(defun hypothesis-lst-syntax-fix (term) (declare (xargs :guard (hypothesis-lst-syntax-p term))) (let ((acl2::__function__ 'hypothesis-lst-syntax-fix)) (declare (ignorable acl2::__function__)) (mbe :logic (if (consp term) (cons (hypothesis-syntax-fix (car term)) (hypothesis-lst-syntax-fix (cdr term))) nil) :exec term)))
Theorem:
(defthm hypothesis-lst-syntax-p-of-hypothesis-lst-syntax-fix (b* ((fixed-term (hypothesis-lst-syntax-fix term))) (hypothesis-lst-syntax-p fixed-term)) :rule-classes :rewrite)
Function:
(defun hypothesis-lst-syntax-equiv$inline (acl2::x acl2::y) (declare (xargs :guard (and (hypothesis-lst-syntax-p acl2::x) (hypothesis-lst-syntax-p acl2::y)))) (equal (hypothesis-lst-syntax-fix acl2::x) (hypothesis-lst-syntax-fix acl2::y)))
Theorem:
(defthm hypothesis-lst-syntax-equiv-is-an-equivalence (and (booleanp (hypothesis-lst-syntax-equiv x y)) (hypothesis-lst-syntax-equiv x x) (implies (hypothesis-lst-syntax-equiv x y) (hypothesis-lst-syntax-equiv y x)) (implies (and (hypothesis-lst-syntax-equiv x y) (hypothesis-lst-syntax-equiv y z)) (hypothesis-lst-syntax-equiv x z))) :rule-classes (:equivalence))
Theorem:
(defthm hypothesis-lst-syntax-equiv-implies-equal-hypothesis-lst-syntax-fix-1 (implies (hypothesis-lst-syntax-equiv acl2::x x-equiv) (equal (hypothesis-lst-syntax-fix acl2::x) (hypothesis-lst-syntax-fix x-equiv))) :rule-classes (:congruence))
Theorem:
(defthm hypothesis-lst-syntax-fix-under-hypothesis-lst-syntax-equiv (hypothesis-lst-syntax-equiv (hypothesis-lst-syntax-fix acl2::x) acl2::x) :rule-classes (:rewrite :rewrite-quoted-constant))
Theorem:
(defthm equal-of-hypothesis-lst-syntax-fix-1-forward-to-hypothesis-lst-syntax-equiv (implies (equal (hypothesis-lst-syntax-fix acl2::x) acl2::y) (hypothesis-lst-syntax-equiv acl2::x acl2::y)) :rule-classes :forward-chaining)
Theorem:
(defthm equal-of-hypothesis-lst-syntax-fix-2-forward-to-hypothesis-lst-syntax-equiv (implies (equal acl2::x (hypothesis-lst-syntax-fix acl2::y)) (hypothesis-lst-syntax-equiv acl2::x acl2::y)) :rule-classes :forward-chaining)
Theorem:
(defthm hypothesis-lst-syntax-equiv-of-hypothesis-lst-syntax-fix-1-forward (implies (hypothesis-lst-syntax-equiv (hypothesis-lst-syntax-fix acl2::x) acl2::y) (hypothesis-lst-syntax-equiv acl2::x acl2::y)) :rule-classes :forward-chaining)
Theorem:
(defthm hypothesis-lst-syntax-equiv-of-hypothesis-lst-syntax-fix-2-forward (implies (hypothesis-lst-syntax-equiv acl2::x (hypothesis-lst-syntax-fix acl2::y)) (hypothesis-lst-syntax-equiv acl2::x acl2::y)) :rule-classes :forward-chaining)