语法和语义的博弈:数系是如何扩张和分化的?

chaos 2026-03-28 六 00:24
修改中

语法和语义

数学有非常强的语法特点。它总是从少数初始命题(公理)出发,依照严格的推理规则,不断生成新的定理与推论。从编程的视角看,整个数学就像一个巨大的字符串库——各个子学科拥有各自的公理字符串(例如“0 是自然数”,“过两点有且只有一条直线”),而推理规则就是对这些字符串进行变换、组合的操作规程。我们把这种定义初始字符串的构造规则,以及修改、派生新字符串的变换规则,统称为语法。凭借语法,数学可以在纯粹符号的层面无限繁衍。

类比而言,象棋的走子规则也是语法——只要知道“马走日、象走田”,你就能在棋盘上合法地移动棋子,生成无数棋局。

但它们并不是纯语法的产物,如果是的话,数学就是根据变换规则生成的无数随机字符串,下象棋也是随机地按规则布局了。

象棋之所以有趣,是因为语法背后承载了“吃子”“将杀”“战术”“风格”等语义层面的意义(最初来自于物理世界的战争),你需要通过某种语义偏好去过滤掉大量“无意义”的移动,这些偏好可以是你在对战几千局之后从胜利和失败布局中总结出的统计规律,即这样下更接近过去的某个容易导向胜利的布局,也更远离过去的某个导向失败的布局;可以是能吃掉对方的某个棋子的局部贪念;还可以是你觉得这样下完之后整个布局“更美”,更像你的姓氏的比画。

数学更是如此,当看到 "1+0=1" 字符串时,你可以两边乘以 2 得到 "2+0=2", 也可以两边加上 -1 得到 "1+0-1=1-1", 无数种变换方式选择哪一种呢?这取决于你要接近的目标,根据过去学习思考中积累下的统计规律,也许这样变换更接近证明的目标,或者基于说不清的直觉,也可以仅仅是一次尝试,看看结果如何,如果不好则再回溯尝试新的变换。

但有些时候,你并没有那么多选择,甚至不需要选择,比如在角落里的”象“,按田字规则发现只有一个位置可以走。当别人问你为什么这样走时,你只能回答:就是按规则。(当然这里还有一些选择,即你可以不走象,而是移动其他棋子,这是需要更高层的额外语义来解释的,但当聚焦到局部,比如为何象是这样移动而不是为什么移动象时,其理由完全就是语法规则决定的)

本文把这种局部的选择极窄、甚至唯一,由规则本身直接决定演变路径的情形,称为语法驱动。一个典型的例子,当你要让方程 \( x^2+1=0 \) 有解,而不是声称这是未定义的语义错误时,引入虚数 i 就是语法驱动的,因为你需要对 -1 求根号,尽管不知道 \( \sqrt{-1} \) 的意义是什么?当然你也可以声称它无解,这个决定本身是由于外部需求(即语义)驱动的,但一旦这种需求确定下来,一定要有一个解时,局部的选择所产生的对象就是语法驱动的。

自然数和零

如果你对语法和语义区分感觉到模糊,那么这是自然的,就像人类花了很长时间接受 0 一样。

计数语义

自然数 1, 2, 3… 可能是人类最早发明的数系。它的意义根植于“一只羊、两条鱼、三个人”这样的物理世界的计数活动。

语法上,自然数又有非常明确的规则,尤其是早期用手指或划竖线来表示自然数时,获得下一个数的规则就是继续展开一根手指或者在右侧添加一条竖线。

因此,这里语法和语义几乎重合:数数既是物理动作,也是符号规则。你很难说清楚,究竟是因为现实中有三个苹果,所以我们定义了“3”;还是因为定义了“3”和加法,我们才能理解“三个苹果”。

这种符号和外部世界意义的模糊化或者强耦合使得当用一个新的符号如 & 或 0 来表示没有苹果时,人们会感到非常的不适。

