:- true pred sift(_A,_B) : ( list(_A,int), var(_B) ) => ( list(_A,int), list(_B,int), length(_A,_C) ) + cost(ub,steps,0.5*_C**2+1.5*_C+1.0). :- true pred remove(_A,_1,Nis) : ( list(_A,int), int(_1), var(Nis) ) => ( list(_A,int), int(_1), list(Nis,int), length(_A,_B) ) + cost(ub,steps,_B+1).