哥德尔、埃舍尔、巴赫印刷数论 (TNT) 谜题和解决方案

Posted

技术标签:

【中文标题】哥德尔、埃舍尔、巴赫印刷数论 (TNT) 谜题和解决方案【英文标题】:Godel, Escher, Bach Typographical Number Theory (TNT) puzzles and solutions 【发布时间】:2010-10-13 06:35:10 【问题描述】:

在 Douglas Hofstader 的 Godel, Escher, Bach 的第 8 章中,读者面临着将这两个陈述翻译成 TNT 的挑战:

"b 是 2 的幂"

"b 是 10 的幂"

以下答案正确吗?:

(假设'∃'表示'存在一个数字'):

∃x:(x.x = b)

即"存在一个数 'x' 使得 x 乘以 x 等于 b"

如果正确,那么下一个同样微不足道:

∃x:(x.x.x.x.x.x.x.x.x.x = b)

我很困惑,因为作者指出它们很棘手,第二个需要几个小时才能解决;我一定错过了这里明显的东西,但我看不到!

【问题讨论】:

+1 表示趣味性,& 因为我没有意识到 html 中有一个现成的“存在”实体。这里有一个完整的列表:tlt.its.psu.edu/suggestions/international/bylanguage/… 【参考方案1】:

您的表达式分别相当于“b 是平方数”和“b 是数字的 10 次方”这两个语句。将“power of”语句转换为 TNT 相当棘手。

【讨论】:

啊。恐怕我不知道“b 是平方数”和“b 是 2 的幂”之间的区别!我以为他们是一样的!你能解释一下吗?谢谢! 平方数是1、4、9、16、25、36、49、64、81、100等。2的幂是1、2、4、8、16、32 , 64, 128, 256 等 平方数是 x^2,2 的幂是 2^x。【参考方案2】:

怎么样:

∀x: ∀y: (SSx∙y = b → ∃z: z∙SS0 = SSx)

(英文:b 的任何大于 2 的因数本身必须能被 2 整除;字面意思是:对于所有自然数 x 和 y,如果 (2+x) * y = b 那么这意味着有一个自然数z 使得 z * 2 = (2+x)。)

我不能 100% 确定 TNT 和 propositional calculus 的语法是否允许这样做,我已经有一段时间没有仔细阅读 GEB 了。

(编辑:至少对于 b = 2n 问题;我明白为什么 10n 会更困难,因为 10 不是素数。但是 11n 除了用“SSSSSSSSSS0”替换一个术语“SS0”之外,其他都是一样的。)

【讨论】:

【参考方案3】:

一般来说,我会说“b 是 2 的幂”等价于“b 的除 1 之外的所有除数都是 2 的倍数”。那就是:

∀x((∃y(y*x=b & ¬(x=S0))) → ∃z(SS0*z=x))

编辑:这对 10 不起作用(感谢 cmets)。但至少它适用于所有素数。对不起。我认为你毕竟必须使用某种编码序列。如果您想要对此进行详细且更通用的方法,我建议您使用 Raymond Smullyan 的“哥德尔不完备定理”。

或者您可以使用中国剩余定理对数字序列进行编码,然后对递归定义进行编码,这样您就可以定义指数。事实上,这基本上就是证明 Peano Arithmetic 是图灵完备的方法。

试试这个:

D(x,y)=∃a(a*x=y)
Prime(x)=¬x=1&∀yD(y,x)→y=x|y=1
a=b mod c = ∃k a=c*k+b

然后

∃y ∃k(
 ∀x(D(x,y)&Prime(x)→¬D(x*x,y)) &
 ∀x(D(x,y)&Prime(x)&∀z(Prime(z)&z<x→¬D(z,y))→(k=1 mod x)) &
 ∀x∀z(D(x,y)&Prime(x)&D(z,y)&Prime(z)&z<x&∀t(z<t<x→¬(Prime(t)&D(t,y)))→
  ∀a<x ∀c<z ((k=a mod x)&(k=c mod z)-> a=c*10))&
 ∀x(D(x,y)&Prime(x)&∀z(Prime(z)&z>x→¬D(z,y))→(b<x & (k=b mod x))))

应该说“b是10的幂”,实际上是说“有一个数字y和一个数字k,使得y是不同素数的乘积,并且通过这些素数由k编码的序列以1开头,具有属性a的后面的元素c是10*a,以b结尾"

【讨论】:

这不适用于 10; 10 次方的一些除数不是 10 的倍数。(例如 2、4、8、16 等,以及 5、25、125 等) 谢谢,我已经更正了我的帖子,希望现在是正确的。 我认为您需要检查 x & y 是否也不为零,否则 b=0 是正确的。我建议 ∀x:【参考方案4】:

我认为上面的大部分内容只表明 b 必须是 4 的倍数。这个怎么样:∃b:∀c: → c = 2>

我不认为格式是完美的,但它写道:

存在b,使得对于所有c,如果c是b的因数且c是素数,则c等于2。

【讨论】:

【参考方案5】:

在持怀疑态度的科学家的帖子here 中,扰流板按钮背后的“b 是 10 的幂”问题有一个解决方案。它依赖于数论中的中国余数定理,以及任意长的素数等差数列的存在。正如 Hofstadter 指出的那样,即使您知道适当的定理,也不容易提出。

