(vl-arguments-split x elem delta) → (mv new-x delta)
Function:
(defun vl-arguments-split (x elem delta) (declare (xargs :guard (and (vl-arguments-p x) (vl-modelement-p elem) (vl-delta-p delta)))) (let ((__function__ 'vl-arguments-split)) (declare (ignorable __function__)) (b* (((when (eq (vl-arguments-kind x) :vl-arguments-named)) (mv x (dwarn :type :vl-bad-arguments :msg "~a0: expected to only encounter plain arguments, ~ but found a named argument list. Not actually ~ splitting anything." :args (list elem) :fatalp t :fn 'vl-arguments-split))) ((mv new-args delta) (vl-plainarglist-split (vl-arguments-plain->args x) elem delta)) (x-prime (change-vl-arguments-plain x :args new-args))) (mv x-prime delta))))
Theorem:
(defthm vl-arguments-p-of-vl-arguments-split.new-x (implies (and (force (vl-arguments-p x)) (force (vl-modelement-p elem)) (force (vl-delta-p delta))) (b* (((mv ?new-x ?delta) (vl-arguments-split x elem delta))) (vl-arguments-p new-x))) :rule-classes :rewrite)
Theorem:
(defthm vl-delta-p-of-vl-arguments-split.delta (implies (and (force (vl-arguments-p x)) (force (vl-modelement-p elem)) (force (vl-delta-p delta))) (b* (((mv ?new-x ?delta) (vl-arguments-split x elem delta))) (vl-delta-p delta))) :rule-classes :rewrite)