Fancy hack for printing string literals.
See for instance vl-print-str for details.
Function:
(defun vl-print-raw-fast-fn (x len ps) (declare (xargs :stobjs (ps))) (declare (xargs :guard (and (stringp x) (natp len)))) (declare (type unsigned-byte len) (type string x)) (declare (xargs :split-types t)) (let ((__function__ 'vl-print-raw-fast)) (declare (ignorable __function__)) (vl-ps-seq (vl-ps-update-rchars (cons (string-fix x) (vl-ps->rchars))) (vl-ps-update-col (the unsigned-byte (+ (lnfix len) (vl-ps->col)))))))
Theorem:
(defthm vl-print-raw-fast-fn-of-str-fix-x (equal (vl-print-raw-fast-fn (str-fix x) len ps) (vl-print-raw-fast-fn x len ps)))
Theorem:
(defthm vl-print-raw-fast-fn-streqv-congruence-on-x (implies (streqv x x-equiv) (equal (vl-print-raw-fast-fn x len ps) (vl-print-raw-fast-fn x-equiv len ps))) :rule-classes :congruence)
Theorem:
(defthm vl-print-raw-fast-fn-of-nfix-len (equal (vl-print-raw-fast-fn x (nfix len) ps) (vl-print-raw-fast-fn x len ps)))
Theorem:
(defthm vl-print-raw-fast-fn-nat-equiv-congruence-on-len (implies (acl2::nat-equiv len len-equiv) (equal (vl-print-raw-fast-fn x len ps) (vl-print-raw-fast-fn x len-equiv ps))) :rule-classes :congruence)