Finite-state approximations to denumerable-state dynamic programs