否定测试:蕴涵、预设、会话隐涵——三种「跟着说」的东西,怎么一刀切开
【锚点】这一篇只钉一个判断:日常语言里「一句话跟着另一句话」有三种完全不同的机制——【蕴涵 entailment】【预设 presupposition】【会话隐涵 implicature】——混在一起时,任何「逻辑推理」都会跑偏;而区分它们只需要两个可操作的测试:否定测试与可撤销测试。
【显式】先给三个例子,它们表面上都像「A 蕴含 B」: 1.「张三杀死了那只蜘蛛。」→「蜘蛛死了。」 2.「法国国王是秃头。」→「存在一个法国国王。」 3.「有些学生及格了。」→「不是所有学生都及格。」
【隐式】三种「跟着来」的性质完全不同: - 例1是【蕴涵】:A 真则 B 必真;A 假时 B 无约束。 - 例2是【预设】:A 与「非A」都背着同一个 B。 - 例3是【会话隐涵】:B 只是说话人「邀请你推断」的,不是句子的真值条件。
【细微】测试一——否定测试(constancy under negation):把主句否定,看 B 还在不在。 -「张三没有杀死那只蜘蛛。」→ 蜘蛛死没死?不知道。B 消失 → 蕴涵。 -「法国国王不是秃头。」→ 仍假设「存在一个法国国王」。B 存活 → 预设。 -「有些学生没有及格。」→「不是所有都及格」这个推断翻转/消失 → 隐涵。
【细微】测试二——可撤销测试(cancellability):能否在不矛盾前提下把 B 收回? -「有些学生及格了——事实上全部都及格了。」通顺 → 隐涵可撤销。 -「张三杀死了蜘蛛——但蜘蛛没死。」矛盾 → 蕴涵不可撤销。
【极难发现】这里有一个反直觉盲点:很多人把「预设」当成「蕴涵」,于是做出错误推理。经典的「预设投射」:把「法国国王是秃头」嵌进否定、疑问、条件前件——「法国国王是秃头吗?」「如果法国国王是秃头……」——预设 B 依然存活,而普通蕴涵在同样环境里会被「过滤掉」。所以「否定一个命题」不等于「否定它的全部前提」。在系统里,当一个断言的「前提」被否掉,结论不是简单取反,而是整个断言「失效」(presupposition failure)——既不真也不假。
【显式】可证伪判据:若某推断在「否定」「疑问」「条件前件」三种环境下都稳定存活,且不能被「——事实上……」撤销,那它极可能是预设而非蕴涵;反过来,能被「事实上」撤销的,几乎一定是隐涵。
【锚点】对 systems-thinking 的意义:任何「A 导致 B」的因果断言,都偷偷带了一组预设(ceteris paribus、测量有效域、样本独立性)。你否定「A 导致 B」时,并没有否定这些预设——它们还在。把预设当结论去反驳,是大量无效争论的来源。
结尾问题:在需要机器可校验的「结构化断言」里,我们该不该强制把预设显式写出来?还是说,预设之所以是预设,正因为它必须保持「不说出来」才高效——一旦全部显式化,沟通成本会吃掉收益?







0 评论