evan's notes
cal 3discreteodeenv systems
English

本页目录

  • Quantifier 的顺序与依赖关系
  • Game semantics
  • 哪些 quantifiers 可以交换顺序
  • 根据 statement 选择证明方法
  • 例:odd integer 的平方
  • Direct proof
  • 证明 disjunction
  • 例:由乘积上界限制其中一个因子
  • Proof by contrapositive
  • 例:平方为 odd 的整数本身也是 odd
  • Combining both directions

Discrete Structures:离散结构

§7 Direct proofs 与 contrapositives

Evan Luo · 2026年9月29日

Discrete Structures:离散结构

§7 Direct proofs 与 contrapositives

Evan Luo2026年9月29日

15 分钟

证明必须回应 statement 的确切要求。“对所有”要求论证适用于任意输入;“存在”要求我们证明有满足条件的对象;“如果”允许我们先假设 hypothesis 成立;“当且仅当”则要求证明两个方向。先读懂这层逻辑结构,才能知道哪些条件可以假设、哪些对象可以选择,以及还需要证明什么。

这些 proof methods 建立在 predicate 与 quantifier 的基础上。

Quantifier 的顺序与依赖关系

考虑下面两个关于实数的 statements,其中 R\mathbb RR 表示实数集:

∀x∈R  ∃y∈R  (x+y=0),\forall x\in\mathbb R\;\exists y\in\mathbb R\;(x+y=0), ∀x∈R∃y∈R(x+y=0), ∃y∈R  ∀x∈R  (x+y=0).\exists y\in\mathbb R\;\forall x\in\mathbb R\;(x+y=0). ∃y∈R∀x∈R(x+y=0).

Equation 完全相同,但 quantifier 的顺序改变了 statement 的意思。

  • 第一个说,每个实数 xxx 都有一个 additive inverse yyy,也就是与 xxx 相加得到零的数。我们可以为不同的 xxx 选择不同的 yyy。
  • 第二个说,存在一个固定的实数 yyy,它与每个实数 xxx 相加都得到零。

第一个为真。给定任意 x∈Rx\in\mathbb Rx∈R,选择 y=−xy=-xy=−x。它是实数,而且

x+y=x+(−x)=0.x+y=x+(-x)=0. x+y=x+(−x)=0.

第二个为假。不论提出哪个实数 yyy,都可以选择 x=1−yx=1-yx=1−y。这样

x+y=(1−y)+y=1≠0.x+y=(1-y)+y=1\ne0. x+y=(1−y)+y=1=0.

这反驳了每一个可能提出的 yyy,而不只是某一个特定选择。一般不能交换 universal quantifier 和 existential quantifier,并期待 statement 的意思不变。

Game semantics

Game semantics 用两位玩家从左到右读取 quantified statement 的方式,把这种依赖关系说清楚:

  • 遇到 universal quantifier ∀\forall∀ 时,由 Adam 选择变量的值。
  • 遇到 existential quantifier ∃\exists∃ 时,由 Eve 选择变量的值。
  • 每次选择都必须属于相应 quantifier 的 domain。选择可以依赖此前已经发生的行动,但不能依赖尚未发生的行动。

对上面的两个 formulas,双方选完数值后,检查 equation 是否成立。若成立,Eve 获胜;否则 Adam 获胜。

Winning strategy 是一条规则,不管对手作出什么合法选择,都能保证自己获胜。赢一次还不够。在这个 quantifier game 中,statement 为真时,Eve 有 winning strategy;statement 为假时,Adam 有 winning strategy。

对 ∀x ∃y (x+y=0)\forall x\,\exists y\,(x+y=0)∀x∃y(x+y=0),Adam 先行动,Eve 再选择 y=−xy=-xy=−x。对 ∃y ∀x (x+y=0)\exists y\,\forall x\,(x+y=0)∃y∀x(x+y=0),Eve 必须先确定自己的选择,Adam 再选择 x=1−yx=1-yx=1−y。顺序决定了谁可以根据谁的选择作出回应。

