don't access r->p after solver_addrule is called, as it may realloc the rules