time_per_solver_acc(_, [], _, Res, Res).
 time_per_solver_acc(AST, [prob|Solvers], TimeOutValue, Acc, TimePerSolver) :-
      statistics(walltime,[Start,_]),
      time_out(solve_predicate(AST,_,Res),TimeOutValue,TimeOut),
      statistics(walltime,[End,_]),
      Time is End - Start,
      time_per_solver_acc(AST, Solvers, TimeOutValue, [[prob,Time,TimeOut,Res]|Acc], TimePerSolver).
 time_per_solver_acc(AST, [kodkod|Solvers], TimeOutValue, Acc, TimePerSolver) :-
      statistics(walltime,[Start,_]),
      time_out(solve_predicate(AST,_,1,['KODKOD'],Res),TimeOutValue,TimeOut),
      statistics(walltime,[End,_]),
      Time is End - Start,
      time_per_solver_acc(AST, Solvers, TimeOutValue, [[kodkod,Time,TimeOut,Res]|Acc], TimePerSolver).
 time_per_solver_acc(AST, [cdclt|Solvers], TimeOutValue, Acc, TimePerSolver) :-
      statistics(walltime,[Start,_]),
      time_out(cdclt_solve_predicate(AST,_,Res),TimeOutValue,TimeOut),
      statistics(walltime,[End,_]),
      Time is End - Start,
      time_per_solver_acc(AST, Solvers, TimeOutValue, [[cdclt,Time,TimeOut,Res]|Acc], TimePerSolver).
 time_per_solver_acc(AST, [Solver|Solvers], TimeOutValue, Acc, TimePerSolver) :-
      member(Solver, [cvc4, z3]),
      statistics(walltime,[Start,_]),
      time_out(smt_solve_predicate(Solver, AST,_,Res),TimeOutValue,TimeOut),
      statistics(walltime,[End,_]),
      Time is End - Start,
      time_per_solver_acc(AST, Solvers, TimeOutValue, [[Solver,Time,TimeOut,Res]|Acc], TimePerSolver).