- #1
SSequence
- 556
- 95
Perhaps "alternative" isn't the best word here. What I meant is a function that dominates every PR (primitive recursive) function for which it is very easy to see that property.
Every PR function is calculated by some "do-times" program. Define the collection W1 to be the set of all do-times programs that take only one variable as input.
So define a function f : N → N as follows:
f(n) = the minimum number of steps on which all W1-programs of length ≤ n halt when they are given n as input
We could also use the function g(x)=f(x)+1 but it wouldn't be very elegant perhaps.
It would not be particularly difficult to show that f itself is not primitive recursive.
I think it could also be shown (haven't thought about the argument carefully but it seems quite likely) that the domination is strict (in the sense that the domination is based on "less than" relation and not on "less than or equal to" relation).
If someone wanted to implement this function using a concrete programming language it wouldn't be that hard. I do wonder what would be the values of n (roughly) at which the values of this function would just become too large to calculate feasibly.
Edit:
"f(n) = the minimum number of steps on which all W1-programs of length ≤ n halt when they are given n as input"
Possibly (with careful argument) one could also relax the condition above from "≤ n" to "=n"? Wouldn't be surprising if that was the case.
P.S.
Of course one would also make sure of basic stuff such as not having any commands of type "c=100" etc. to make sure that there are finite number programs of a given length (also other stuff such as variable re-naming to avoid redundancy for the same/equivalent programs).
Every PR function is calculated by some "do-times" program. Define the collection W1 to be the set of all do-times programs that take only one variable as input.
So define a function f : N → N as follows:
f(n) = the minimum number of steps on which all W1-programs of length ≤ n halt when they are given n as input
We could also use the function g(x)=f(x)+1 but it wouldn't be very elegant perhaps.
It would not be particularly difficult to show that f itself is not primitive recursive.
I think it could also be shown (haven't thought about the argument carefully but it seems quite likely) that the domination is strict (in the sense that the domination is based on "less than" relation and not on "less than or equal to" relation).
If someone wanted to implement this function using a concrete programming language it wouldn't be that hard. I do wonder what would be the values of n (roughly) at which the values of this function would just become too large to calculate feasibly.
Edit:
"f(n) = the minimum number of steps on which all W1-programs of length ≤ n halt when they are given n as input"
Possibly (with careful argument) one could also relax the condition above from "≤ n" to "=n"? Wouldn't be surprising if that was the case.
P.S.
Of course one would also make sure of basic stuff such as not having any commands of type "c=100" etc. to make sure that there are finite number programs of a given length (also other stuff such as variable re-naming to avoid redundancy for the same/equivalent programs).
Last edited: