A variant of tree-node which uses cons-with-hint.
(tree-node-with-hint head left right hint) → tree
Function:
(defun tree-node-with-hint$inline (head left right hint) (declare (xargs :guard (and (binary-tree-p left) (binary-tree-p right) (binary-tree-p hint)))) (declare (xargs :type-prescription (consp (tree-node-with-hint head left right hint)))) (cons-with-hint head (cons-with-hint (tree-fix left) (tree-fix right) (cdr hint)) hint))
Theorem:
(defthm binary-tree-p-of-tree-node-with-hint (b* ((tree (tree-node-with-hint$inline head left right hint))) (binary-tree-p tree)) :rule-classes :rewrite)