(true-set-equiv list1 list2) → p
Function:
(defun true-set-equiv (list1 list2) (declare (xargs :guard (and (true-listp list1) (true-listp list2)))) (let ((acl2::__function__ 'true-set-equiv)) (declare (ignorable acl2::__function__)) (if (equal (true-listp list1) (true-listp list2)) (acl2::set-equiv list1 list2) nil)))
Theorem:
(defthm booleanp-of-true-set-equiv (b* ((p (true-set-equiv list1 list2))) (booleanp p)) :rule-classes :rewrite)
Theorem:
(defthm set-equiv-if-true-set-equiv (b* ((p (true-set-equiv list1 list2))) (implies p (acl2::set-equiv list1 list2))) :rule-classes :rewrite)
Theorem:
(defthm subsetp-if-true-set-equiv (b* ((p (true-set-equiv list1 list2))) (implies p (and (subsetp list1 list2 :test 'equal) (subsetp list2 list1 :test 'equal)))) :rule-classes :rewrite)
Theorem:
(defthm true-set-equiv-is-for-true-lists (b* ((p (true-set-equiv list1 list2))) (implies p (equal (true-listp list1) (true-listp list2)))) :rule-classes :rewrite)