一相无相分

金刚般若波罗蜜经 · 第九品 / 三十二品

原文

“须菩提!于意云何?须陀洹能作是念:‘我得须陀洹果’不?”

须菩提言:“不也,世尊!何以故?须陀洹名为入流,而无所入;不入色、声、香、味、触、法,是名须陀洹。”

“须菩提!于意云何?斯陀含能作是念:‘我得斯陀含果’不?”

须菩提言:“不也,世尊!何以故?斯陀含名一往来,而实无往来,是名斯陀含。”

“须菩提!于意云何?阿那含能作是念:‘我得阿那含果’不?”

须菩提言:“不也,世尊!何以故?阿那含名为不来,而实无不来,是故名阿那含。”

“须菩提!于意云何?阿罗汉能作是念:‘我得阿罗汉道’不?”

须菩提言:“不也,世尊!何以故?实无有法名阿罗汉。世尊!若阿罗汉作是念:‘我得阿罗汉道’即为着我、人、众生、寿者。世尊!佛说我得无诤三昧,人中最为第一,是第一离欲阿罗汉。世尊!我不作是念:‘我是离欲阿罗汉。’世尊!我若作是念:‘我得阿罗汉道。’世尊则不说须菩提是乐阿兰那行者。以须菩提实无所行,而名须菩提,是乐阿兰那行。”

白话

「须菩提,你怎么看?证得须陀洹果的人,能起这样的念头——『我得到了须陀洹果』吗?」

须菩提说:「不能,世尊。为什么?须陀洹的意思是『入流』(进入圣者之流),但实际上并没有一个可进入的东西;正因为他不再陷入色、声、香、味、触、法这六种对象,才被称为须陀洹。」

「须菩提,你怎么看?证得斯陀含果的人,能起『我得到了斯陀含果』的念头吗?」

须菩提说:「不能,世尊。为什么?斯陀含的意思是『一往来』(还要在人天之间往返一次),但实际上并没有真实的往来这回事,只是被称为斯陀含。」

「须菩提,你怎么看?证得阿那含果的人,能起『我得到了阿那含果』的念头吗?」

须菩提说:「不能,世尊。为什么?阿那含的意思是『不来』(不再回到欲界受生),但实际上并没有一个真实的『不来』,所以才称为阿那含。」

「须菩提,你怎么看?证得阿罗汉的人,能起『我得到了阿罗汉道』的念头吗?」

须菩提说:「不能,世尊。为什么?实际上并没有一个叫『阿罗汉』的固定实法。世尊,如果一个阿罗汉起了『我得到了阿罗汉道』的念头,那他就已经执着于我相、人相、众生相、寿者相了。世尊,佛说我证得了无诤三昧,在人中排第一,是第一位离欲阿罗汉。但世尊,我从不起『我是离欲阿罗汉』这样的念头。世尊,我如果起了『我得到了阿罗汉道』的念头,世尊就不会说须菩提是乐于阿兰那行(无诤之行)的人了。正因为须菩提实际上没有『所行』这回事,才被称为『须菩提是乐阿兰那行的人』。」

这一品在说什么

  1. 佛以初果发问:须陀洹会不会想「我得了须陀洹果」?须菩提答不会——「入流」只是名字,实际无所入,不入六尘才叫入流。
  2. 同一提问推到二果斯陀含:名为「一往来」,而实无往来。
  3. 再推到三果阿那含:名为「不来」,而实无不来。
  4. 推到最高的四果阿罗汉:干脆「实无有法名阿罗汉」;一旦起「我得道」之念,就落入我、人、众生、寿者四相,与所证直接矛盾。
  5. 须菩提以自己作证:佛公开评定他得无诤三昧、人中第一、第一离欲阿罗汉,但他本人从不这样想;正因「实无所行」,「乐阿兰那行者」这个称号才成立。

深度解读

这一品在全经论证结构中的位置很清楚。第 7 品「无得无说」已经立了一个命题:佛所证的无上正等正觉(阿耨多罗三藐三菩提)「无有定法可得」。这个命题针对的是最高处。一个自然的反驳是:好,佛果太高、不可思议,说它不可得也许成立;但小乘修行的四个果位有明确的定义、明确的断证标准,总该是实实在在「得到」的东西吧?第 9 品就是把第 7 品的结论向下做归纳检验:从最初级的须陀洹,一级一级问到阿罗汉,逐一证明「得果」这件事在每一级上都经不起「有一个我得到了它」的表述。昭明太子给本品起的标题「一相无相」是对结论的概括:四果看似四个不同的相(阶位),实际同归一实相,而实相无相可取。

