:- true pred bst_member(_A,_B) : ( num(_A), bin_tree(_B) ) => ( num(_A), bin_tree(_B), depth(_B,_C) ) + cost(ub,steps,1.5*(_C+1)**2+1.5*2**(_C+2)+3*2**(_C+1)+10.5*_C+18.5). :- true pred 'bst_member$pre'(_A) : bin_tree(_A) => ( bin_tree(_A), depth(_A,_B) ) + cost(ub,steps,3*2**(_B+1)+3*_B+10). :- true pred bst(_A) : bin_tree(_A) => ( bin_tree(_A), depth(_A,_B) ) + cost(ub,steps,3*2**(_B+1)+3*_B+6). :- true pred min_(_A,_B) : ( bin_tree(_A), var(_B) ) => ( bin_tree(_A), num(_B), depth(_A,_C) ) + cost(ub,steps,_C+3). :- true pred max_(_A,_B) : ( bin_tree(_A), var(_B) ) => ( bin_tree(_A), num(_B), depth(_A,_C) ) + cost(ub,steps,_C+3). :- true pred bst_(_A,_1,_2) : ( bin_tree(_A), num(_1), num(_2) ) => ( bin_tree(_A), num(_1), num(_2), depth(_A,_B) ) + cost(ub,steps,2**(_B+2)-1.0).