Abstract
In this paper I attempt to cast the current program verification debate within a more general perspective on the methodologies and goals of computer science. I show, first, how any method involved in demonstrating the correctness of a physically executing computer program, whether by testing or formal verification, involves reasoning that is defeasible in nature. Then, through a delineation of the senses in which programs can be run as tests, I show that the activities of testing and formal verification do not necessarily share the same goals and thus do not always constitute alternatives. The testing of a program is not always intended to demonstrate a program's correctness. Testing may seek to accept or reject nonprograms including algorithms, specifications, and hypotheses regarding phenomena. The relationship between these kinds of testing and formal verification is couched in a more fundamental relationship between two views of computer science, one properly containing the other.
Similar content being viewed by others
Explore related subjects
Discover the latest articles, news and stories from top researchers in related subjects.References
BalzerR. (1985), “A 15 Year Perspective on Automatic Programming’, IEEE Transactions on Software Engineering SE-11(11), pp. 1257–1267.
ChisholmR. M. (1977), Theory of Knowledge, Englewood, NJ: Prentice-Hall.
CohnA. (1989), ‘The Notion of Proof in Hardware Verification’, Journal of Automated Reasoning 5(2), pp. 127–139.
FetzerJ. H. (1988), ‘Program Verification: The Very Idea’, Communications of the ACM 31(9), pp. 1048–1063.
Fetzer, J. H. (1991), ‘Philosophical Aspects of Program Verification’, Minds and Machines 1(2), forthcoming.
Fetzer, J. H. and Martin, C. R. (1990), ‘“The Very Idea”, Indeed! An Intellectual Brawl in Three Rounds (For Adults Only)’, National Biomedical Simulation Resource, Technical Report no. 1990-2.
GinsbergM. L., ed. (1987), Readings in Nonmonotonic Reasoning, Los Altos, CA: Morgan Kaufmann.
GumbR. D. (1989), Programming Logics: An Introduction to Verification and Semantics, New York, NY: Wiley and Sons.
HoareC. A. R. (1969), ‘An Axiomatic Basis for Computer Programming’, Communications of the ACM 12, pp. 576–580, 583.
KowalskiR. (1979), Logic for Problem Solving, New York, NY: North Holland.
KyburgH. E.Jr., LouiR. P., and CarlsonG. N., eds. (1990), Knowledge Representation and Defeasible Reasoning, Dordrecht, The Netherlands: Kluwer Academic Publishers.
Letters to the Editor (1989), ‘ACM Forum’, Communications of the ACM 32(3), pp. 287–290.
MyersG. J. (1979), The Art of Software Testing, New York, NY: Wiley and Sons.
NapsT. L., NanceD. W., and SinghB. (1989), Introduction to Computer Science: Programming, Problem Solving, and Data Structures, Alternate Edition, St. Paul, MN: West Publishing Company.
NuteD. (1988), ‘Defeasible Reasoning: A Philosophical Analysis in Prolog’, in J.Fetzer, ed., Aspects of Artificial Intelligence, Dordrecht, The Netherlands: Kluwer Academic Publishers, pp. 251–288.
PollockJ. L. (1974), Knowledge and Justification, Princeton, NJ: Princeton University Press.
RankinT. (1988), ‘When Is Reasoning Nonmonotonic?’, in J.Fetzer, ed., Aspects of Artificial Intelligence, Dordrecht, The Netherlands: Kluwer Academic Publishers, pp. 289–308.
ReinfrankM., ed. (1989), Proceedings of the 2nd International Workshop on Non-monotonic Reasoning, New York, NY: Springer-Verlag.
RothM. D. and GalisL., eds. (1970), Knowing: Essays in the Analysis of Knowledge, New York, NY: Random House.
Technical Correspondence (1989), Communications of the ACM 32(3), pp. 287–290.
Author information
Authors and Affiliations
Rights and permissions
About this article
Cite this article
Colburn, T.R. Program verification, defeasible reasoning, and two views of computer science. Minds and Machines 1, 97–116 (1991). https://doi.org/10.1007/BF00360581
Issue Date:
DOI: https://doi.org/10.1007/BF00360581