Philosophy of Computer Science

Are Computer Programs Scientific Theories?

Last Update: 31 March 2010, 12:58 P.M.

Note: NEW or UPDATED material is highlighted

"I haven't formalized my theory of belief revision,
but I have an algorithm that does it."
    –Frances L. Johnson, February 2004

In response to the above quote from a former graduate student, some might say that her algorithm is her theory.

The focus of this document is the question: Are computer programs scientific theories?

Let's begin with some distinctions:

  1. Simulation vs. Emulation

    FollowingRoth 1983, let's say that x simulates y means that x is a model of some real or imagined system y,
    and we experiment with x in order to understand y.

    And, following Habib 1983, let's say that x emulates y means that either:

    1. computer system x interprets and executes computer system y's instruction set by implementing y's operation codes in x's hardware
      —i.e., hardware y is implemented as a virtual machine on x
    2. software feature x simulates(!) hardware feature y, doing what y does "exactly" as y does it.

    This suggests that there is a continuum or spectrum,
    with "pure" simulation at one end (I/O-equivalent behavior),
    and "pure" emulation at the other end (behavior that is equivalent with respect to I/O, all algorithms in full detail, and all data structures).

    So, perhaps there is no real distinction between simulation and emulation except for the degree of faithfulness to what is being simulated or emulated.

  2. Simulations vs. "The Real Thing"

    The term "simulation" has a sense of "imitation" or "unreal":

    But there are cases where a simulation is the real thing.
    (Question to think about: Would such simulations be better called "emulations"?)

    For example:

    In general, it seems that a simulation of information is that information.

  3. Scientific Theories

    There are at least two views within the philosophy of science about what scientific theories are.

    On the syntactic approach to theories (due to the "Logical Positivists"),
    theories are descriptions of real-world situations expressed in a formal language with an axiomatic structure,
    i.e., a formal system.

    On the semantic approach to theories (due largely to the philosopher Patrick Suppes),
    theories are the set-theoretic models of an axiomatic formal system.

  4. Simon & Newell 1962; Johnson-Laird 1981, 1988; and Pylyshyn 1984 have all claimed that computer programs are theories,
    in the sense that they are languages for theories or ways to express theories:

    The basic idea is that a theory must be expressed in some language.
    If you don't express it in a language, how do you know what it is?
    As E.M. Forster is alleged to have said, "How can I know what I think till I see what I say?".
    And if you don't write your theory down in some language, no one can evaluate it.

    Scientific theories, on this view, are sets of sentences. (I say more about this elsewhere.)

    The sentences have to be in some language:

    The claim here is that some theories can be expressed in a programming language.

    One advantage of expressing a theory as a computer program is that all details must be filled in.
    That is, a computer program must be a full "implementation" of the theory.

    Of course, there will be implementation-dependent details.

    Another advantage of expressing a theory as a computer program is that you can run the program to see how it behaves and what predictions it makes.
    So, in a sense, the theory becomes its own model and can be used to test itself.

  5. The notion of model is associated with a puzzle called the Puzzle of the Model in the Middle, or the Model Muddle (Wartofsky 1966, 1979; Rapaport 1995).
    There are different uses of the term "model".

    This dual, or Janus-faced, nature of models leads to what Smith 1987 calls a "correspondence continuum":

    1. A scientist typically begins with data that he or she then interprets or models using a formal theory;
      so the data are the syntactic domain, and the formal theory is its semantic domain.

    2. The formal theory can then be modeled set-theoretically or mathematically;
      so the formal theory is now the syntactic domain, and the set-theoretic or mathematical model is the semantic domain.

    3. But that set-theoretic or mathematical model can be interpreted by some real-world phenomenon;
      so the model is now the syntactic domain, and the real-world is the semantic domain.

    4. To close the circle: What is that real-world phenomenon but just the kind of data we started with?

  6. However, Moor 1978 (§4) and Thagard 1984 argue that computer programs are not theories,
    on the grounds that they are neither sets of (declarative) sentences nor set-theoretic models of axiom systems.

    In reading Moor or Thagard, here are some questions to ask yourself:

    1. Must a syntactic theory be expressed in declarative sentences?
      (A declarative sentence is a sentence that is either true or else false.)

    2. Must a computer program be expressed in imperative language?
      (An imperative sentence is a sentence that says "Do this!"; it has no truth-value.)

    3. Must a semantic theory be a set-theoretic model of a real-world situation?

    4. Could a computer process—i.e., a program being executed—be a model of a real-world situation?


  1. Habib, S. (1983), "Emulation", in Anthony Ralston & Edwin D. Reilly, Jr. (eds.), Encyclopedia of Computer Science and Engineering, 2nd edition (New York: Van Nostrand Reinhold): 602–603.
  2. Johnson-Laird, Philip N. (1981), "Mental Models in Cognitive Science", in Donald A. Norman (ed.), Perspectives on Cognitive Science (Norwood, NJ: Ablex), Ch. 7 (pp. 147-191).
  3. Johnson-Laird, Philip N. (1988), The Computer and the Mind: An Introduction to Cognitive Science (Cambridge, MA: Harvard University Press), Ch. 3 ("Computability and Mental Processes"), pp. 37-53.
  4. Moor, James H. (1978), "Three Myths of Computer Science" British Journal for the Philosophy of Science 29(3) (September): 213-222.
  5. Pylyshyn, Zenon W. (1984), Computation and Cognition: Toward a Foundation for Cognitive Science (Cambridge, MA: MIT Press), Ch. 3 ("The Relevance of Computation"), pp. 48-86, esp. the section "The Role of Computer Implementation" (pp. 74-78).
  6. Rapaport, William J. (1995), "Understanding Understanding: Syntactic Semantics and Computational Cognition", in James E. Tomberlin (ed.), AI, Connectionism, and Philosophical Psychology, Philosophical Perspectives, Vol. 9 (Atascadero, CA: Ridgeview): 49-88; reprinted in Toribio, Josefa, & Clark, Andy (eds.) (1998), Language and Meaning in Cognitive Science: Cognitive Issues and Semantic Theory, Artificial Intelligence and Cognitive Science, Vol. 4: Conceptual Issues (New York: Garland): 73-88.
  7. Roth, P.F. (1983), "Simulation", in Anthony Ralston & Edwin D. Reilly, Jr. (eds.), Encyclopedia of Computer Science and Engineering, 2nd edition (New York: Van Nostrand Reinhold): 1327–1341.
  8. Simon, Herbert A., & Newell, Allen (1962), "Simulation of Human Thinking", in Martin Greenberger (ed.), Computers and the World of the Future (Cambridge, MA: MIT Press): 94-114
  9. Smith, Brian Cantwell (1987), "The Correspondence Continuum", Report No. CSLI-87-71 (Stanford, CA: Center for the Study of Language and Information).
  10. Thagard, Paul (1984), "Computer Programs as Psychological Theories", in O. Neumaier (ed.), Mind, Language, and Society (Vienna: Conceptus-Studien): 77-84.
  11. Wartofsky, Marx W. (1966), "The Model Muddle: Proposals for an Immodest Realism", in Marx W. Wartofsky, Models: Representation and the Scientific Understanding (Dordrecht, Holland: D. Reidel, 1979): 1–11.
  12. Wartofsky, Marx W. (1979), "Introduction", in Marx W. Wartofsky, Models: Representation and the Scientific Understanding (Dordrecht, Holland: D. Reidel, 1979): xiii–xxvi.

Copyright © 2010 by William J. Rapaport (