:- true pred mmultiply(_1,_2,_3) : ( list(_1,list('basic_props:num')), list(_2,list('basic_props:num')), var(_3) ) => ( list(_1,list('basic_props:num')), list(_2,list('basic_props:num')), list(_3,list('basic_props:num')), rsize(_1,list(_A,_B,list(_C,_D,num(_E,_F)))), rsize(_2,list(_G,_H,list(_I,_J,num(_K,_L)))) ) + cost(ub,steps,_J*_H*_B+_J*_H-_J*_B-_J+3*(_H*_B)-3*_H+2*(_D*_B)-2*_D+_B+7). :- true pred mmultiply_i(_A,_1,_B) : ( list(_A,list('basic_props:num')), list(_1,list('basic_props:num')), var(_B) ) => ( list(_A,list('basic_props:num')), list(_1,list('basic_props:num')), list(_B,list('basic_props:num')), rsize(_A,list(_C,_D,list(_E,_F,num(_G,_H)))), rsize(_1,list(_I,_J,list(_K,_L,num(_M,_N)))) ) + cost(ub,steps,_D*_L*_J-_D*_L+_D*_J+_D-_L*_J+_L-_J). :- true pred multiply(_A,_1,_B) : ( list(_A,list('basic_props:num')), list(_1,num), var(_B) ) => ( list(_A,list('basic_props:num')), list(_1,num), list(_B,num), rsize(_A,list(_C,_D,list(_E,_F,num(_G,_H)))) ) + cost(ub,steps,_F*_D-_F+_D). :- true pred vmul(_A,_1) : ( list(_A,num), var(_1) ) => ( list(_A,num), num(_1), rsize(_A,list(_B,_C,num(_D,_E))) ) + cost(ub,steps,_C). :- true pred nlilist(_A) : list(_A,list('basic_props:num')) => ( list(_A,list('basic_props:num')), rsize(_A,list(_B,_C,list(_D,_E,num(_F,_G)))) ) + cost(ub,steps,2*(_E*_C)-2*_E+1). :- true pred nlist(_A) : list(_A,num) => ( list(_A,num), rsize(_A,list(_B,_C,num(_D,_E))) ) + cost(ub,steps,2*_C-1).