写证明时,这个角度提醒我们:所给的选择规则或论证必须对任意 universally quantified inputs 都有效。只展示几个方便的取值成立,还不够。

哪些 quantifiers 可以交换顺序

两个相邻的 universal quantifiers 可以交换,两个相邻的 existential quantifiers 也可以交换。这里要求它们各自的 domain 固定,不依赖另一个变量。设 AAA、BBB 是 sets,P(x,y)P(x,y)P(x,y) 是一个 predicate,其中 x∈Ax\in Ax∈A、y∈By\in By∈B。那么

(∀x∈A  ∀y∈B  P(x,y))≡(∀y∈B  ∀x∈A  P(x,y)),\bigl(\forall x\in A\;\forall y\in B\;P(x,y)\bigr) \equiv \bigl(\forall y\in B\;\forall x\in A\;P(x,y)\bigr), (∀x∈A∀y∈BP(x,y))≡(∀y∈B∀x∈AP(x,y)), (∃x∈A  ∃y∈B  P(x,y))≡(∃y∈B  ∃x∈A  P(x,y)).\bigl(\exists x\in A\;\exists y\in B\;P(x,y)\bigr) \equiv \bigl(\exists y\in B\;\exists x\in A\;P(x,y)\bigr). (∃x∈A∃y∈BP(x,y))≡(∃y∈B∃x∈AP(x,y)).

前两个 universal statements 都要求每一对元素满足 PPP;后两个 existential statements 都要求至少有一对元素满足 PPP。交换同类 quantifiers 不会改变这个要求。从 game 的角度看,两次都是同一位玩家选择:两个 universal quantifiers 由 Adam 选择,两个 existential quantifiers 由 Eve 选择。

例如,R2\mathbb R^2R2 是所有实数 ordered pairs 组成的 set。下面三个 statements 都说,每一对实数都满足给定 equation:

∀x∈R  ∀y∈R  (x2+y2=1),∀y∈R  ∀x∈R  (x2+y2=1),∀(x,y)∈R2  (x2+y2=1).\begin{aligned} &\forall x\in\mathbb R\;\forall y\in\mathbb R\;(x^2+y^2=1),\\ &\forall y\in\mathbb R\;\forall x\in\mathbb R\;(x^2+y^2=1),\\ &\forall(x,y)\in\mathbb R^2\;(x^2+y^2=1). \end{aligned} ​∀x∈R∀y∈R(x2+y2=1),∀y∈R∀x∈R(x2+y2=1),∀(x,y)∈R2(x2+y2=1).​

三者等价,而且全都为假。Adam 可以选择 x=10x=10x=10、y=4y=4y=4,因为

102+42=116≠1.10^2+4^2=116\ne1. 102+42=116=1.

一个 counterexample 就足以推翻 universal claim。这与交换 ∀\forall∀ 和 ∃\exists∃ 不同:后者可能改变双方选择之间的依赖关系,从而改变 statement 的真值。

根据 statement 选择证明方法

Direct proof 从给定的 assumptions 出发,逐步证明 conclusion。具体步骤取决于 statement 的逻辑结构。

设 UUU 是当前讨论对象的 universe,P(x)P(x)P(x) 是 UUU 上的 predicate,ppp 和 qqq 是 propositions。使 existential claim 成立的对象称为 witness。面对不同目标,可以这样着手:

目标证明方法
∀x∈U P(x)\forall x\in U\,P(x)∀x∈UP(x)任取 UUU 中的元素 xxx,证明 P(x)P(x)P(x);不能假设 xxx 有任何额外的特殊性质。
∃x∈U P(x)\exists x\in U\,P(x)∃x∈UP(x)构造 witness xxx,检查 x∈Ux\in Ux∈U,再证明 P(x)P(x)P(x) 成立。
Implication:p⇒qp\Rightarrow qp⇒q假设 ppp 为真,证明 qqq。
Conjunction:p∧qp\land qp∧q分别证明 ppp 和 qqq。
Disjunction:p∨qp\lor qp∨q至少证明 ppp、qqq 之一。哪个更方便,可能取决于给定的输入。
Negation:¬p\neg p¬p将 negation 改写成有用的等价 statement,再证明它;也可以假设 ppp,然后推出 contradiction。
Biconditional:p⇔qp\Leftrightarrow qp⇔q证明 p⇒qp\Rightarrow qp⇒q 和 q⇒pq\Rightarrow pq⇒p 两个方向。

对于 conjunction,两部分都必须经得起检验,因为 Adam 可以要求检查其中任意一部分。对于 disjunction,Eve 可以选择证明哪一部分;其中每一部分都叫 disjunct。Connective ∨\lor∨ 是 inclusive OR,所以两部分都证明也可以,但并非必须。

这些是可用的 proof strategies,不是说每个目标只有这一种方法。例如,existence claim 也可以间接证明,不一定要明确构造 witness。

Conjecture 是一个尚未确定为真的 claim。证明之后,它就成为 theorem。研究 conjecture 时,先把 assumptions 和 conclusion 写准确;definitions 往往能直接告诉我们证明需要构造什么。

例:odd integer 的平方

用 Z\mathbb ZZ 表示整数集。对于整数 nnn,even 和 odd 的定义是

n is even⟺∃k∈Z  (n=2k),n is odd⟺∃k∈Z  (n=2k+1).\begin{aligned} n\text{ is even} &\quad\Longleftrightarrow\quad \exists k\in\mathbb Z\;(n=2k),\\ n\text{ is odd} &\quad\Longleftrightarrow\quad \exists k\in\mathbb Z\;(n=2k+1). \end{aligned} n is evenn is odd​⟺∃k∈Z(n=2k),⟺∃k∈Z(n=2k+1).​

每个整数都恰好属于 even 或 odd 其中一种。一个整数是 even 还是 odd,称为它的 parity。后面会用到这一点:对于整数,“不是 odd”就意味着“是 even”,“不是 even”就意味着“是 odd”。

我们要证明:

如果 nnn 是 odd integer,那么 n2n^2n2 也是 odd。

把 odd 的定义展开,可以看清 assumption 提供了什么 witness,以及 conclusion 要求什么 witness:

∀n∈Z  [(∃k∈Z  (n=2k+1))⇒(∃ℓ∈Z  (n2=2ℓ+1))].\forall n\in\mathbb Z\; \left[ \left(\exists k\in\mathbb Z\;(n=2k+1)\right) \Rightarrow \left(\exists\ell\in\mathbb Z\;(n^2=2\ell+1)\right) \right]. ∀n∈Z[(∃k∈Z(n=2k+1))⇒(∃ℓ∈Z(n2=2ℓ+1))].

这两个 witnesses 的作用不同:assumption 给出表示 nnn 的整数 kkk;conclusion 要求我们构造表示 n2n^2n2 的整数 ℓ\ellℓ。

Direct proof

任取 n∈Zn\in\mathbb Zn∈Z,并假设 nnn 是 odd。那么存在整数 kkk,使 n=2k+1n=2k+1n=2k+1。目标是写成 n2=2ℓ+1n^2=2\ell+1n2=2ℓ+1,其中 ℓ∈Z\ell\in\mathbb Zℓ∈Z。

将 nnn 的表达式平方,再把结果写成一个 even 项加一:

n2=(2k+1)2=4k2+4k+1=2(2k2+2k)+1.\begin{aligned} n^2 &=(2k+1)^2\\ &=4k^2+4k+1\\ &=2(2k^2+2k)+1. \end{aligned} n2​=(2k+1)2=4k2+4k+1=2(2k2+2k)+1.​

