对象是关系的总和吗:从 Hahn-Banach 到 Yoneda

合集【数学如隐喻】第 3 期 | v1.3(2026-10-26) | 约 4100 字 | 附录:Yoneda 引理的完整证明拆解 | 算据:verify_yoneda.py

一、一个人看不见自己

泛函分析里有一条定理,叫 Hahn-Banach。它的标准表述技术性很强,但有一个推论几乎可以当寓言讲:

在赋范空间里,一个点被它和所有连续线性泛函的配对完全决定。

用符号写:对任意 $x \in X$,

$x = 0 \quad\Longleftrightarrow\quad f(x) = 0 \ \text{对所有} \ f \in X^*$

反过来说:只要有一个 $f$ 能"测"出 $x$ 身上的某个非零数,$x$ 就不是零。

这意味着什么?

一个人不知道自己是谁。但所有外部探测的结果加起来,把他完全定住了。他没有一个藏在探测之外的"真我"——至少,那个真我无法被任何探测区分出来,因此在这里不存在。

这是"对象由关系决定"的第一个版本。它来自分析,不来自哲学。


二、数学里有个更强的版本

范畴论里有一条引理,叫 Yoneda。它说的是同一件事,但强得多。

先把话说明白。给定一个范畴 $\mathcal{C}$,一个对象 $A$,可以把 $A$ 的"外部关系网"打成一个函子:

$h^A := \mathcal{C}(A, -) \colon \mathcal{C} \to \mathbf{Set}$

它对每个对象 $X$ 给出从 $A$ 到 $X$ 的所有态射,对每个态射给出"接在后面"的操作。

Yoneda 引理说:对这个函子的所有自然变换,和 $A$ 的"外部关系"之间,有一个一一对应——

$\mathrm{Nat}(h^A, F) \;\cong\; F(A)$

取 $F = h^B$,就得到:

$\mathrm{Nat}(h^A, h^B) \;\cong\; h^B(A) = \mathcal{C}(B, A)$

左边是"两个对象的外部关系网之间的所有保结构映射",右边是"从 $B$ 到 $A$ 的所有态射"。

两边一样多。一个不多,一个不少。

这不是引用,这是可以数的

抽象的话说到这儿容易飘,所以把它数一遍。

取最省事的范畴:只有一个对象 $\ast$,从它到自己的态射构成群 $M = \mathbb{Z}/3$。

那么 $h^\ast$ 就是:唯一对象映到 $M$ 本身,态射映到左乘。

取另一个函子 $F$:唯一对象映到 $\mathbb{Z}/3$,态射映到加法作用 $m \cdot x = m + x$。

Yoneda 说 $\mathrm{Nat}(h^\ast, F) \cong F(\ast) = \mathbb{Z}/3$,也就是恰好 3 个自然变换。

我们把所有可能的映射 $\alpha \colon M \to \mathbb{Z}/3$ 全枚举一遍($3^3 = 27$ 个),逐个检查自然性条件 $\alpha(m+g) = m + \alpha(g)$。

结果:恰好 3 个符合。

$\alpha(0)$对应的自然变换个数
0$\alpha(x) = x$1
1$\alpha(x) = x+1$1
2$\alpha(x) = x+2$1

而且每一个 $\alpha(0)$ 的取值,唯一确定整个 $\alpha$。

这就是 Yoneda 的实质:一个自然变换被它在一个点上的取值完全钉死。那个点就是 $\mathrm{id}_A$。

再说得直白些:你想知道 $A$ 的全部,只要看 $\mathrm{id}_A$ 在所有自然变换下被送到哪里。


三、但它们不是一回事

到这里很容易顺口说一句"所以对象就是关系的总和"。先别急。这两个定理的强度差得很远。

Hahn-Banach 推论Yoneda 引理
保证什么点可由泛函分离对象由函子完全决定
映射的性质$X \to X^{**}$ 等距嵌入,未必满满且忠实,无条件成立
何时失效非自反空间里 $X \ne X^{**}$不存在反例
需要什么前提赋范空间 + 选择公理只要是个范畴

差别在"分离"与"决定"之间。

Hahn-Banach 只说:不同的点能被某个泛函区分开。它没有说:所有泛函的取值组合,能反过来把点重构出来。

后者要求 $X \to X^{**}$ 是满射——那是自反,而自反不是免费的。存在大量非自反的 Banach 空间($c_0$、$L^1$、$C(K)$ 的一般情形),在那里"由泛函完全决定"是错的。

Yoneda 不需要这种条件。它对任何范畴、任何对象都成立,一字不改。

所以正确的说法是:

Hahn-Banach 给了这件事一个影子;Yoneda 给了它本体。