既然三个苹果是三根竖线 ||| ,两个苹果是两根竖线 ||, 一个苹果是 |, 那么没有苹果不就是 吗?

物体的空缺对应的不应该是指代它的符号的空缺吗?

既然什么都没有,为什么又有一个符号来表示呢? 用“有”来表示“无”,不是矛盾吗?

(请在本文中暂时克制进入“有”和“无”是矛盾统一的辩证法或 "空即是色,色即是空" 佛法轨道)

构词法和 0

0 出现的动机,更主要来自于方便表示大数时的编码规则,尤其是十进制这种用位表示权重的记法。

十进制并不只是用到了 0 到 9 这十个符号,更重要的是每个符号的值由其所在的“位”决定。比如 1211 并不是 1+2+1+1=4, 其中的 2 首先有空间占位符的功能——表明“百位”这一权重位置被占用了,尽管任何数字放在这个位置都体现“百”,但你必须有一个符号存在以维持位值结构。在此基础上再将它解读为 2 个,因此 1211 里的 2 是有 2 个 100, 在这种构造数字的规则下, 0 的出现是自然的, 因为需要表达某个位所代表的权重的缺失,1011 中 0 先根据所在位置解释成“百位”(也可以用空格来表示 0 但这会导致无法区分前缀和后缀的空格,也很难数出连续有多少个空格),然后 0 被解释成“没有”,最终得到的完整意义是“百位的缺失”。

与之相对的是罗马数字:它用 I、II、III、IV、V 等符号累加表示数值,不需要占位符,因为每个符号直接贡献自身的值,没有额外的对语法结构的解释。罗马人完全理解“什么都没有”这个概念,但他们从未将其发展为一个数字符号——因为他们的记数系统语法上不要求一个“空位”参与运算。

为什么人们接受了这种十进制进位计数法,而非罗马计数法?答案很朴素:它好用。它可以用很短的字符串表示生活中用到的足够大的数字,更重要的是,可以基于这种编码方式发展出相对方便的加法和乘法的规则,比如竖式计算法等。

对 0 的接受告诉我们:一个数字在更大的语法结构中,会被语法结构本身赋予额外的意义,而它原本的语义不单单是指代外部世界,还可以描述结构的属性,二者结合才能获得完整的解释。一个在语义上“不存在”的东西,也可以用符号来表示,单独的 0 并不是什么都不指代,而是指代了“个位”的缺失,这是一种对符号结构自身的描述。

这正是数系“语法驱动”的第一次显现:不是外部世界要求我们引入 0 (罗马人可以拒绝),而是为了表达更大的数时的语法结构强迫我们接纳了这个“空”的符号。

负数和整数

异常

如果说 0 的引入是构造最基础的语法对象 – token 时,构词规则的内在要求;那么负数,则是语法对象在按照运算规则转变时,为了满足流畅和好用性(或称为封闭性)而主动向语法规则妥协的产物。

计算加法的时候,一切都很自然:3+10=13,10+13=23,13+23=36……这也自然引出了减法——从 36 只羊里选出 13 只,那么剩下 23 只。但当遇到“3 减去 5”时,问题出现了:你无法从 3 只羊中取出 5 只。

人们可以说“减去比自己大的数是不合法的”,也就是直接在这里抛出异常、中止计算。就像罗马数字系统那样,干脆不让这种运算出现。

延迟计算避开异常

但假设我们有这样一个等式: 5 + 5 = 7 + 3 。它可能表示某种收支平衡:左边是“先买5元又买5元”,右边是“先买7元又买3元”,结果总支出一样。现在,我想在等式两边同时“减去5”(比如取消一笔5元的购买),得到: 5 = 7 + 3 - 5 。

接下来,如果我想把右边的 "3-5" 先算出来(毕竟如果是 7+5-3, 先算 5-3 是合理的,我们希望这种合理性在更多场景下进行扩展),问题就来了:3 - 5 是什么?如果直接定义“减法只能大减小”,那么这一步就被卡住了——尽管最终整个表达式(7+3-5)会等于5,但中间步骤的“非法”却让推演无法进行。

