(bfr-*-ss v1 v2) → prod
Function:
(defun bfr-*-ss (v1 v2) (declare (xargs :guard (and (true-listp v1) (true-listp v2)))) (let ((__function__ 'bfr-*-ss)) (declare (ignorable __function__)) (b* (((mv dig1 rest end1) (first/rest/end v1)) ((when end1) (bfr-ite-bss dig1 (bfr-unary-minus-s v2) nil)) (rest (bfr-*-ss rest v2))) (bfr-+-ss nil (bfr-ite-bss dig1 v2 nil) (bfr-scons nil rest)))))
Theorem:
(defthm true-listp-of-bfr-*-ss (b* ((prod (bfr-*-ss v1 v2))) (true-listp prod)) :rule-classes :type-prescription)
Theorem:
(defthm bfr-*-ss-correct (b* ((prod (bfr-*-ss v1 v2))) (and (equal (bfr-list->s prod env) (* (bfr-list->s v1 env) (bfr-list->s v2 env))))))
Theorem:
(defthm bfr-*-ss-deps (b* ((prod (bfr-*-ss v1 v2))) (implies (and (not (pbfr-list-depends-on varname param v1)) (not (pbfr-list-depends-on varname param v2))) (and (not (pbfr-list-depends-on varname param prod))))))