选择 ℓ=2k2+2k\ell=2k^2+2kℓ=2k2+2k。因为 kkk 是整数,整数的乘积与和仍然是整数,所以 ℓ\ellℓ 也是整数。现在有 n2=2ℓ+1n^2=2\ell+1n2=2ℓ+1,这正是 odd 的定义。因此,对每个 odd integer nnn,结论都成立。

这里要分清哪些值可以选择。不能为了方便随意给 kkk 赋值:一旦给定 nnn,kkk 就必须满足 n=2k+1n=2k+1n=2k+1。我们可以利用这个 kkk 构造 ℓ\ellℓ。选择 witness 不是随便选一个数,而是要满足指定 equation 和 domain。

证明 disjunction

要证明 p∨qp\lor qp∨q,只需证明一个 disjunct。有时无法保证某一个 disjunct 总是成立,就可以根据 ppp 的真值分情况:

  • 如果 ppp 为真,disjunction 已经成立。
  • 如果 ppp 为假,就证明 qqq。

对应的 logical equivalence 是

p∨q≡(¬p⇒q).p\lor q\equiv(\neg p\Rightarrow q). p∨q≡(¬p⇒q).

因此,可以通过假设 ¬p\neg p¬p 并推出 qqq 来证明 p∨qp\lor qp∨q。这不是说只有在 ppp 为假时才允许证明 qqq:无论何时,只要证明任意一个 disjunct 都足够;这个 equivalence 只是提供了一种有用的 conditional strategy。

例:由乘积上界限制其中一个因子

设 aaa、bbb、ccc 是正实数。我们要证明,如果 ab≤cab\le cab≤c,那么

a≤corb≤c.a\le\sqrt c\quad\text{or}\quad b\le\sqrt c. a≤c​orb≤c​.

Conclusion 只要求至少一个因子满足上界,并不要求两个都满足。如果第一个因子大于 c\sqrt cc​,乘积的上界就会迫使第二个因子小于 c\sqrt cc​。

任取正实数 aaa、bbb、ccc,并假设 ab≤cab\le cab≤c。如果 a≤ca\le\sqrt ca≤c​,结论已经成立。否则,

¬(a≤c)⟺a>c.\neg(a\le\sqrt c)\quad\Longleftrightarrow\quad a>\sqrt c. ¬(a≤c​)⟺a>c​.

由于 b>0b>0b>0,在这个 strict inequality 两边乘以 bbb 不会改变不等号方向:

c b<ab≤c.\sqrt c\,b<ab\le c. c​b<ab≤c.

又因为 c>0c>0c>0,所以 c>0\sqrt c>0c​>0。因此,两边可以除以 c\sqrt cc​,不等号方向仍保持不变:

b<cc=c.b<\frac{c}{\sqrt c}=\sqrt c. b<c​c​=c​.

特别地,b≤cb\le\sqrt cb≤c​,所以另一个 disjunct 成立。无论哪种情况,所需的 OR statement 都成立。

也可以用分式更快地说明。在正分子固定时,正分母越大,分式就越小。由 ab≤cab\le cab≤c 和 a>c>0a>\sqrt c>0a>c​>0,得到

b≤ca<cc=c.b\le\frac ca<\frac c{\sqrt c}=\sqrt c. b≤ac​<c​c​=c​.

第一个 inequality 来自将乘积上界两边除以 a>0a>0a>0;第二个使用了 aaa 是较大分母这一点。

Proof by contrapositive

对于 implication p⇒qp\Rightarrow qp⇒q,要区分下面两个 statements:

名称Statement
Contrapositive¬q⇒¬p\neg q\Rightarrow\neg p¬q⇒¬p
Converseq⇒pq\Rightarrow pq⇒p

Contrapositive 把 implication 的方向反过来,同时对两边的 propositions 取 negation。它与原 implication logically equivalent:

(p⇒q)≡(¬q⇒¬p).(p\Rightarrow q)\equiv(\neg q\Rightarrow\neg p). (p⇒q)≡(¬q⇒¬p).

