:- true pred mmultiply(_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**2*_F+_D**2*_J+2.0*(_L**2*_D*_J)-2.0*(_L**2*_D)-2.0*(_L**2*_J)+2.0*_L**2+_J**2*_D*_L+_J**2*_D-_J**2*_L-_J**2+2*(_F*_D*_J)-_F*_D-2*(_F*_J)+8.0*(_D*_L*_J)-9.0*(_D*_L)+5.0*(_D*_J)+10*_D-6.0*(_L*_J)+7.0*_L-6.0*_J).

:- true pred multiply(_A,_1,_B)
         : ( list(_A,list('basic_props:num')), numlist(_1), var(_B) )
        => ( list(_A,list('basic_props:num')), numlist(_1), numlist(_B), rsize(_A,list(_C,_D,list(_E,_F,num(_G,_H)))), rsize(_1,list(_I,_J,num(_K,_L))) )
         + cost(ub,steps,2.0*(_F**2*_D)-2.0*_F**2+_D**2*_F+_D**2+6.0*(_F*_D)-7.0*_F+2*(_D*_J)+6.0*_D).

:- true pred vmul(_A,_1)
         : ( numlist(_A), var(_1) )
        => ( numlist(_A), num(_1), rsize(_A,list(_B,_C,num(_D,_E))) )
         + cost(ub,steps,2.0*_C**2+7.0*_C).

:- true pred nlilist([_A|_B])
         : ( list(_A,num), list(_B,list('basic_props:num')) )
        => ( numlist(_A), list(_B,list('basic_props:num')), rsize(_A,list(_C,_D,num(_E,_F))), rsize(_B,list(_G,_H,list(_I,_J,num(_K,_L)))) )
         + cost(ub,steps,2*(_J*_H)-2*_J+2*_D+1).

:- 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|_B])
         : ( num(_A), numlist(_B) )
        => ( num(_A), numlist(_B), rsize(_B,list(_C,_D,num(_E,_F))) )
         + cost(ub,steps,2*_D+1).

:- true pred nlist(_A)
         : list(_A,num)
        => ( numlist(_A), rsize(_A,list(_B,_C,num(_D,_E))) )
         + cost(ub,steps,2*_C-1).

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