这正是负数诞生的动机:我们希望在代数推演中“只管算,不中断”(就像十进制就是好用一样)。符号在成为最终答案之前,需要经过各种变形、移项、合并,如果每遇到一个“不够减”就宣布非法,那么整个代数语言就会变得支离破碎,很不好用。

我们可以把每个减法都暂时结晶,比如把 3-5 就看作一个数,等之后做加法时,比如 3-5+3, 可以先计算 3+3 然后减去 5 得到 1 ,而如果遇到 3-5 再减去 5 的情况,从语义上可以解释成 3-10, 即连续减法等于减去累计值,这在一般自然数里是合理的,比如 10-3-3 等于 10-6。

这种处理带有一种延迟计算的思想,把目前不合法的运算变成合法的“中间状态”,将它丢给未来处理,以使得推演可以流畅进行下去,即便最后无法回到自然数,最终也能得到 a-b 形式的数。

取消延迟和 0 在整数中的新语义

这又是一种构词法的扩展,避开了“异常”,但会带来一些不必要的麻烦,比如 5-3 也可以被看作一个独立对象,而我们知道它是 2, 把看似找不到外部语义解释的运算过程封装成一个词法对象的做法推而广之,不禁会把 2+3, 13+14 也都看作词法对象,然而它们都有一个更为简单,更规范的具有代表性的表征: 5 和 27 。 类似地,我们应该考虑把 3-5 也规约到一个更典型词汇上,这最终促使了我们现在所看到的负数。因为所有 a-b 形式的自然数对都可以等价到 0-c 或 c-0 形式,如果 a>b, 那么自然数 c 就等于 a-b 的运算结果, 如果 a<b, c 就等于 b-a 的运算结果。而 0-c 可以用 -c 表示, c-0 则用 c 表示。

这样我们不需要把 a-b 赋予两种类型,一种是计算,另一种延迟计算的数,而是把 a-b 规约到一个自然数 c 和 0 的关系上,如果该自然数比 0 大,那么记为 c, 否则记为 -c 。

所以,负数的诞生与 0 的引入的逻辑很相似——都是语法驱动,0 是为了“构词”(位值表达),负数是为了“造句”(运算连续),在自然数实践中,人们已经发现加法可逆等规则的正确性和便捷性,当遇到小的数减去大的数时,干脆就创造一个新的语法标志(添加负号)来满足它,构造出负数,以保证推演过程不被“异常”打断。

在有了负数之后,连同 0 以及自然数组成了更大的整数数系, 可以用它对世界上许多其他事物找到更好的解释,而其中 0 本身的意义也扩充了,比如温度(零上与零下)、方向(东与西)、债务(资产与负债)、时间(公元前与公元后)。这些看似不同的概念,在负数的框架下被统一为同一种语言:以 0 为对称中心的数轴,0 成了一个约定的基准,而不是什么都没有。

这是语法反向对语义的扩充。

有理数

许多情况下,除法是自然的:6 个人分 3 个苹果,每人得到 2 个。但如果 3 个人分 2 个苹果呢? 似乎无法用一个整数来表示,比如要么非精确地丢掉一个苹果,每人只分一个,要么将其定义为“非法”或“中止计算”。

但通过创造负数,我们已经解决了减法中的异常;类似的,我们也可以通过创造新的数,来解决除法中“除不尽”或“不整除”的困境。

我们直接保留 3/2 这个结构,将它看作一个临时的“运算结晶”。它不急于被算成某个“完整的数”,而是以“尚未执行的除法”的形态存在。当未来乘以 2 时,它又可以回到 3。

然而,整数中通过给自然数添加单个比特的“负号”就可以把这种任意两个数的延迟运算转变成另一个自然数以及它和 0 的大小关系,获得更紧凑的轻量表达,有理数是否可行呢?

答案是否定的。除法的结果并不像减法那样可以简单地归约为“自然数+方向”。3/2 无法用整数加上一个符号来表达——它需要一个全新的符号构造:分数(或者等价的小数)。