两者都只在 ppp 为真、qqq 为假时为假。因此,proof by contrapositive 可以通过假设 ¬q\neg q¬q 并推出 ¬p\neg p¬p,来证明原 implication。

Converse 只把方向反过来。它一般不与原 implication 等价,需要单独证明。例如,ppp 为假、qqq 为真时,p⇒qp\Rightarrow qp⇒q 为真,但 q⇒pq\Rightarrow pq⇒p 为假。

例:平方为 odd 的整数本身也是 odd

对于整数 nnn,现在要证明

n2 is odd⟹n is odd.n^2\text{ is odd}\quad\Longrightarrow\quad n\text{ is odd}. n2 is odd⟹n is odd.

这是前面 odd-square 结论的 converse,不能仅凭前面的证明就认定它成立。

如果尝试 direct proof,可以从某个整数 kkk 满足 n2=2k+1n^2=2k+1n2=2k+1 开始。取平方根得到

n=±2k+1.n=\pm\sqrt{2k+1}. n=±2k+1​.

但这个表达式并没有直接给出使 n=2ℓ+1n=2\ell+1n=2ℓ+1 的整数 ℓ\ellℓ。改证 contrapositive 就能避开平方根,从更容易处理的条件出发:

n is not odd⟹n2 is not odd.n\text{ is not odd}\quad\Longrightarrow\quad n^2\text{ is not odd}. n is not odd⟹n2 is not odd.

由于 nnn 和 n2n^2n2 都是整数,这等价于

n is even⟹n2 is even.n\text{ is even}\quad\Longrightarrow\quad n^2\text{ is even}. n is even⟹n2 is even.

任取 n∈Zn\in\mathbb Zn∈Z,并假设它是 even。那么存在整数 kkk,使 n=2kn=2kn=2k,于是

n2=(2k)2=4k2=2(2k2).n^2=(2k)^2=4k^2=2(2k^2). n2=(2k)2=4k2=2(2k2).

选择 ℓ=2k2\ell=2k^2ℓ=2k2。它是整数,并且 n2=2ℓn^2=2\elln2=2ℓ,所以 n2n^2n2 是 even。这就证明了 contrapositive,也证明了原 claim:一个整数的平方若是 odd,这个整数本身就是 odd。

整数这一假设不可缺少。正是它让我们能够把“不是 odd”换成“是 even”。

Combining both directions

我们已经证明了下面 biconditional 所需要的两个方向:

n is odd⟺n2 is odd(n∈Z).n\text{ is odd}\quad\Longleftrightarrow\quad n^2\text{ is odd} \qquad(n\in\mathbb Z). n is odd⟺n2 is odd(n∈Z).

正向通过展开 odd integer 的平方来证明;反向通过证明 even integer 的平方仍为 even 来完成。

对 biconditional 的两边同时取 negation,仍然得到等价 statement:

(p⇔q)≡(¬p⇔¬q).(p\Leftrightarrow q)\equiv(\neg p\Leftrightarrow\neg q). (p⇔q)≡(¬p⇔¬q).

结合整数的 parity 划分,可以得到下面的 corollary,也就是刚才结论的一个推论:

n is even⟺n2 is even(n∈Z).n\text{ is even}\quad\Longleftrightarrow\quad n^2\text{ is even} \qquad(n\in\mathbb Z). n is even⟺n2 is even(n∈Z).

所以,一个整数与它的平方有相同 parity。两个方向都有证明支撑,而不只是检查了几个例子。

来源: https://notes.ohevan.com/zh/notes/discrete-structures/07-proof-techniques

© 2026 Evan Luo. 保留所有权利。

返回 Discrete Structures:离散结构

0 次阅读

·最后编辑 今天
  • 邮件订阅

  • 关于我

  • 赞助

© 2026 Evan Luo. 保留所有权利。