(1) Assumption stage
During program learning, we often encounter
functionalities that we would like to understand. A program
learner normally assumes a correspondence existing between
the functionalities and the program that implements them.
The program learner then decides what segment of the
program to read based on the information of the function
names, file names, and file organizations available with the
program.