反例笔记 从绝对断言到可核对的适用条件
先看案例与关系图,再把方法应用到自己的材料和记录。
章节速览8 节 · 展开选择
“我懂了”的笔记常常只有一句顺口的结论:相关系数为零,说明两个变量互不影响;某个提交能读到,说明它已经合入当前分支;几个测试都通过,说明实现正确。句子很短,却把范围、条件和推理步骤一起省掉了。
本篇接续自我解释与推理缺口。我们把笔记的任务再推进一步:不只解释结论为什么成立,还构造一个满足前提、却使结论失败的对象,检查自己到底记住了多强的主张。 这是逻辑与写作方法,不是学习收益实验;本文不声称反例笔记能保证提高分数或记忆率。
找出讨论对象、成立条件和量词,再决定需要证明什么、什么样的对象才构成反例。
用概率、Git和函数三个小案例,把失败对象、核算过程与修订后的说法放在一起。
先把一句话拆成对象、前提与结论
“任意两个变量,只要相关系数为零,就相互独立”含有三层信息:对象是某个范围内的随机变量对;前提是相关系数定义良好且为零;结论是统计独立。这里的“任意”“只要”都很强,不能用几个支持例子替代它们。
把对象范围记作D,前提记作A(x),结论记作B(x)。例如讨论样本方差的公式时,A至少需要限定样本数和分母;讨论一个Git命令时,A还可能包括当前工作区、目标引用和仓库状态。符号不是为了让笔记像论文,而是防止讨论到一半悄悄更换对象。
反例:∃x ∈ D,A(x) ∧ ¬B(x)
A、B取真或假,没有物理单位。反例必须同时满足范围与前提,再使结论失败;不是找一个不属于D的对象。逻辑依据见文献1、文献2。
| 候选对象的情况 | 能否推翻“若A则B” | 笔记应记录什么 |
|---|---|---|
| A真,B真 | 不能;只是一个支持例子 | 它满足哪些条件,计算为什么成立 |
| A真,B假 | 能;这是有效反例 | 前提证据和结论失败的独立核算 |
| A假,B真 | 不能 | 它没有进入原主张的保证范围 |
| A假,B假 | 不能 | 先说明违反了哪项前提,不能只展示失败 |
例如,拿只有一条记录的数据去反驳“n≥2时采用n−1分母的样本方差公式”,并不是有效反例:你已经离开前提范围。相反,若实现明确承诺处理n≥2的有限输入,找出范围内的错误结果,就能反驳这份实现的正确性主张。
自检1:一个不满足前提的失败样本,为什么不算反例?
原主张只承诺A成立时保证B。A为假时出现B为假,没有违背这项承诺。它可能提示前提值得扩大或应用范围很窄,但必须把“模型不适用”和“模型范围内结论错误”分开。
案例一:零相关并不保证独立
建立一个完整的概率模型:X以各1/3的概率取−1、0、1,Y=X²。这里不是从三条观测猜总体,也不需要估计总体参数;我们直接规定随机变量的联合分布。
| X | Y | 这对取值的概率 | 对E[X]的贡献 | 对E[XY]的贡献 |
|---|---|---|---|---|
| −1 | 1 | 1/3 | −1/3 | −1/3 |
| 0 | 0 | 1/3 | 0 | 0 |
| 1 | 1 | 1/3 | 1/3 | 1/3 |
因此E[X]=0、E[Y]=2/3、E[XY]=0,协方差为0。两列都不是常量:Var(X)=2/3,Var(Y)=2/9,所以Pearson相关系数确实有定义,并且为0。到这里,原断言的前提已经满足。
P(X=0,Y=0) = 1/3
P(X=0)P(Y=0) = (1/3)(1/3) = 1/9
概率无单位,且1/3≠1/9,因此这对随机变量不独立。若X有物理单位,Y=X²应带相应平方单位;本例取无量纲变量。独立事件的乘法条件见文献1。
这就是完整反例:r=0的前提为真,独立的结论为假。它揭示了具体机制:正负中心积抵消,不会消除Y对X的确定关系。把“独立”换成日常语言里的“互不影响”还会混入因果含义,因此笔记中应先保留严格的统计术语。
修订后的句子可以是:“Pearson相关系数描述线性共同变化;在本例中,零相关不能推出独立。是否独立,需要另行核对联合分布等条件。”这比含糊地补一句“特殊情况除外”有用,因为它说明原推理缺的是哪一步。与样本累计统计的关系可继续读在线协方差。
- 原主张
- 对所有相关系数有定义的变量对,r=0便能推出统计独立。
- 范围内的对象
- X均匀取−1、0、1,Y=X²;两个方差均正,相关系数有定义。
- 失败证据
- r=0,但联合事件概率1/3不等于边缘概率乘积1/9。
- 可用的新说法
- 零相关只排除了这一阶线性中心积;独立结论需要额外依据。
案例二:提交可读,不等于已经合并
Git worktree提供了另一个很小的核对对象。设提交A产生了main分支,topic从A继续提交D;两个工作区属于同一仓库,普通分支引用与提交对象共享。main仍指向A,topic指向D,D的父提交是A。
现在从main工作区读取D的对象可以成功,但沿main当前提交的父关系追溯,并不包含D。于是“对象在当前仓库可读”成立,“对象已进入main的祖先历史”失败。这推翻的是两件事之间的无条件推论,不是否认Git能够合并分支。
| 检查对象 | 本例结果 | 它回答的问题 |
|---|---|---|
| 对象D是否能读取 | 能 | 仓库里是否存在可访问的提交对象 |
| main当前指向 | A | 当前分支引用停在哪个提交 |
| D是否为main的祖先 | 否 | 当前分支是否包含该提交历史 |
| topic当前指向 | D | 另一条共享分支推进到了哪里 |
笔记中应分别保留“对象存在”“引用指向”“祖先关系”,而不要用“仓库里有了”概括三者。官方共享规则见文献3;实际命令、父关系和未提交修改的实验,放在worktree原文中,本篇不重复一套操作程序。
这个案例还提醒我们:反例要固定观察时刻。若之后main合并了D,历史关系会变化;不能把合并后的状态拿来替换原来反例的状态,也不能据此说原先的反例失效了。版本和时刻本来就是软件主张的条件之一。
案例三:有限测试通过,不等于全域等价
假设目标函数是f(x)=x²,一个候选函数是g(x)=x。只测试x=0和x=1,两者的输出完全一致。若据此写下“两个函数对所有非负整数等价”,就把有限集合上的核对扩大成了整个非负整数域的保证。
f(2)=4,而g(2)=2
所以:在{0,1}上一致,不推出在全部非负整数上一致
这里比较精确整数函数,没有浮点容差问题。若契约本来只允许输入0和1,穷举这两个输入已经覆盖该有限域;不能忽略契约后说“测试永远不能证明任何事”。
测试仍然有价值:它能发现反例、核对边界、检查实现是否符合一份明确契约。问题在于报告的范围。记录“在这批输入与参考输出上通过”,与记录“对任意输入正确”,需要不同强度的依据。
若输入域有限且可以完整枚举,穷举有可能检查全域;若需要从有限运行推到更大范围,就还需要结构性的证明或清楚的限制。随机对拍也应保存种子、生成范围和独立参考,不能把“随机”当作覆盖所有可能性的同义词。
flowchart LR A[写出原主张与讨论范围] --> B[列出必须成立的前提] B --> C[构造范围内候选对象] C --> D[独立核对前提与结果] D --> E[记录失效位置与修订说法]
一个反例能否证明相反的极端结论
不能。从“并非所有对象都满足B”,不能推出“所有对象都不满足B”。零相关但不独立的例子,既没有证明所有零相关变量都不独立,也没有证明相关系数无用;它只否定了那条过强的推出关系。
同样,找到一次失败不能直接推翻“多数情况下成功”“平均误差较低”或“失败概率不超过某阈值”。这些是统计主张,必须检查抽样单位、分母、误差口径和不确定性。先辨认量词和概率限定,再选择检验方法,才不会把单个故事当成频率结论。
自检2:出现一个失败,能否推出“这个方法总是失败”?
不能。一个有效反例足以否定相应的全称保证,却没有证明所有对象都失败。需要准确保留否定范围;“并非全部”与“全部不”是不同主张。
自检3:两个函数在全部允许输入上穷举一致,仍只能算随便试了几次吗?
不是。若契约的有限输入域明确、枚举确实完整,且参考与判定正确,那么已覆盖这份有限契约。需要防止的是把有限测试集合偷换成一个更大的未覆盖输入域。
条件怎样补,才不是把句子改成空话
有价值的条件应当能在看到结果之前检查。例如“当前对象属于同一仓库”“两个变量方差非零”“这组公式使用绝对温度”,都能独立确认。若把条件补成“在所有成功的情况下都会成功”,虽然绕开了失败,却不再帮助读者决定何时使用。
修订时先问三个问题:条件是否对应实际失效机制?它能否在应用前判断?结论是否缩到证据真正支持的强度?如果反例只显示原结论缺少依据,就诚实地保留“尚不能推出”,不要立刻发明一个未经证明的新充分条件。
还应给条件注明来源:它来自定义、推导、运行实验,还是经验约定。不同来源可以并列在同一张笔记中,但应分别标注。可回看引用溯源的方法,分开来源说了什么、自己计算了什么,以及哪些仍只是解释。
flowchart TD
A[发现一个看似失败的例子] --> B{属于原范围且满足前提吗}
B -->|否| C[记录适用范围问题]
B -->|是| D{结果经过独立核对吗}
D -->|否| E[先排查计算与记录错误]
D -->|是| F[否定原全称保证]
F --> G[修订条件或降低结论强度]
把反例变成下一次能回答的问题
不要只留下“反例:X与X²”。更好的闭卷问题是:“给出一个r=0但不独立的完整有限分布,核对方差、协方差和一个联合事件。”这样能检查是否记住了真正承担推理的部分,而不是只背下一个名词组合。
软件案例也可以问:“main停在A,topic停在D,D的父提交为A。同仓库可以读取D,为什么main仍不包含D?”作答时必须画出父关系与引用位置,不能只回答“因为worktree”。
把这些问题放回提取练习或交错练习时,应另外记录回答、反馈和修订时间。本篇提供的是可核对的练习材料,没有测量人的长期记忆或把逻辑正确当作学习收益证据。
自检4:没找到反例,是否就可以把猜想改标为定理?
不能。搜索可能不充分,候选构造也可能没有触及失效机制。应记录搜索范围与已有论证;若要给出全称保证,仍需足以覆盖该范围的证明或完整核验。没有观察到失败,是搜索结果,不会自动成为证明。
参考文献与核对范围
- University of Washington,CSE547/STAT548:Proofs Probability。 全称/存在主张与事件独立。核对量词、反例的逻辑作用与概率乘法条件;三个具体案例与核算由本文独立展开。返回概率例子。
- Margaret M. Fleck,University of Illinois:Building Blocks for Theoretical Computer Science,第3章。 Proofs。用于定义、前提和反例方法的核对,不作为学习效果研究。返回公式1。
- Git官方:git-worktree,2.39.0。 共享对象、分支与各工作区HEAD。软件案例沿用站内已实际验证的worktree教学历史;本篇只解释逻辑关系,不提供新的仓库操作程序。