Would Relational Calculus be Turing-Complete if it Allowed Unsafe Queries?
My understanding about Codd's concept of "safe queries" was created to ensure that a query would always terminate. One key ability of a Turing machine is that it can work on infinite calculations (and thus isn't guaranteed to terminate). If the safe query restriction were removed, would relational calculus be Turing-complete since that means it doesn't have to terminate?
Solution 1:
I don't know if this is correct, but I have a hypothesis. If we allowed free variables in the formula, then we could think of queries as functions. For example, consider the following query:
{ <A, B, C> | <A, B, C> \in R and A = x}
If the above query has a result M, we can consider that to be a function of the form lambda x.M
. If we allow relations to be free variables, we can define a function of the form lambda R.R
. Now, if we allow "higher-order queries", ie queries that can query queries, we can represent the Church numerals (with q being a query):
0 = lambda qR.R
1 = lambda qR.q R
2 = lambda qR.q (q R)
3 = lambda qR.q (q (q R))
Therefore, I think that relational calculus can also be a lambda calculus, and therefore be Turing-complete. Can anyone tell me if I'm on the right path?