一般来说,我会说“b 是 2 的幂”等价于“b 的除 1 之外的每个除数都是 2 的倍数”。那是:
∀x((∃y(y*x=b & ¬(x=S0))) → ∃z(SS0*z=x))
编辑:这对 10 不起作用(感谢您的评论)。但至少它适用于所有素数。对不起。我认为你毕竟必须使用某种编码序列。我建议 Raymond Smullyan 的“Gödel's Incompleteness Theorems”,如果你想要一个详细和更一般的方法来解决这个问题。
或者您可以使用中国剩余定理对数字序列进行编码,然后对递归定义进行编码,这样您就可以定义指数。事实上,这基本上就是证明 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结尾"