domains elem=integer tree_t=tree(elem, tree_t, tree_t); null predicates sum(tree_t, elem) create_tree(elem, tree_t) insert_right(tree_t, tree_t, tree_t) insert_left(tree_t, tree_t, tree_t) clauses create_tree(A, tree(A, null, null)). insert_right(T, tree(A,_,B), tree(A, T, B)). insert_left(T, tree(A,B,_), tree(A,B,T)). sum(null, 0). sum(tree(E, null, null), E). sum(tree(E, R, L), Sum) :- sum(R, Sum1), sum(L, Sum2), Sum = Sum1 + Sum2 + E. goal create_tree(1, T1), create_tree(2, T2), create_tree(3, T3), create_tree(4, T4), create_tree(5, T5), create_tree(6, T6), create_tree(7, T7), write("Done creating nodes...\n"), insert_left(T4, T2, R1), insert_right(T5, R1, R2), insert_left(T6, T3, R3), insert_right(T7, R3, R4), insert_left(R2, T1, R5), insert_right(R3, R5, Root), write("Done creating tree\n"), sum(Root, Sum), write(Sum).