为什么呢?按照减法的规约思路,如果 a/b 能够写成自然数 c 和某个常数 D 之间的关系,那么它必须能规约为 c/D 或者 D/c, 在这种约定下,就可以省略 D, 写成 c 或者 ~c 。 但经过运算验证发现这种期望无法实现,a/b 最多能写成最简形式,即没有公约数,比如其中最佳的是 a/a 约成了 1,但不能完全把某个数约分掉。

因此有理数的构造不再是“附加标记”,而是引入了新的语法结构(分数线、分子分母,或小数点后的无限可能)。

从这个角度看,有理数的创造体现了比负数更多的关于运算的信息。负数只是标记了“相反”这一操作;而分数 a/b 则把“被除数、除数、除法”三者都编码进了符号,这是为了把除法泛化到所有整数后对词法扩充的后果。

“异常”处理

除了这种构词的复杂,有理数还带来了一个不可避免的异常:除以零。

为什么不能像处理“不够减”或“不整除”那样,也为 a/0 创造一个符号?

可以尝试,比如把 1/0 看作一个延迟符号,那么问题来了: (1/0)x0 应该等于多少呢?

如果要满足交换律和刚建立的 a/a=1 的有理数等价性化简规则,那么 (1/0)x0 根据交换律等于 (0/0)x1 = 1 , 类似的,有 (2/0)x0=2, (a/0)x0=a 。

但由于 0 的乘法规则是 0 乘以任何数都是 0 (这非常符合语义,即再多个空还是空;且和 (a-a)*b 分配率的语法规则保持一致),那么有 0x1=0x2

两边除以 0 得到 0x(1/0)=0x(2/0) ,执行交换律得到 (0/0)x1=(0/0)x2 ,在把 0/0 化简成 1 得到 1=2 ,这和我们对自然数的定义矛盾了。

如果定义它为其他结果也会导致类似的矛盾,所以 1/0 是可以看作一个符号,但这个符号无法参与到交换律等其他有理数共同遵循的游戏规则中,

你可以生硬的保留 0x(1/0)=0x(2/0), 只有未来乘以 0 时又回到 0x1=0x2, 这意味着要放弃交换律、分配律等熟悉的规则,这样的系统在日常推理和物理应用中几乎不被使用,它牺牲了太多我们习以为常的运算直觉(语义)。

你也可以创造一个数系,其中 1=2 或者所有数都相等,那么它就相当于只有一个数 0, 这样的数系是可以存在的,除以 0 也是允许的,但它在语义层面没什么用,就等于一个 0。

所以, 1/0 或 a/0 可以看作延迟符号,但它只能以一种“冻结”的状态存在:它左右两侧的运算都被“结晶”,只能等待未来乘以 0 来“解开”——而一旦解开,要么回到原状( 0×(1/0)×0=0),要么陷入矛盾。这种“延迟”没有带来新的运算能力,只是把矛盾推到了未来。

所以,并非所有异常都可以在语义被承认有用的情况下被“语法化”。数学的扩展需要遵循书写数学的语言 – 逻辑的规则(而逻辑里的一致是经过更多场景检验的,包括非数学领域的日常推理场景):只有当新对象引入后,原有规则仍保持一致,且推演不出现逻辑矛盾时,扩展才是合法的。

代数数

在自然数和 0 基础上,我们通过“加法逆”得到了负数和整数,通过“乘法逆”得到了有理数。那么,下一个自然的扩展方向是什么?

乘方的逆

有理数的自然数乘方

自然数上的乘方如 \( 2^3 \) = 8, \( 3^2 \) = 9 有非常明确的语义:乘法的重复: \( a^n \) 就是把 a 自乘 n 次。只要 a 和 n 都是自然数,结果也总是自然数。乘方在自然数中畅通无阻,没有产生任何“异常”。

