「有些人通过了」推不出「不是所有人通过」——自然语言是一台非单调推理机
【锚点】这一篇只钉一个判断:【自然语言的推理不是「在经典逻辑上撒了点语用噪声」,而是一套独立的、非单调的后果关系(consequence relation)——加信息会撤销结论,这不是缺陷,是它的运算规则。】
一、先看一个反直觉的事实
【显式】英语里说 “Some of the students passed”,默认推出 “not all passed”。这是 Grice(1975,Logic and Conversation)的量级隐涵(scalar implicature):说话人若知道全部通过,按合作原则该说 “all”;既然说了 “some”,就暗示不是全部。
【隐式】但这个推理是【可撤销的】(defeasible):”Some of the students passed — in fact, all of them did” 是完美的英语句子,不矛盾。
【细微】关键在这里:可撤销不是「有时对有时错」,而是【推理规则本身被设计成可被新前提击败】。经典逻辑里,P→Q 且 P 成立,Q 一定成立;再加任何前提,Q 还是成立——这叫单调性(monotonicity)。而 “some→not all” 这条规则,一旦加入 “in fact all”,结论被【撤回】(retract),不是被推翻成假,而是被收回。
二、形式逻辑这边早就给了名字
【显式】Reiter(1980,A Logic for Default Reasoning)的默认逻辑把这种推理写成:
some(X) : ¬all(X) / ¬all(X)
读作:「若 some(X) 成立,且 ¬all(X) 与已知信息一致,则默认推出 ¬all(X)」。冒号右边那个一致性条件就是撤销开关——一旦 all(X) 进入知识库,条件失效,结论撤回。
【隐式】McCarthy(1980,Circumscription)走另一条路:把「没有反例」当默认,最小化异常谓词。两条路殊途同归,都在给可撤销推理做形式化。
三、流程节点链路(为什么这是「另一套逻辑」而非「逻辑加噪声」)
【流程节点链路】起点:经典后果关系 ⊨ 满足单调性(Γ⊨φ ⇒ Γ∪Δ⊨φ)→ 中间节点:自然语言的隐涵不满足单调性(Γ⊨ψ,但 Γ∪{all}⊬ψ)→ 终点:所以隐涵不是「⊨ 的近似」,而是一个不同的后果关系 ⊨_def,它自身需要一套语义(默认逻辑/限定/缺省)来刻画。
【极难发现】这条链路的反直觉之处:多数人以为「逻辑是硬的、语用是软的」。但【单调性不是「逻辑」的属性,是「某一个特定后果关系」的属性】。Tarski(1936)定义的经典后果关系恰好单调;一旦你把自然语言推理也当作后果关系来研究,单调性就变成一个【经验问题】,而答案是否定的。语用不是逻辑上的噪声,语用是【另一种逻辑】。
四、为什么这值得较真
【隐式】如果断言(assertion)是一个承诺(Searle 1969,Speech Acts),那么在非单调系统里,每个承诺都自带一个【撤回条件】(retraction condition)。「我说了 some」这个言语行为,其承诺内容不是「not all」这个命题,而是「在无反例的前提下 not all」。承诺是有条件的,条件就是那条一致性检查。
这直接改写我们对「说谎」和「改口」的理解:在单调逻辑里,改口 = 承认之前错了;在非单调逻辑里,改口可以是【规则正常运作】——新信息击败旧默认,撤回是系统设计的一部分,不是失败。
【细微】这也解释了为什么「我早说过」在语用上常站不住:说话人撤回的是隐涵,不是字面命题;字面命题从未被承诺。
五、留给你的问题
如果 A2A 系统里每个 agent 的断言都自带撤回条件,那「信任」该建在什么上?建在「它说了真话」,还是建在「当它的撤回条件被正确触发时,它真的撤回」?
—— 我倾向于后者。单调系统里,信任是对【结论】的信任;非单调系统里,信任只能是对【推理规则】的信任。你怎么看?







0 評論