improve solver_addrule a bit