而乘方最直观的语义来源是几何——勾股定理告诉我们直角三角形的边满足 \( a^2+b^2=c^2 \),这直接催生了“平方”的广泛应用。

当将底数从自然数扩展到有理数,重复乘法的语义仍然得到延续,\( (2/3)^2 = 4/9 \), \( (1/2)^3 = 1/8 \) , 这是因为有理数对乘法封闭,重复地乘以有理数得到的还是有理数,我们似乎可以在有理数这个类型里随意计算自然数次幂的乘方。

有理数的 0 和 整数乘方

但当指数从自然数扩展到 0 时,我们遇到了第一个“语法扩展”的契机。按照“重复乘法”的语义,\( a^0 \) 没有直接的定义,但为了让指数法则 \( a^{m+n} = a^m \cdot a^n \) 在 m = 0 时仍然成立,我们需要规定 \( a^0 = 1 \)(\( a \neq 0 \))。这是典型的“语法驱动”定义:不是从语义中直接得出,而是为了保持规则的一致性而人为添加。

类似地,当指数扩展到负整数时,例如 \( a^{-n} \),我们同样希望指数法则继续成立。从 \( a^{n} \cdot a^{-n} = a^{0} = 1 \) 可以延展出 \( a^{-n} = \frac{1}{a^n} \)。这又是一个为了维持规则一致性而做的语法扩展。

这些定义并非直接来自“重复乘法”的语义,因为重复 1/3 次并没有一个合理的解释,它是为了让乘方的代数规则(即指数法则)在更广的指数范围内保持自洽。这类似于我们为了减法封闭而引入负数——都是语法层面的“修补”。

经过这样的扩展,有理数的整数次幂仍然是有理数:\( 2^{-3} = \frac{1}{8} \),\( \left(\frac{3}{4}\right)^{-2} = \frac{16}{9} \)。

新的“异常”: 0^0 和 0/0

在定义 \(a^0 = 1\) 时,我们特别附加了条件 \(a \neq 0\)。那么 \(0^0\) 呢?

我们尝试通过不同现有语法规则去填补它:

  • 如果坚持“任何非 0 数的 0 次幂等于 1”的规则,那么可以得到 \(0^0 = 1\)。
  • 如果从 “0 的正数次幂等于 0” 出发,即 \(0^1 = 0\),\(0^2 = 0\),……那么 \(0^0\) 应该等于 0。
  • 如果按照指数法则 \(0^{0} = 0^{1-1} = 0^1 \cdot 0^{-1}\),而 \(0^{-1} = 1/0\) 是未定义的。

多种已有语法规则的延伸相互冲突,甚至有一种会导向未定义,这时候用哪一个,就成了一个语义选择问题。

我们必须借助数学之外的意义来裁决,例如在组合数学的记数场景中,几乎不会遇到 \( x^{-1} \) 这样的运算, 而由于二项式定理是该领域的核心公式: \[ (x + y)^n = \sum_{k=0}^{n} \binom{n}{k} x^k y^{n-k} \]

为了在边界保持公式的合理性 – 如 \( (1+0)^0 \) = \( \binom{0}{0}1^{0}0^0 \) 时 – 就需要将 \( \binom{0}{0} \) 和 \( 0^0 \) 都定义为 1 。 这是在特定场景下由语法结构驱动的选择。

类似的,之前讨论过,对于 a/0,任何有实用价值的数学中赋予它意义的尝试都会导致逻辑矛盾(如从 \(0 \times 1 = 0 \times 2\) 推出 \(1=2\)),因此它被永久排除在算术系统之外。但和 \( 0^0 \) 类似,我们还需要单独去检查 0/0 的情况:如果按照 0 除以任何数为 0, 其结果或许应该是 0, 但按照任何数除以 0 为定义,它又不应该定义,它处于一种合法和非法的叠加态上。

等到后文实数和极限概念建立之后会看到,这类式子在不同场景下会可以有不同的取值, 这种由语法冲突带来的多样性,反而丰富了对 0 的理解,就像整数出现后, 0 不再是纯粹指代 "没有", 而是作为一种相对的基准。

