<p>Almost always in the study of computational complexity, the Turing machine is used as a model. On the other hand, the untyped lambda calculus is in a sense &quot;simpler&quot; than any Turing machine: there are only 2 fundamental rules of abstraction and application, in a sense dual to each other (as well as the introduction and elimination of implication in logic). This appears to be the simplest (and most abstract) model of computation ever created.</p>
<p>However, there is a problem with reduction: the &quot;computational cost&quot; of reduction varies depending on the computational strategy. For example, when duplicating a term, instead of recalculating, you can use references (which is, of course, some departure from the &quot;purity&quot; of the lambda calculus) and replace references to results. (Which, however, is not such a serious problem - it is quite possible to study the cost of reduction for different strategies separately).</p>
<p>However, there are some problems with Turing machines as well. First of all, this is that any particular Turing machine (and, more broadly, any finite automaton) always contains some &quot;intrinsic complexity&quot;, which lies in the very structure of the machine. I'm afraid that this &quot;intrinsic complexity&quot; may have an unforeseen effect on the conclusions in the field of computational complexity. Does computational complexity research always use the same Turing machine model? Are there any conclusions for different models? If not, how can we be sure that the &quot;intrinsic complexity&quot; of a particular machine doesn't skew the results?</p>
<p>Another problem is the computational complexity of parallel computing. Lambda calculus has a natural parallelism that Turing machines don't have. Thus, the lambda calculus allows, for example, specifying the number of computational agents for several &quot;computation branches&quot; or modifying the concept of &quot;computation time&quot; (since in parallel computing, by increasing the number of computational agents, the time can be significantly reduced and even &quot;jump&quot; to another complexity class).</p>
<p>What do you think about it?</p>
<p>Thanks in advance.</p>

CC BY-SA 4.0
2023-02-13T18:53:43.070Z
This question ("What do you think about it?") is too vague. I'd suggest you reformulate your question to ask something more precise so you can get a useful answer.
Max New
CC BY-SA 4.0
2023-02-13T19:48:45.813Z
There has been quite a lot of work on using $\lambda$-calculus in complexity theory, see e.g. [P and NP classes explanation through lambda-calculus](https://cstheory.stackexchange.com/questions/23798/p-and-np-classes-explanation-through-lambda-calculus/23801)
Martin Berger
<complexity-classes><lambda-calculus><turing-machines>
On the use of Turing machines for computational complexity
Wasabi Kurosawa
# On the use of Turing machines for computational complexity

(Asked by: username_0 on 2023-02-13)

Almost always in the study of computational complexity, the Turing machine is used as a model. On the other hand, the untyped lambda calculus is in a sense "simpler" than any Turing machine: there are only 2 fundamental rules of abstraction and application, in a sense dual to each other (as well as the introduction and elimination of implication in logic). This appears to be the simplest (and most abstract) model of computation ever created.

However, there is a problem with reduction: the "computational cost" of reduction varies depending on the computational strategy. For example, when duplicating a term, instead of recalculating, you can use references (which is, of course, some departure from the "purity" of the lambda calculus) and replace references to results. (Which, however, is not such a serious problem - it is quite possible to study the cost of reduction for different strategies separately).

However, there are some problems with Turing machines as well. First of all, this is that any particular Turing machine (and, more broadly, any finite automaton) always contains some "intrinsic complexity", which lies in the very structure of the machine. I'm afraid that this "intrinsic complexity" may have an unforeseen effect on the conclusions in the field of computational complexity. Does computational complexity research always use the same Turing machine model? Are there any conclusions for different models? If not, how can we be sure that the "intrinsic complexity" of a particular machine doesn't skew the results?

Another problem is the computational complexity of parallel computing. Lambda calculus has a natural parallelism that Turing machines don't have. Thus, the lambda calculus allows, for example, specifying the number of computational agents for several "computation branches" or modifying the concept of "computation time" (since in parallel computing, by increasing the number of computational agents, the time can be significantly reduced and even "jump" to another complexity class).

What do you think about it?

Thanks in advance.

**Tags:** complexity-classes, lambda-calculus, turing-machines
> **Comments:**
> **username_1**: This question ("What do you think about it?") is too vague. I'd suggest you reformulate your question to ask something more precise so you can get a useful answer.  
> **username_2**: There has been quite a lot of work on using $\lambda$-calculus in complexity theory, see e.g. [P and NP classes explanation through lambda-calculus](https://cstheory.stackexchange.com/questions/23798/p-and-np-classes-explanation-through-lambda-calculus/23801)  

---

## 0 answers

