A
(abstract-case-insensitive-string tree) → (mv charstring iprefix)
Function:
(defun abstract-case-insensitive-string (tree) (declare (xargs :guard (treep tree))) (b* (((fun (fail)) (prog2$ (abstract-fail) (mv "" nil))) ((unless (tree-case tree :nonleaf)) (fail)) (treess (tree-nonleaf->branches tree)) ((unless (and (consp treess) (consp (cdr treess)))) (fail)) (trees (cadr treess)) ((unless (consp trees)) (fail)) (subtree (car trees)) (charstring (abstract-quoted-string subtree)) (trees (car treess)) ((unless (consp trees)) (fail)) (subtree (car trees)) ((unless (tree-case subtree :nonleaf)) (fail)) (iprefix (consp (tree-nonleaf->branches subtree)))) (mv charstring iprefix)))
Theorem:
(defthm stringp-of-abstract-case-insensitive-string.charstring (b* (((mv ?charstring ?iprefix) (abstract-case-insensitive-string tree))) (common-lisp::stringp charstring)) :rule-classes :rewrite)
Theorem:
(defthm booleanp-of-abstract-case-insensitive-string.iprefix (b* (((mv ?charstring ?iprefix) (abstract-case-insensitive-string tree))) (booleanp iprefix)) :rule-classes :rewrite)