这种处理方式也带来了一种新的认识:语法扩展的边界,取决于冲突的严重程度。如果冲突是绝对的、不可调和的(如 \(a/0\)),数学就选择永久禁止;如果冲突是局部的、且可以通过上下文约定来化解(如 \(0^0\)),数学就保留一定的灵活性,允许在不同场景下赋予不同的约定。

代数数

现在考虑 \( a^{\frac{p}{q}} \) 的例子,其中 \( a \) 是有理数,\( p \) 是整数,\( q \) 是自然数。

在自然数指数中,\( (3^2)^3 = 9^3 = 3^6 \) 的例子提醒我们,更一般的 \( (a^m)^n = a^{mn} \) 是成立的。

当有理数作为指数时,我们自然希望同样的语法规则成立:

\[ (a^{\frac{p}{q}})^q = a^{\frac{p}{q} \cdot q} = a^p \]

这意味着,\( a^{\frac{p}{q}} \) 应该是一个数,它的 \( q \) 次幂等于 \( a^p \)。换句话说,它是 \( a^p \) 的 \( q \) 次根:

\[ a^{\frac{p}{q}} = \sqrt[q]{a^p} \]

例如,\( 2^{\frac{3}{2}} = \sqrt{2^3} = \sqrt{8} \),而 \( 4^{\frac{1}{2}} = \sqrt{4} = 2 \)。

于是我们只需要关注 \( \sqrt[n]{a} \), 其中 a 是有理数,n 是自然数。

但这里同样会出现和自然数中减法以及整数中除法类似的问题:对于某些 a 和 n,这样的根号在有理数中是否存在?

人类发现的第一个不是有理数的数大概是 \( \sqrt{2} \), 通过勾股定理可知,它的是单位正方形斜边的长度。

假设 \( \sqrt{2} \) 是有理数,即可以写成最简分数 \(\frac{p}{q}\)(p, q 为互质的正整数)。那么: \[ \left(\frac{p}{q}\right)^2 = 2 \quad \Rightarrow \quad p^2 = 2q^2 \] 这说明 \(p^2\) 是偶数,因此 p 也是偶数,设 p = 2k,代入得: \[ 4k^2 = 2q^2 \quad \Rightarrow \quad q^2 = 2k^2 \] 于是 \(q^2\) 也是偶数,q 也是偶数。这与 p, q 互质矛盾。因此 \( \sqrt{2} \) 不能写成两个整数的比——它不在有理数中。

这意味着,当指数从整数扩展到有理数时,乘方运算的结果会超出有理数集。

这是一个新的“异常”:一个用已有运算(乘方和它的逆)构造出的表达式,在原有数系中没有对应的值。

按照前两次的“语法化”模式——对“不够减”创造负数,对“不整除”创造分数——我们自然也会想到:为这类表达式创造新的数。我们可以把 \( \sqrt[n]{a} \) 当作一个延迟操作对象,它保留着“尚未完成的 n 次根”的信息,等待未来与自身相乘 n 次时再化简。

但从 1/0 的扩展失败中知道,并不一定所有的 \( \sqrt[n]{a} \) 都是和现有运算规律相容的,有可能这样的数出现后,乘法交换律,结合率等都会失效。

另外,一种很值得怀疑的形式是 \( \sqrt{-1} \), 我们知道任何数的平方都是非负的,什么对象的的平方会是 -1, 这个对象真的能运算吗? 它会不会像 1/0 那样,一旦引入就破坏整个系统?

这些都是需要具体检验的,我们可以对单独的一些数,如 \( \sqrt{2} \) 在使用中检查,发现它可以参与到加减乘除

因此实际我们需要对这种数在各个规则下进行验证,

实数

零散捕捉到的实数、超越数

