Subject: Re: Computing Functions & Boehm-Jacopini From: "William J. Rapaport" Date: Tue, 16 Feb 2010 09:06:13 -0500 (EST) In response to the discussion archived at http://www.cse.buffalo.edu/~rapaport/584/S10/EMAIL/20100211-CompgFns-Boehm-Jacopini.txt Bill Duncan (wdduncan@buffalo.edu) writes (with my replies interpolated): "I'd like to follow up on some of your responses. For convenience, I'll list them as numbered points. "1. The definitions I listed are taken from the BFO (http://www.ifomis.org/bfo). I do not have control over them. Unfortunately, the definitions do contain a number of technical terms, and it would take quite a bit of work to explain them fully. I will I have to forgo this." Reply: That's fair, but is there a place where those terms ("inhere", "bear", etc.) are defined? "2. To recap, in BFO a function is "A realizable entity the manifestation of which is an essentially end-directed activity of a continuant entity in virtue of that continuant entity being a specific kind of entity in the kind or kinds of contexts that it is made for." You have suggested that by "end-directed activity" the BFO is referring to a function's purpose. I am unsure why the designers of BFO decided to use the phrase "end-directed activity" instead of "purpose", but I will speculate that the following two considerations may have played role: "a. The term "purpose" may too strongly suggest that the reason for a function's behavior is due to an intelligent designer. Much of BFO's application has been in the area of bio-medical sciences, and the suggestion of intelligent design would not be applicable to many of these areas of research." Reply: Sounds plausible. "b. The term "purpose" may be too narrow to define all functions. Consider that it is a function of the heart to pump blood. It sounds odd (to me at least) say that this is the heart's purpose." Reply: Another good point: I think I'm willing to agree that all purposes are functions in this sense, but not the other way around (not all functions in this sense are purposes). So, to echo your point (a), "end-directed activity" certainly seems like the more general term. "3. There may be a sense of "purpose" which may apply to programming languages. For modern programming languages (at least in the sense of artifacts) are intentionally designed entities. Their grammar rules have been intentionally designed for the generation of sequences of statements. This "purpose" is not a temporal entity. However, it is actualized when one does actually generate a sequence of statements." Reply: Here's where I think the major distinction reveals itself. I agree that algorithms/programs **have** purposes. After all, we have defined an algorithm as an algorithm **for solving a particular problem** or **for computing a particular mathematical function**. So the "end" that an algorithm's "activity" is "directed to" is the solution of a problem or the computation of a mathematical function. But that's very different from saying that an algorithm **is** a purpose and that it should be categorized in the BFO ontology *as* a function (in the end-directed activity sense): It *has* a function (in that sense) but *isn't* one (in that sense). (And, to repeat, it *computes* a function in the *mathematical* sense.)