四个果位是原始佛教的标准修行阶梯,以断除烦恼的程度划分。须陀洹(梵文 srotāpanna),意译「入流」或「预流」,指初步断除见解层面的迷惑(见惑),进入圣者之流;斯陀含(sakṛdāgāmin),「一往来」,指还需在天界与人间往返受生一次;阿那含(anāgāmin),「不来」,指不再回到欲界受生;阿罗汉(arhat),意为「应供」「杀贼」,指烦恼断尽、生死已了。南怀瑾在《金刚经说什么》里用「见惑」「思惑」两组概念解释这个阶梯:见惑是身见、边见、见取见、邪见、戒禁取见五种观念上的错误,思惑是贪、嗔、痴、慢、疑五种习气上的纠缠;果位的高低,就是这十样东西断了多少。

本品的论证形式高度统一,值得单独拆开看。每一果的回答都是同一个三段式:X 名为 Y(名字的字面义),而实无 Y(字面义所指的事在实相中不成立),是名 X(名字仍然有效)。「入流而无所入」是最典型的一句:须陀洹之所以叫「入流」,恰恰是因为他不再流入色、声、香、味、触、法——定义一个成就的,是名字字面所描述的那个动作的缺席。对照梵文本,佛的提问原文是问须陀洹是否会生起「我已得须陀洹果」(mayā srotāpattiphalaṃ prāptam)这样的念头——重点从头到尾不在果位是否存在,而在那个「我得」的念头能否成立。到阿罗汉一级,答案给出了明确的归谬:阿罗汉的定义就是我执断尽;若他起「我得阿罗汉道」之念,念头里的那个「我」就重新立起了我、人、众生、寿者四相——他因此恰好不是阿罗汉。「得道」的宣称与「道」的内容自相矛盾,这是一个严格的自反性论证,不是修辞上的谦虚。

须菩提最后以自己现身说法,把论证从第三人称换到第一人称。佛曾评定他「得无诤三昧,人中最为第一」。「无诤三昧」的「诤」是争竞、对立,三昧(samādhi)指心定于一处的状态;六祖惠能一系的解释是:无我人、高下、圣凡之分,故不恼众生、亦不令众生起烦恼。这里有一个近代学术上才澄清的细节:「阿兰那行」传统上多解为梵文 araṇya(阿兰若,森林、寂静处),即好住山林静修;但对照现存梵本,此处的原词是 araṇā(无诤)而非 araṇya,「乐阿兰那行者」对应 araṇā-vihārin,「以无诤而住者」,玄奘译本正作「无诤住」。两种读法在注疏史上并存——住静处与住无诤——而梵本支持后者,且与前文「无诤三昧」严格呼应。须菩提的结语「以须菩提实无所行,而名须菩提,是乐阿兰那行」把全品收拢:这个「第一」的头衔之所以成立,恰恰因为持有者从不认领它;一旦认领,头衔即刻失效。

注家对本品的侧重各有不同。江味农《金刚经讲义》把本品科判为初果至四果逐级的「离相」修证,视为对前文「无得」义的次第印证;惠能《金刚经口诀》一路向心性上会,重在无争胜负之心;南怀瑾则强调「道在心念」,把四果的差别落实为对念头的勘验功夫。角度不同,但对核心论证——得果者不作得果之念——没有分歧。

理工男视角

ENGINEER'S NOTES

本品的论证结构,最贴近的计算机概念是「释放后使用」(use-after-free)。

把「我执」看作一个指针 self,指向一块名为「我」的内存。四果的修行是一个逐步释放这块内存的过程:须陀洹断掉一部分对它的引用(见惑),斯陀含、阿那含继续减少引用计数,阿罗汉是 free(self) 彻底执行完毕——「我」这个对象不复存在。现在考察语句「我得阿罗汉道」:这个宣称要成立,必须先解引用 self 去取出那个宣称的主语。但阿罗汉果的定义就是 self 已被释放。于是「阿罗汉宣称自己得阿罗汉道」是一次对已释放指针的解引用——语句本身就是运行时错误,错误的出现恰好证明释放并未完成。这不是「得了道但不好意思说」的谦虚问题,而是类型层面的矛盾:宣称的动作与宣称的内容互斥。

「入流而无所入」则像一个无状态(stateless)服务。有状态的服务每处理一个请求就在会话里积累一笔记录;无状态服务处理同样的请求,但不留会话。须陀洹「不入色声香味触法」不是屏蔽六种输入——他照样看、照样听——而是输入不再写进「我」的状态。功能全在,会话为空。「入流」这个名字描述的正是这种不留状态的处理方式,所以「入流」的实义是「无所入」。

类比在两处失效,而失效处正是佛学越出工程学的地方。第一,在工程里 use-after-free 是 bug,要修复;本品却不打算修复它,而是把这个矛盾当作检测仪:凡是能通过「我得道」断言的,恰好没得道。第二,工程里对象释放后,指向它的名字就应作废;但经文说「是名须陀洹」「而名须菩提」——名字在对象释放后依然合法使用。这就是佛教二谛的安排:胜义谛上无我、无果、无所行,世俗谛上名言照常运转,须菩提还叫须菩提,还是人中第一。工程系统里名与实必须严格绑定,否则系统崩溃;般若的立场是名与实本来就没绑定过,看清这一点,系统反而不崩溃了。

