The automatic synthesis of iterative programs