1

By a "functional relationship" I mean "the way" a part of a system interacts with the rest of the system. In a certain sense it "doesn't matter" how the part of the system is specifically formed; the part could be changed, and provided the rest of the system is changed in a corresponding way, the functional relationship could be left the same.

Here's a random example from computer programming. Suppose the system is the following Python function.

def evalCost(hills, low, high):
    s = 0
    for x in hills:
        if x < low:
            s += (low - x)**2
        elif x > high:
            s += (x - high)**2
    return s

The declaration "s = 0" on line 2 has a certain functional relationship to the rest of the function. But if we changed line 2 to "t = 0", and also changed the later mentions of s to mentions of t, then the functional relationship between line 2 and the rest of the function would be the same. The function would do the same thing, and line 2 would play the same role in doing it.

Another example from computer programming: suppose that you have written a program designed to interact with a database and do some calculations. Now you want to write some tests for your program. In your tests, the program does not talk to the database, it instead talks to some testing mock-up that acts like the database. This mock-up has taken the role of the database, and the functional relationship between the mock-up and your program is the same as the functional relationship between the database and your program.

Another example: a running program has values at different memory locations. We might move a value from one memory location to another one, and if we also change every reference to the first memory location to a reference to the second one, then the functional relationship between the program and the value has not changed.

Another example: suppose that a function f1 takes some input and is designed to output 1 if the input is valid, and 0 if the input is invalid. Now suppose that a function f2 works exactly the same, except that it outputs 0 if the input is valid, and 1 if the input is invalid. The functional relationship between an output of 1, and f1, is the same as the functional relationship between an output of 0, and f2. This case is particularly interesting because the outward I/O behavior of f2 is different from the I/O behavior of f1, and yet the same functional relationship can be present in both.

The question is relevant to consciousness. When we perceive an image, part of which is red, presumably there must be some piece of data stored in our neurons representing that red part of the image. But it doesn't matter specifically what that data is, only its functional relationship to the rest of the brain; that piece of data could change, and as long as the rest of the system changed in a corresponding way, then the functional relationship would be preserved (and presumably we would still consciously perceive red).

What is the common thread here, and is there any way to precisely (mathematically) specify exactly what a functional relationship is? I am more interested right now in the examples from programming that I gave, than consciousness; there's lots of extra baggage if we want to talk about consciousness. But the functional relationship between parts of a computer program seems like a relatively clearer and more concrete idea, yet one that still seems difficult to formally specify.

J D
  • 19,541
  • 3
  • 18
  • 83
