A
(abstract-prose-val tree) → prose-val
Function:
(defun abstract-prose-val (tree) (declare (xargs :guard (treep tree))) (b* (((fun (fail)) (prog2$ (abstract-fail) (prose-val ""))) ((unless (tree-case tree :nonleaf)) (fail)) (treess (tree-nonleaf->branches tree)) ((unless (and (consp treess) (consp (cdr treess)) (consp (cddr treess)))) (fail)) (trees (cadr treess)) (nats (abstract-*-grouped-terminal trees)) ((unless (unsigned-byte-listp 8 nats)) (fail))) (prose-val (nats=>string nats))))
Theorem:
(defthm prose-val-p-of-abstract-prose-val (b* ((prose-val (abstract-prose-val tree))) (prose-val-p prose-val)) :rule-classes :rewrite)