【讨论】:

【参考方案6】:

这就是我对“b 是 2 的幂”这个陈述的看法

∃b: ∀a: ~∃c: ((a * ss0) + sss0) * c = b

我认为这是说“存在一个数字 b,因此对于所有数字 a,不存在一个数字 c 使得 (a * 2) + 3(换句话说,大于 2 的奇数)相乘由 c,给你 b。”那么,如果 b 存在,并且不能为零,并且它没有大于 2 的奇数除数,那么 b 不一定是 1、2 或 2 的另一个幂?

【讨论】:

"如果 b ... 不能为零"。你怎么在这里陈述这个? TNT 变量可以包含任何自然数值,包括零。他在本章中使用的技巧是Sb,意思是“任何数字的后继者”或“一个或更大”,自然不能计算为零。【参考方案7】:

这是我想出的:

∀c:∃d:>

翻译为:

对于所有数 c,存在一个数 d,如果 c 乘 d 等于 b,则 c 为 1,或者存在一个数 e,使得 d 等于 e 乘以 2。

或者

对于所有数 c,存在一个数 d,这样如果 b 是 c 的因数而 d 则 c 是 1 或 d 是 2 的因数

或者

如果两个数的乘积是 b,那么其中一个是 1,或者其中一个可以被 2 整除

或者

b 的所有除数要么是 1,要么能被 2 整除

或者

b 是 2 的幂

【讨论】:

反例:假设b = 2。那么假设成立的c必须是1或2。前者可以,但对于后者,d = 1。在这种情况下,c ≠ 1 和 d ≠ e * 2,因此暗示并不适用于所有 c。这是真的还是我错过了什么?【参考方案8】:

对于表示 b 是 2 的幂的开放表达式,我有 ∀a:~∃c:(S(Sa ∙ SS0) ∙ Sc) = b

这实际上说明对于所有 a,S(Sa ∙ SS0) 不是 b 的因数。但在正常情况下,S(Sa ∙ SS0) 是1 + ((a + 1) * 2)3 + 2a。我们现在可以将语句改写为“没有至少为 3 的奇数是 b 的因数”。当且仅当 b 是 2 的幂时,这是正确的。

我仍在研究 b 是 10 的幂的问题。

【讨论】:

【参考方案9】:

在表达“b 是 10 的幂”时,您实际上不需要中国剩余定理和/或有限序列的编码。您也可以按以下方式工作(我们使用常用符号 |、>、c-d 作为具有明显含义的公式/术语的快捷方式):

    对于素数 p,让我们用 EXP(p,a) 表示 TNT 中的某个公式,即“p 是素数,a 是 p 的幂”。我们已经知道,如何构建一个。 (出于技术原因,我们不认为 S0 是 p 的幂,所以 ~EXP(p,S0)。)

    如果 p 是素数,我们定义 EXPp(c,a) ≖ 。在这里,符号 |是“除数”的一种快捷方式,可以在 TNT 中使用一个存在量词和乘法轻松定义; c-1 (a-1, resp.) 也是如此,这意味着“d 使得 Sd=c”(Sd=a, resp.)。 如果 EXP(p,c) 成立(即 c 是 p 的幂),则公式 EXPp(c,a) 表示“a 是 c 的幂”,因为 a ≡ 1 (mod c-1) 然后。

    1234563 → ~P(a)〉〉。

    我们可以表述“b 是 10 的幂”的公式(为了更好的可读性,我们省略了符号 ,我们用 2 和 5 代替 SS0 和 SSSSS0): ∃a:∃c:∃d: (EXP(2,a) ∧ EXP(5,c) ∧ EXP(5,d) ∧ d > b ∧ a⋅c=b ∧ ∀e:(e>5 ∧ e |c ∧ EXP5(e,c) → ~EXP5(e,d)) ∧ ∀e:("e 是最小的,使得 EXP 5(c,e) ∧ EXP5(d,e)" → (d-2)|(ea)))。

解释:我们写b = a⋅c = 2x⋅5y (x,y>0) 并选择d= 5z>b 使得 z 和 y 互质(例如 z 可能是质数)。那么“最小的 e...”等于 (5z)y = dy ≡ 2y (mod d-2) 和 (d-2)|(ea) 意味着 a = 2x = e mod (d-2) = 2y(我们也有 'd-2 > 2y' 和 'd-2 > a'),所以 x = y。

备注:这种方法可以很容易地适应定义“b 是 n 的幂”对于任何数字 n 具有固定分解 a1a2 ...ak,其中每个 ai 是素数 pi 和 pi = pj → i=j.

【讨论】:

【参考方案10】:

我对 b 的解决方案是 2 的幂是: ∀x: ∃y x.y=b ( isprime(x) => x = SS0 )

isprime() 应该不难写。

【讨论】:

以上是关于哥德尔、埃舍尔、巴赫印刷数论 (TNT) 谜题和解决方案的主要内容,如果未能解决你的问题,请参考以下文章

有趣的书列表

魔镜 埃舍尔的不可能世界

不务正业 | 从 Cassandra Prime Logo 开始,浅谈埃舍尔风格

1292. 哥德巴赫猜想数论 线性筛

Html5广告案例赏析

洛谷P1579 哥德巴赫猜想(升级版)题解