:- true pred prefix_sum(_1,_2) : ( list(_1,num), var(_2) ) => ( numlist(_1), numlist(_2), length(_1,_A) ) + cost(ub,steps,2.0*_A**2+15.0*_A+20.0). :- true pred prefix_sum_(_1,_A,_B) : ( nnegint(_1), numlist(_A), var(_B) ) => ( nnegint(_1), numlist(_A), numlist(_B), length(_A,_C) ) + cost(ub,steps,2.0*_C**2+11.0*_C+9.0). :- true pred prefix_sum_(_1,_A,_B) : ( num(_1), list(_A,num), var(_B) ) => ( num(_1), numlist(_A), numlist(_B), length(_A,_C) ) + cost(ub,steps,2.0*(_C+1)**2+7.0*_C+7.0). :- true pred listnum(_A) : list(_A,num) => ( numlist(_A), length(_A,_B) ) + cost(ub,steps,2*_B+1). :- true pred listnum([_A|_B]) : ( num(_A), list(_B,num) ) => ( num(_A), numlist(_B), length(_B,_C) ) + cost(ub,steps,2*_C+3). :- true pred listnum([]) + cost(ub,steps,1).