这是一个 警察和强盗 围绕定义语言并证明他们已经完成图灵这一挑战。
这是警察的话题。强盗的线索在这里。
警察
作为一名警察,您将准备两件事:
- 编程语言或其他计算系统的正式规范。(计算系统定义如下。) 
- 根据以下较为严格的定义,证明您的系统是Turing完整的。 
您将发布您的语言说明,强盗将通过证明其图灵完整性来尝试“破解”它。如果您提交的内容在一周内没有被破解,则可以将其标记为安全并发布证明。(如果有人发现您的证明有缺陷,则您的答案可能无效,除非您可以修复它。)
这是一个 人气竞赛,因此获胜者将是投票数最多且未破解或无效的答案。挑战是无限的-我不会接受答案。
为了应对这一挑战,将计算系统定义为四件事:
- 一个“程序集” - P。这将是一个无穷无穷的集合,例如字符串,整数,二叉树,网格上的像素配置等。(但请参见下面的技术限制。)
- “输入集” - I,也将是可数的无限集,并且不必与- P(虽然可以)相同。
- “输出组” - O,其类似地将是一个可数无限组,并且可以是或可以不是相同- P或- I
- 用于产生输出一个确定性的,机械程序 - o从程序- p和输入- i,其中- p,- i和- o是的成员- P,- I和- O分别。该过程应原则上可以在图灵机或其他抽象计算模型上实现。当然,该程序可能无法停止,具体取决于程序及其输入。
该套P,I并且O必须是这样的,你可以表达他们作为一个可计算的方式串。(对于大多数明智的选择,这无关紧要;存在此规则是为了防止您选择奇怪的集合,例如不停止的图灵机集合。)
图灵完整性将定义如下:
- 对于任何可计算部分功能f从I到O,存在一个程序p中P,使得给定的p和输入i,输出的是f(i)如果f(i)有一个值。(否则程序不会停止。)
上述定义中的“可计算”一词是指“可以使用图灵机来计算”。
请注意,规则110和按位循环标记都不是图灵完成的,因为它们没有所需的输入输出结构。只要我们定义I并且O是教会数字,Lambda演算就已经完成了Turing 。(这不是图灵完整的,如果我们采取I和O将在一般lambda表达式。)
请注意,您不必提供某种语言的实现,但是如果愿意,欢迎在您的答案中加入一种语言。但是,您不应该以任何方式依赖实现来定义语言-规范本身应该完整,并且如果规范和实现之间存在矛盾,则应将其视为实现中的错误。