(vl-assignlist-trunc x delta) → (mv assigns detla)
Function:
(defun vl-assignlist-trunc (x delta) (declare (xargs :guard (and (vl-assignlist-p x) (vl-delta-p delta)))) (let ((__function__ 'vl-assignlist-trunc)) (declare (ignorable __function__)) (b* (((when (atom x)) (mv nil (vl-delta-fix delta))) ((mv car delta) (vl-assign-trunc (car x) delta)) ((mv cdr delta) (vl-assignlist-trunc (cdr x) delta))) (mv (cons car cdr) delta))))
Theorem:
(defthm vl-assignlist-p-of-vl-assignlist-trunc.assigns (b* (((mv ?assigns ?detla) (vl-assignlist-trunc x delta))) (vl-assignlist-p assigns)) :rule-classes :rewrite)
Theorem:
(defthm vl-delta-p-of-vl-assignlist-trunc.detla (b* (((mv ?assigns ?detla) (vl-assignlist-trunc x delta))) (vl-delta-p detla)) :rule-classes :rewrite)
Theorem:
(defthm vl-assignlist-trunc-of-vl-assignlist-fix-x (equal (vl-assignlist-trunc (vl-assignlist-fix x) delta) (vl-assignlist-trunc x delta)))
Theorem:
(defthm vl-assignlist-trunc-vl-assignlist-equiv-congruence-on-x (implies (vl-assignlist-equiv x x-equiv) (equal (vl-assignlist-trunc x delta) (vl-assignlist-trunc x-equiv delta))) :rule-classes :congruence)
Theorem:
(defthm vl-assignlist-trunc-of-vl-delta-fix-delta (equal (vl-assignlist-trunc x (vl-delta-fix delta)) (vl-assignlist-trunc x delta)))
Theorem:
(defthm vl-assignlist-trunc-vl-delta-equiv-congruence-on-delta (implies (vl-delta-equiv delta delta-equiv) (equal (vl-assignlist-trunc x delta) (vl-assignlist-trunc x delta-equiv))) :rule-classes :congruence)