:- 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).