Symbolic dynamic programming