> A system that is Turing Complete absolutely can be programmed to reason, aka it has the ability to reason.
you can write C program which can reason, but C compiler can't reason. So, program part is missing between "Turing Completeness" and reasoning, and it is very non-trivial part.
Given "reasoning" is still undefined, I would not go so far as to claim that a C compiler is not reasoning. What if a C compiler's semantic analysis pass is a limited form of reasoning?
Furthermore, the C compiler can do a lot more than you think. The P99/metalang99 macro toolkits give the preprocessor enough state space to encode and run an LLM, in principle.
I can define "reasoning". Given number of observations and inference rules, infer new calculated observations.
> What if a C compiler's semantic analysis pass is a limited form of reasoning?
I guess you can say that C compiler can reason in specific narrow domain, because it is also a program and someone programmed it to reason in that domain.
I think C compiler was wrong analogy, because it is also a program. More correct could refer on some machine which executes ASM/C/bytecode etc. That machine(e.g. CPU or VM) is turing complete, but one need to write program to do reasoning. C compiler doing some semantic reasoning over say datatypes is example of such program.
you can write C program which can reason, but C compiler can't reason. So, program part is missing between "Turing Completeness" and reasoning, and it is very non-trivial part.