Check if a literal is a string literal, returning its list of characters if successful.
(check-literal-is-string-literal lit) → chars
Function:
(defun check-literal-is-string-literal (lit) (declare (xargs :guard (literalp lit))) (let ((__function__ 'check-literal-is-string-literal)) (declare (ignorable __function__)) (case (literal-kind lit) (:string (literal-string->get lit)) (t (reserrf (list :found (literal-fix lit)))))))
Theorem:
(defthm char-list-resultp-of-check-literal-is-string-literal (b* ((chars (check-literal-is-string-literal lit))) (char-list-resultp chars)) :rule-classes :rewrite)
Theorem:
(defthm check-literal-is-string-literal-of-literal-fix-lit (equal (check-literal-is-string-literal (literal-fix lit)) (check-literal-is-string-literal lit)))
Theorem:
(defthm check-literal-is-string-literal-literal-equiv-congruence-on-lit (implies (literal-equiv lit lit-equiv) (equal (check-literal-is-string-literal lit) (check-literal-is-string-literal lit-equiv))) :rule-classes :congruence)