I. Theories of Dynamic Programming