Concrete implementation of strin-init.
Function:
(defun sin$c-init (contents filename sin$c) (declare (xargs :stobjs (sin$c))) (declare (xargs :guard (and (stringp contents) (stringp filename)))) (let ((__function__ 'sin$c-init)) (declare (ignorable __function__)) (b* ((sin$c (update-sin$c-pos 0 sin$c)) (sin$c (update-sin$c-line 0 sin$c)) (sin$c (update-sin$c-col 0 sin$c)) (sin$c (update-sin$c-file filename sin$c))) (mbe :logic (update-sin$c-str contents sin$c) :exec (if (< (the (integer 0 *) (length contents)) (expt 2 60)) (update-sin$c-str contents sin$c) (ec-call (update-sin$c-str contents sin$c)))))))
Theorem:
(defthm sin-init{correspondence} (implies (and (sin$corr sin$c x) (stringp contents) (stringp filename) (strin-p x)) (sin$corr (sin$c-init contents filename sin$c) (strin-init contents filename x))))