; The Generative-Recursion Program Design Recipe
(
("Data Analysis and Definition"
 "to understand what kinds of information are to be processed and how to
 represent the information as data" )

("Contract and Header"
 "to write down the most basic information about the program:
  \\begin{enumerate}
  \\item to specify what class of data the program consumes and produces; 
  \\item to choose a program name and names for its parameters; and 
  \\item to document its purpose in a short comment.
  \\end{enumerate}")

("Program Examples"
 "to formulate examples of the program's input-output behavior (using the
 data definitions)" )

("Template"
 "to understand which problems can be solved trivially and how the
  generative step creates new problems") 

("Body"
 "to produce a complete program by using the solutions of sub-problems and
  other data")

("Test"
 "to test the program's behavior on the specified examples")

("Termination Argument"
 "to provide an argument why the program always produces an output")
)
