- node_REP
-
|- (node_REP [] = 0) /\
(!t h. node_REP (CONS h t) = SUC (h + h) * 2 EXP node_REP t)
- Is_tree_REP
-
|- Is_tree_REP = (\t. !P. (!tl. EVERY P tl ==> P (node_REP tl)) ==> P t)
- tree_TY_DEF
-
|- ?rep. TYPE_DEFINITION Is_tree_REP rep
- tree_ISO_DEF
-
|- (!a. ABS_tree (REP_tree a) = a) /\
(!r. Is_tree_REP r = REP_tree (ABS_tree r) = r)
- node
-
|- !tl. node tl = ABS_tree (node_REP (MAP REP_tree tl))
- dest_node
-
|- !t. dest_node t = (@p. t = node p)
- bht
-
|- bht =
PRIM_REC (\tr. tr = node [])
(\res n tr. ?trl. (tr = node trl) /\ EVERY res trl)
- HT
-
|- !t. HT t = (@n. bht n t /\ (!m. m < n ==> ~(bht m t)))
- trf
-
|- !n f.
trf n f =
(@fn. !trl. HT (node trl) <= n ==> (fn (node trl) = f (MAP fn trl)))