Algorithm Logic +Control Robert Kowalski Imperial College, London An algorithm can be regarded as consisting of a logic component, which specifies the knowledge to be used in solving problems, and a control component, which determines the problem-solving strategies by means of which that knowledge is used. The logic component determines the meaning of the algorithm whereas the control component only affects its effkiency. The effkiency of an algorithm can often be improved by improving the control component without changing the logic of the algorithm We argue that computer programs would be more often correct and more easily improved and modified if their logic and control aspects were identified and separated in the program text Key Words and Phrasess control language, logic progrananming methodology. program specification, relational data structures CR Categories 3.64, 4.20, 430 5.21, 5.24 Predicate logic is a high level, human-oriented lan- guage for describing problems and problem-solving methods to computers. In this paper, we are concerned not with the use of predicate logic as a programming language in its own right, but with its use as a tool for the analysis of algorithms. Our main aim will be to study ways in which logical analysis can contribute to improv- ing the structure and efficiency of algorithms. Permission to copy without fee all or part of this material is granted provided that the copies are not made or distributed for direct commercial advantage, the ACM copyright motice and the title of the publication and its date appear, =d-ce s given dat copying is by permission of the Association for Computing Machinery. To copy otherwise, or to republish, requires a fee andor specific pemission. This research was supported byagt form the Science Research Author's address: RA Kowalski Dept of Computing and Con- trol, Imperial College of Science und Technkgy, 180 Queens Gate, London SW7 2B2, England 1979 ACM 0001-0782/79/0700-0424 so.75 Algorithm Logic +Control Robert Kowalski Imperial College, London An algorithm can be regarded as consisting of a logic component, which specifies the knowledge to be used in solving problems, and a control component, which determines the problem-solving strategies by means of which that knowledge is used. The logic component determines the meaning of the algorithm whereas the control component only affects its effkiency. The effkiency of an algorithm can often be improved by improving the control component without changing the logic of the algorithm We argue that computer programs would be more often correct and more easily improved and modified if their logic and control aspects were identified and separated in the program text Key Words and Phrasess control language, logic progrananming methodology. program specification, relational data structures CR Categories 3.64, 4.20, 430 5.21, 5.24 Predicate logic is a high level, human-oriented lan- guage for describing problems and problem-solving methods to computers. In this paper, we are concerned not with the use of predicate logic as a programming language in its own right, but with its use as a tool for the analysis of algorithms. Our main aim will be to study ways in which logical analysis can contribute to improv- ing the structure and efficiency of algorithms. Permission to copy without fee all or part of this material is granted provided that the copies are not made or distributed for direct commercial advantage, the ACM copyright motice and the title of the publication and its date appear, =d-ce s given dat copying is by permission of the Association for Computing Machinery. To copy otherwise, or to republish, requires a fee andor specific pemission. This research was supported byagt form the Science Research Author's address: RA Kowalski Dept of Computing and Con- trol, Imperial College of Science und Technkgy, 180 Queens Gate, London SW7 2B2, England 1979 ACM 0001-0782/79/0700-0424 so.75