causative
  • 10,452
  • 1
  • 13
  • 45
  • A Name by any other Name runs as sweet. – Scott Rowe Aug 21 '23 at 18:28
  • 1
    In the restricted sense that you are using the term *functional relation*, is it possible that you are referring to [equivalence relations](https://en.wikipedia.org/wiki/Equivalence_relation). For example, if we say that f1 is related to f2 when function f1 can be obtained from function f2 by a consistent change of variable name, then this relation partitions the class of all functions into equivalence classes and we would say f1 is equivalent to f2. One might also say "invariant under a change of variable name', or even identify a symmetry. And similarly for the remaining examples. – nwr Aug 21 '23 at 18:41
  • @nwr I am indeed thinking along the lines of some type of equivalence relation, but "invariant under a change of variable name" is too narrow. I want to somehow capture the general idea. – causative Aug 21 '23 at 18:48
  • Isn't this just the notion of isomorphism? X "plays the same role" in a system S as Y in a system T if there is an isomorphism between S and T that corresponds X to Y. To make it "functional", X and Y have to be functions as opposed to relations or something else. The "functional role" is then a pair (X,S) up to isomorphism (equivalence class of pairs). – Conifold Aug 21 '23 at 23:46
  • @Conifold Perhaps vaguely. What precisely is an "isomorphism between systems"? In fact, what precisely is a "system"? These are interesting questions but not easy questions. Proper answers to them need to be mathematically rigorous. – causative Aug 22 '23 at 00:46
  • [Combinatory logic](https://en.wikipedia.org/wiki/Combinatory_logic) is the field that explicitly sets out to 'de-variable-ize' math/logic. [Interesting article](https://writings.stephenwolfram.com/2020/12/where-did-combinators-come-from-hunting-the-story-of-moses-schonfinkel/) on its creator. Closer to programming [denotational semantics](https://en.wikipedia.org/wiki/Denotational_semantics) — also called functional semantics — explicitly sets out to give the functional property of an imperative program. – Rushi Aug 22 '23 at 02:27
  • @Rushi Getting rid of variables is not the answer; there are still many ways to write the same program in combinatory logic, many different conventions of how to represent data, which would each be equivalent in terms of their functional relationship to the program designed to operate on that representation. Denotational semantics might be related, but it's unclear to me how it answers the question. Denotational semantics maps programs onto mathematical models of programs. But how do we go from a mathematical model of a program to the functional relationship between parts of the program? – causative Aug 22 '23 at 02:47

1 Answers1

1

A function in the sense you list is listed by Google as follows:

an activity or purpose natural to or intended for a person or thing.

In the example of any computational artifact, which is a machine that is designed and therefore intended to do something, the function is merely the intention of the implementer. For instance, in your Python code, the function of the declaration is to declare a numerical value in the type system, initialize it, and then manipulate it to some end.

A function in this sense, therefore, is a purpose. Note that your entire code is functional. The function signature replete with parameterization has a purpose (to specify in the scope the name of the variables that will be used as arguments). The return statement has a purpose (to end the scope and return a value to the caller). The exponentiation operator has a purpose (to exponentiate). And these subgoals in your procedures could be accomplished using different mechanisms. Some systems use the carat ('^') for instance. Some systems require a semicolon at the end of a line. Some systems require a signature before the declaration. In fact, the entire routine could be written in assembly and achieve the same effect.

Note, that not only are we free to choose a machine-specific implementation of your instructions, we needn't even use a formal language that runs on a machine. We, for instance, can specify a pseudocode. Or, we can express an algorithm in natural language as we are wont to do when describing our intentions to other people. What makes something a function is the goal it serves.

Philosophically, the relevant issue here is addressed under teleology, and when teleological language is applied to biological systems (nature as opposed to artifact), then there's an added complexity of deciphering what it means to use teleological language when no intention applies (natural selection isn't an agent in the philosophical sense). See the SEP's Teleological Notions in Biology for more information on the functions and biological systems.

In philosophy of mind, the ultimate notion that is preserved in functionalism is the idea that all aspects of the mind can be achieved with a substrate other than the brain. For instance, the human brain is obviously capable of adding numbers. Since we can build alternative systems of physical computation (SEP) that can add, it begs the question what else can we simulate. With the passing of time, than answer seems to be more and more. Today, for instance, machine learning algorithms are capable of learning through supervision or otherwise. Computer systems can process human voices. Camera systems can identify faces. These are all functions that are traditionally the domain of human intelligence. It remains to be seen if there's some functionality of that brain that cannot be built and simulated most importantly the creation of human-level semantic systems. If that happens, folks such as Ben Goetzel and their claims of AGI will be validated.

J D
  • 19,541
  • 3
  • 18
  • 83
  • I have often thought along similar lines, that the meaning of a thing is really about the purpose served by that thing (e.g. what objective function the thing is helping to optimize, and how). However, translating that intuition into mathematics is the real challenge. – causative Aug 21 '23 at 19:05
  • @causative I'd simply suggest that math is a thinking tool. So, translating purpose in mathematics is best characterized by an understanding of what the mathematics accomplishes. – J D Aug 21 '23 at 21:22
  • Math is the thinking tool you can use when you have managed to be totally precise, down to rigorous fundamentals, about what you're talking about. The ultimate test of whether you have really, really understood something, is whether you can translate it into mathematics. If you can't do that, then maybe your ideas just fall apart into incoherence if you look closer and more rigorously at them. – causative Aug 21 '23 at 22:22