Lift assertion to lists.
(assertion-list-from asgs constrs) → asrs
Function:
(defun assertion-list-from (asgs constrs) (declare (xargs :guard (and (assignment-listp asgs) (constraint-listp constrs)))) (declare (xargs :guard (equal (len asgs) (len constrs)))) (let ((__function__ 'assertion-list-from)) (declare (ignorable __function__)) (cond ((endp asgs) nil) ((endp constrs) (acl2::impossible)) (t (cons (assertion (car asgs) (car constrs)) (assertion-list-from (cdr asgs) (cdr constrs)))))))
Theorem:
(defthm assertion-listp-of-assertion-list-from (b* ((asrs (assertion-list-from asgs constrs))) (assertion-listp asrs)) :rule-classes :rewrite)
Theorem:
(defthm assertion-list->asg-list-of-assertion-list-from (implies (equal (len asgs) (len constrs)) (equal (assertion-list->asg-list (assertion-list-from asgs constrs)) (assignment-list-fix asgs))))
Theorem:
(defthm assertion-list->constr-list-of-assertion-list-from (implies (equal (len asgs) (len constrs)) (equal (assertion-list->constr-list (assertion-list-from asgs constrs)) (constraint-list-fix constrs))))
Theorem:
(defthm assertion-list-from-of-assertion-list->asg/constr-list (implies (assertion-listp assertions) (equal (assertion-list-from (assertion-list->asg-list assertions) (assertion-list->constr-list assertions)) assertions)))
Theorem:
(defthm len-of-assertion-list-from (equal (len (assertion-list-from asgs constrs)) (min (len asgs) (len constrs))))
Theorem:
(defthm assertion-list-from-of-assignment-list-fix-asgs (equal (assertion-list-from (assignment-list-fix asgs) constrs) (assertion-list-from asgs constrs)))
Theorem:
(defthm assertion-list-from-assignment-list-equiv-congruence-on-asgs (implies (assignment-list-equiv asgs asgs-equiv) (equal (assertion-list-from asgs constrs) (assertion-list-from asgs-equiv constrs))) :rule-classes :congruence)
Theorem:
(defthm assertion-list-from-of-constraint-list-fix-constrs (equal (assertion-list-from asgs (constraint-list-fix constrs)) (assertion-list-from asgs constrs)))
Theorem:
(defthm assertion-list-from-constraint-list-equiv-congruence-on-constrs (implies (constraint-list-equiv constrs constrs-equiv) (equal (assertion-list-from asgs constrs) (assertion-list-from asgs constrs-equiv))) :rule-classes :congruence)