Create a post-order list of values from a tree.
(tree-post-order tree) → list
Function:
(defun tree-post-order (tree) (declare (xargs :guard (binary-tree-p tree))) (let ((__function__ 'tree-post-order)) (declare (ignorable __function__)) (if (tree-emptyp tree) nil (append (tree-pre-order (tree-left tree)) (append (tree-post-order (tree-right tree)) (list (tree-head tree)))))))
Theorem:
(defthm true-listp-of-tree-post-order (b* ((list (tree-post-order tree))) (true-listp list)) :rule-classes :rewrite)