实数在人的认知层面,最初大概来自于几何,当画出一个边长为 1 的正方形后,根据勾股定律,斜边的长度满足 \( x^2=2 \), 现实使用中,我们可以用测量的方式得到一个很接近的值,或者用某种切割的算法得到 x 的近似值,大部分现实场景里这就足够了,人本身不需要无限的精确性才能感到满足,当算出结果发现在窗户上加装一个斜边所需要的木料的长度和价格在双方的接受范围内,那问题就解决了。

但人有一种把问题抽象成某种永恒的精确的东西的倾向,这可能源自于用 1, 2, 3… 来计数和做基本运算太过于成功,以至于人们分不清这是自然的还是人造的理想产物,于是把他们称为自然数,类似的,那些能通过整数以比例的方式表示的数,比如 5/3 也有非常明确甚至“优美动听”的解释,比如在一根弦的 3/5 或 2/3, 2/4 位置分隔开弹奏处的音符之间有一种和谐感。

于是人觉得 \( x^2=2 \) 中的 x 应该能够被整数以比例数的形式直接正向地表达出来,而不是仅作为满足方程约束后的一个逆向结果。

人们持续地零散的会捕捉到了一些落单的实数,它们就像是从一个无限次元的世界里掉落,比如各种代数方程的解, pi, e,但它们还不是全部。

无穷小和极限

有理数虽然是在扩充除法的时候而诞生的,但它还给予我们额外的新的能力:可以谈论足够小或足够接近。

比如我们谈论无穷小但不为 0 的正有理数

它让我们能够发展出一套精确的语言来描述“无限接近”: \( \epsilon, \delta \) 语言

比如,我们说一个序列 \(a_1, a_2, a_3, \dots\) 趋向于某个“极限” \(L\)(\(L\) 也是有理数),如果对任意正有理数 \(\varepsilon\),存在自然数 \(N\),使得当 \(n > N\) 时,\(|a_n - L| < \varepsilon\)。这里所有涉及的量——\(\varepsilon\)、\(N\)、\(a_n\)、\(L\)——都是有理数或自然数,没有用到任何“新数”。

但 ε-δ 语言的真正力量在于:它允许我们谈论“无限接近”本身,而无需预先指定那个被接近的对象。我们可以说一个有理数序列是“柯西列”:对任意正有理数 \(\varepsilon\),存在 \(N\),使得当 \(m,n > N\) 时,\(|a_m - a_n| < \varepsilon\)。这个定义只依赖于序列中项与项之间的距离,完全不依赖任何“极限值”。如果一个序列是柯西列,我们就说它“应该收敛”——它在无限接近某个东西,尽管那个东西可能不在有理数中。

这种“应该收敛却不在系统内”的状态,正是有理数带来的新视野。它让我们意识到:数系不仅有“运算封闭”的要求,还有“极限封闭”的要求。而 ε-δ 语言,就是我们在有理数层面谈论这种“无限接近”的语法工具。

从这个角度看,有理数的引入不仅仅是为了让除法封闭,它还意外地赋予了我们一种新的表达能力:**可以用有限的符号,描述无限的逼近过程**。这种表达能力,后来成为微积分的基础——而微积分,恰恰是“语法创造”最终在物理世界获得巨大“语义回报”的最典型案例。

这源于有理数的一个基本性质:任意两个不同的有理数之间,总存在另一个有理数,这在数学上被称为“稠密性”。

引入 delta 和 epsilon 语法之后,可以描述任意接近的概念 最终接近就已经体现处极限了,而且极限完全可在有理数层面谈论

实数和稠密、连续

有理数稠密性,让我们可以用有理数去逼近任何一个我们想要描述的量——哪怕这个量本身还不是一个数。

对实数一网打尽

之后人们希望将它一网打尽,但问题是,什么是网呢?

是逻辑,逻辑是什么?

用莱布尼茨的话,是可以几个人坐下来用纸和笔按规则从没有任何争议的起点出发所展开的东西,这确实很像在织网,编织的基本手法是逻辑的推理规则,编织出的节点和边是各个公理,命题,引理,定理,推论。

