Developing and testing program classification and function theories