:- true pred sift(_A,_B)
         : ( list(_A,int), var(_B) )
        => ( list(_A,int), list(_B,int), length(_A,_C) )
         + cost(ub,steps,sum(_D,2,_C+1,2.0*(_D-1)**2)+6.0*(_C+1)**2+4.0*_C+4.0).

:- true pred remove(_A,_1,_2)
         : ( list(_A,int), int(_1), var(_2) )
        => ( list(_A,int), int(_1), list(_2,int), length(_A,_B) )
         + cost(ub,steps,2.0*(_B+1)**2+8.0*_B+8.0).

:- true pred intlist(_A)
         : list(_A,int)
        => ( list(_A,int), length(_A,_B) )
         + cost(ub,steps,2*_B+1).

:- true pred intlist([_A|_B])
         : ( int(_A), list(_B,int) )
        => ( int(_A), list(_B,int), length(_B,_C) )
         + cost(ub,steps,2*_C+3).

:- true pred intlist([])
         + cost(ub,steps,1).