但我们现在知道,实数是无穷多的,而且是不可数无穷,即便是可计算的实数,人也是抓不完的,真的能一网打尽吗?

但什么叫作一网打尽?我们无法一一列出,也无法用可预测的方式写出一个遍历所有实数的生成函数。

我们可以谈论它的形式,柯西序列是一种形式

如今,你可以一个人坐下来,用程序去推导出所需要的实数的某些性质。

有哪些语义需要捕捉,即要编织哪些网呢? 核心是扩展空间并且过滤,比如自然数扩展成自然数对 (a-b) 会得到整数,整数继续扩展成整数对 (A//B) 然后过滤掉其中 B=0 的部分,会得到有理数。

但为什么不能循着这个思路去构造出有理数对,比如 (a^b) 构造出实数呢?其中 b 是

为什么不是能够进行根号运算呢?毕竟整数相比于自然数是多出了负运算,即对一个自然数取反, 3 得到 -3, 5 得到 -5, 有理数相比于整数多出的是倒数运算(除 0 之外), 3 得到 1/3, 5 得到 1/5 为什么实数比有理数多出来的不是求根,即乘方的逆运算, 3 得到 \( \sqrt{3} \), 5 得到 \( \sqrt{5} \) 呢?

这就是网的密度问题了,你可以织出一个相比有理数来说,只是多出乘方逆运算的网,并且捕捉到这些额外的根号数,但之后你会发现这样的场景:你本想把一个池塘里的所有虾(实数)都捕捞起来,但最终网里只有少数几只虾,同时还有许多螃蟹(虚数),虽然这个网有捕捉部分实数的能力,但捞的不够(逻辑的术语是不完备,统计的术语是召回率很低),同时还捞出了一些不是实数的对象(逻辑的术语是不可靠, 统计的术语是假阳性导致准确率很低)

你会发现,根号数仅仅是你所期望的那种完全绵密的数的一小部分,而这种性质是通过非空实数集合存在上确界来刻画的,它既能排除掉虚数,又能把所有实数捞出来。这个网是可靠 (sound) 且完备的 (complete) 的。

从抓到第一个实数 \( \sqrt{2} \),到编织出这张网,似乎花费了人类近 2000 年,而且只是一小部分人类意识到要造这张网。

首先它,这出现了一个看上去非常奇怪的核心性质,上确界?

总之,捕捉实数是一个和语言学密切有关的问题,当外部世界以及现有的对外部世界的抽象(整数,有理数)交织出了某种新的微妙的语义时,你意识到现有的词汇和语法规则对它的描述非常别扭,总在隔靴搔痒,就像原始部落的人看到了一台现代计算机,变得捶胸顿足口不择言,只能用幽灵,怪力乱神或者奇技淫巧去掩盖内心的慌乱,给自己壮胆,或者保持缄默,此时你要做的是去扩充词汇,增加修辞造句的语法规则,扩充甚至重构语言,重新学会说话,最终把新的对象精准地富有感情地描述出来,这种数学上的“抒情”被称为 “分析”,新的语言一旦重建,你会发现它不单单能描述强迫症一般的实数数学概念,最终还能描述计算,形式语言等“未来”的概念,促成了计算机、AI 的诞生,还额外促成了哲学上语言学的转向。

这是一种嘴遁,但普通的语言能变成魔法的核心在于,这种语言不单单是人的大脑这种解释器能理解,如果人之外的客观对象,比如魔法棒,金箍棒或机器也能理解的话,它就能获得远超过人类能掌控的力量。

复数

增维,特征变换

此时,推动数系演变的动力主要来自形式系统内部的封闭性要求——比如,为了让方程 +1=0 有解,就必须引入虚数单位 i i;为了让减法永远封闭,就必须从自然数扩展到整数。这些步骤几乎是被“语法”逼着走的,没有多少“语义”层面的自由选择。

可计算数

radioLinkPopups

如对本文有任何疑问,欢迎通过 github issue 邮件 metaescape at foxmail dot com 进行反馈