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