Reasoning in Software Development


Seven Layers of Knowledge Representation and Reasoning in Support of Software Development

Charles Rich and Yishai A. Feldman
Mitsubishi Electric Research Labs Dept. of Computer Science
201 Broadway Tel Aviv University
Cambridge, MA 02139, U.S.A. 69978 Tel Aviv, Israel

Appeared in: IEEE Trans. Software Engineering Special Issue on Knowledge Representation and Reasoning in Software Development, vol. 18, no. 6, 1992, 451-469



This paper summarizes our experience in the Programmer's Apprentice project in applying knowledge representation and automated reasoning to support software development. We describe a system, called CAKE, that comprises seven layers of knowledge representation and reasoning facilities: truth maintenance, boolean constraint propagation, equality, types, algebra, frames, and Plan Calculus. We also include sessions with two experimental software development tools implemented using CAKE: the Requirements Apprentice and the Debugging Assistant.