写给高级程序员

FOR SENIOR ENGINEERS

本品四段问答的形式完全一致:X 名为 Y,而实无 Y,是名 X。这个三段式在软件工程里有一个精确的对应物:类型擦除(type erasure)与幽灵类型(phantom type)。

幽灵类型是只存在于类型系统里的标记。它给一个值加上品牌(brand),让编译器据此区分「已校验的输入」和「未校验的输入」、「已授权的句柄」和「裸句柄」——但它不添加任何运行时字段。编译之后,品牌被整个擦除,带品牌的值和不带品牌的值产物完全相同,一个比特都不差。类型在源代码层面真实起作用(名字合法、约束有效、误用会被拒绝),在运行时却「实无有法」。

用这套语义重读四果。须陀洹、斯陀含、阿那含、阿罗汉是四个类型,不是四种运行时状态。「证果」是一次类型收窄(narrowing):收窄前后,对象本身没有发生任何变化——没有新增字段,没有写入标志位,没有任何可以被 diff 出来的差异。这就是「实无所得」的工程含义:得到的不是一笔新数据,而是一个不改变对象的类型判定。而这个判定不发生在运行时——须菩提的「人中最为第一」是佛评定的,印可来自系统外部,如同类型检查由编译器完成,运行中的程序从不、也无法查询自己的类型。

现在看被破掉的那个动作。「我得阿罗汉道」在这套语义里是什么?是对象试图在运行时携带自己的类型标签——给自己写一个 rank 字段。问题不在这个宣称是否傲慢,而在它违反了品牌的构造方式:品牌的全部意义就是没有运行时表示,一旦某个对象在运行时带上了「我是阿罗汉」的标签,它携带的恰恰是这个类型定义所排除的东西,于是通不过收窄。断言「若作是念,即为着我人众生寿者」说的就是这次类型检查失败。

最后是「一相无相」。四个果位在类型层面是四个不同的名字,擦除之后,产物无从区分——不是变得相同,而是同样什么都没有添加。四相归一,一相即无相:四个类型共享同一个空的运行时表示。

// 果位是幽灵类型:源代码里合法有效,运行时被整个擦除
// ——「实无有法名阿罗汉」
declare const fruit: unique symbol;
type Srotapanna = { readonly [fruit]?: "入流" };
type Arhat = { readonly [fruit]?: "无诤" };

interface Practitioner {
  perceive(input: unknown): void; // 照样处理色声香味触法,只是不写进自身字段
  rank?: never; // 契约:不得携带自我标签
}

// 印可来自系统外部(世尊的评定),不在运行时发生
function certify(p: Practitioner): Practitioner & Arhat {
  // 「若作是念『我得阿罗汉道』,即为着我、人、众生、寿者」
  assert(!("rank" in p), "运行时带着自我标签的对象,通不过这次收窄");
  return p as Practitioner & Arhat; // 类型变了,对象没变
}

// 测试:证前证后,逐比特相同——证得的内容就是「无所得」本身
const before = structuredClone(subhuti);
const arhat: Arhat = certify(subhuti);
assert.deepStrictEqual(arhat, before);

这个映射在一处关键失效:类型擦除里,品牌在编译期是实有的——存在一个层面,果位在那里「真的存在」,只是运行时看不见。般若不给这个退路:连名言层面的「阿罗汉」也是假名,没有任何一个层面上它是实法,「是名」不等于「在类型系统里真有」。另外,编译器的保证是一次性、静态的,而无我不是验证通过后就持有的属性——须菩提「不作是念」是每一个当下的事,没有哪次 certify 能一劳永逸。

关键概念

概念 梵文/巴利文 解释
须陀洹 srotāpanna(巴利 sotāpanna) 初果,意译「入流/预流」,初断见惑、入圣者之流,最多七返人天必证解脱
斯陀含 sakṛdāgāmin 二果,「一往来」,欲界烦恼大减,还需往返人天受生一次
阿那含 anāgāmin 三果,「不来」,断尽欲界烦恼,不再回欲界受生
阿罗汉 arhat 四果,意为「应供」「杀贼」,烦恼断尽、我执已了的最高声闻果位
无诤三昧/阿兰那行 araṇā-samādhi / araṇā-vihāra 心住于无对立、无争竞的定境;「阿兰那」旧解为 araṇya(寂静处),梵本作 araṇā(无诤),玄奘译「无诤住」

金句

须陀洹名为入流,而无所入;不入色、声、香、味、触、法,是名须陀洹。

以须菩提实无所行,而名须菩提,是乐阿兰那行。

参考资料