:- true pred prefix_sum(_1,_2) : ( list(_1,num), var(_2) ) => ( list(_1,num), list(_2,num), length(_1,_A) ) + cost(ub,steps,3*_A+7). :- true pred prefix_sum_(_1,_A,_B) : ( rt7(_1), list(_A,num), var(_B) ) => ( nnegint(_1), list(_A,num), list(_B,num), length(_A,_C) ) + cost(ub,steps,_C+1). :- true pred prefix_sum_(_1,_A,_B) : ( num(_1), list(_A,num), var(_B) ) => ( num(_1), list(_A,num), list(_B,num), length(_A,_C) ) + cost(ub,steps,_C+1). :- true pred listnum(_A) : list(_A,num) => ( list(_A,num), length(_A,_B) ) + cost(ub,steps,2*_B+1). :- true pred listnum([]) + cost(ub,steps,1).