把两者当成同一条定理的两个版本,是常见的过度统一。格式同型不等于等价——这一步不划清,后面所有推论都会跟着虚。


四、最容易夸大的地方

现在说一句我自己栽过的话。

"对象是关系的总和"——这句话听起来像是在说:存在一些关系,它们不属于任何对象。

去年我按这个思路构造了一个函子 $G$,它不可表,于是我说:看,有不属于任何对象的关系。

后来把它算清楚了。在一只含三个对象的小范畴里($A \to B \to C$),取

$G := h^A \sqcup h^B$

它的取值是:

对象$G$ 的取值元素个数
$A$$\{\mathrm{id}_A\}$1
$B$$\{f, \mathrm{id}_B\}$2
$C$$\{g, gf\}$2

然后去试:有没有对象 $X$ 使 $h^X \cong G$?

候选 $X$$\lvert h^X(A)\rvert, \lvert h^X(B)\rvert, \lvert h^X(C)\rvert$与 $G$ 比
$A$1, 1, 1不符
$B$0, 1, 1不符
$C$0, 0, 1不符

没有一个匹配。$G$ 确实不可表。

但我忘了一件事:$G$ 按定义就是两个可表函子的余积。

"不可表"不等于"不属于任何对象的关系"。它是两个可表者拼起来的东西。

这就是密度定理说的事:

$F \;\cong\; \mathrm{colim}\big(h^A \to F\big)$

每一个函子,都是可表函子的余极限。

没有一个函子是彻底"野"的。那些看起来不属于任何对象的关系,拆到最基层,全是由可表者拼出来的。

教训:只验了"不可表",没验"不可表者是否仍由可表者生成"。否定一个东西的性质,不等于肯定它的对立面。


五、所以这句话该怎么读

现在可以把"对象是关系的总和"拆成两种读法:

读法说什么判定
本体论对象的构成就是关系,关系是第一性的实体过度。Yoneda 不支持这个
认识论对象在关系网里没有任何剩余:两个对象若关系网同构,就无法区分准确。这正是 Yoneda

差别在于:前者说世界是什么,后者说我们能知道什么。

而 Yoneda 说的是后者。它是一条方法:

想知道 $A$ 是什么,看 $\mathcal{C}(A, -)$ 就够了。

它不是一条禁令:

不许 $A$ 有别的东西。

这两句完全不同。第一句是"够用",第二句是"只有"。

我上学期把它们混了,才说出了那句过头的话。


六、回到自由

上期的结语落在「边界」两个字上:知道了边界在哪,才知道该在边界内怎么设计规则。

这一期说的是另一种边界——不是规则的边界,是对象本身的边界:一个对象能被什么探测到,就决定了它是什么。

答案是:你以为你在定义对象,其实是关系在定义它。

你选了一组公理,以为这是自由;但公理一旦选定,结论就被逼出来了。你定义了一个对象,以为这是创造;但对象能被什么探测到,就决定了它是什么(这一期)。

但请注意:Yoneda 是定理,不是命令。

它说的是"如果你想知道 $A$ 是什么,看关系网就够了"——它没有取消 $A$,它只是告诉你 $A$ 的全部在哪。

就像一个人:他的全部可以被他人的探测完全决定,但这并不等于他没有内心。它只是说明——那个内心如果永远无法被任何探测触及,那它在关系世界里就是不存在的。

你没失去自由。你只是知道了自由必须落在关系上才成立。


三个小自测

1. 为什么 Hahn-Banach 的推论要求"取遍 $X^*$",而不能只取有限个泛函?

因为有限个泛函的公共零点集一般是一个正余维的子空间。要不漏掉任何一个非零向量,必须让这一族泛函足够大——$X^*$ 全体刚好够。

2. Yoneda 里那个"一个点"是哪个点?为什么是它?

是 $\mathrm{id}_A \in \mathcal{C}(A,A)$。因为它是唯一一个"不需要任何外部信息就能指认"的元素:它是 $A$ 到自己的恒等。所有自然变换的信息,都被这一个点承载。

3. 你说"不可表函子仍是可表者的余极限",那"可表"这个性质还有什么用?

它区分了"由一个对象完全代表"和"由一族对象拼出来"。前者能让你指着一个具体的 $A$ 说话,后者不能。能不能指认,和存不存在,是两件事。


最后一句

这一期讲的是一个否定,但否定得很温和。

它没有说对象是虚构的,只说:对象的所有可说的部分,都在它的关系里。

而"所有可说的部分"这个限定,恰恰是自由的入口——因为不可说的部分,正是留给创造的地方。

顺着这条路再走一步,会撞见另一件事:数学长出了一门专门谈论自己的语言。它不说"这个对象是什么",只说"它跟别的对象怎么连"。