跳到正文
格致开物MATHWIKI

逻辑:修订间差异

AIContentBot留言 | 贡献
扩充双语数学百科:定义条件、证明算例、历史来源与 AI 编者评注;补齐学科导航
AIContentBot留言 | 贡献
重编数学讲解:连贯例题、逐步推导与多幅过程图;更新写作规范
 
第1行: 第1行:
数理逻辑研究数学陈述的形式、推理规则以及证明与模型之间的关系。命题逻辑处理陈述之间的连接,一阶逻辑进一步使用变量、量词和关系描述对象。逻辑的作用是把“结论为什么跟随前提成立”说清楚。
'''数理逻辑'''(mathematical logic)研究数学陈述怎样组成,以及结论在什么条件下能由前提推出。它为“所有”“存在”“如果……那么……”等常用表达规定明确含义,也是组织数学证明的基础。


英文名称:Mathematical logic。
例如,“一个整数能被 4 整除,那么它是偶数”成立,因为 <math>n=4k</math> 可以写成 <math>n=2(2k)</math>。反过来说“一个整数是偶数,那么它能被 4 整除”,却被 6 推翻。两句话使用相同的词,却表达了不同方向的要求。


== English overview ==
== 从包含关系理解“如果……那么……” ==
<div lang="en" class="math-english-summary">
下图的矩形表示全体整数 <math>\mathbb Z</math>,大椭圆表示偶数 <math>2\mathbb Z</math>,小椭圆表示 4 的倍数 <math>4\mathbb Z</math>。小椭圆完全位于大椭圆内,因此每个 4 的倍数也都是偶数。数字 6 在大椭圆中、小椭圆外,显示反向推理为何失败;3 在两个椭圆外。
Mathematical logic studies precise statements, their interpretation, and valid forms of inference. At an introductory level, propositional logic treats complete statements as units, while predicate logic makes variables and quantifiers explicit. The distinction matters because a sentence such as “there exists a bound for every input” can express different claims depending on the order of its quantifiers.


This article explains truth tables, implication, equivalence, negation, and common proof methods. A material implication is false only when its premise is true and its conclusion false; it does not by itself assert a causal connection. Universal claims are disproved by one counterexample but cannot generally be proved by checking a few cases. We work through parity proofs, quantifier negation, and an induction argument, making the domain of discourse and assumptions visible. We also distinguish semantic validity from a formal derivation: introductory truth-table reasoning addresses a limited language, while the wider subject includes proof theory, model theory, computability, and the foundations of mathematics. Historical notes place Boolean algebra and nineteenth-century symbolic logic within a longer development rather than attributing all reasoning to one inventor.
[[File:Gezhi-logic-subsets-theme.svg|frame|center|alt=四的倍数集合包含于偶数集合,偶数集合包含于整数集合;六为偶数但不是四的倍数,三不是偶数|“能被 4 整除”保证“是偶数”,而偶数中还包含额外的整数。]]
</div>
 
把“n 能被 4 整除”记为 P,把“n 是偶数”记为 Q,则原条件句写成 <math>P\Rightarrow Q</math>,读作“P 蕴含 Q”。它排除的是 P 成立而 Q 不成立的情况,也就是图中“小椭圆内却在大椭圆外”的点。
 
P 是 Q 的'''充分条件''',因为 P 成立足以保证 Q;Q 是 P 的'''必要条件''',因为 P 成立时 Q 不可缺少。若两个方向都成立,写作 <math>P\Leftrightarrow Q</math>,称为充要条件。例如对整数 n,“n 是偶数”与“n 的平方是偶数”互为充要条件,两个方向的证明将在后面给出。
 
== 命题与逻辑连接词 ==
具有确定真值的陈述称为'''命题''',例如“2 是偶数”是真命题,“3 是偶数”是假命题。“x 是偶数”还含有未确定的变量;指定 x 的值,或者说明“对所有整数 x”,才得到真值确定的陈述。


== 命题与连接词 ==
逻辑连接词把已有陈述组成新陈述:
命题是具有确定真值的陈述。“2 是偶数”为真命题;“x 是偶数”在没有给定 <math>x</math> 或量词时是含自由变量的谓词,不能直接作为确定真假的封闭命题。


常见连接词为否定 <math>\neg P</math>、合取 <math>P\land Q</math>、析取 <math>P\lor Q</math> 与蕴含 <math>P\Rightarrow Q</math>。普通逻辑中的析取允许两者同时为真。
* <math>\neg P</math> 表示“不是 P”,称为否定。
* <math>P\land Q</math> 表示“P 并且 Q”,两者都真时才真。
* <math>P\lor Q</math> 表示“P 或者 Q”,至少一个真时就真,允许两者同时真。
* <math>P\Rightarrow Q</math> 表示“如果 P,那么 Q”,只有 P 真、Q 假时为假。


<div class="math-table-scroll" role="region" aria-label="命题连接词真值表" tabindex="0">
将 P、Q 的四种真假组合逐项写下,就得到'''真值表''':
<div class="math-table-scroll" role="region" aria-label="并且或者和蕴含的真值表" tabindex="0">
{| class="wikitable"
{| class="wikitable"
! P !! Q !! P∧Q !! P∨Q !! P⇒Q
! P !! Q !! <math>P\land Q</math> !! <math>P\lor Q</math> !! <math>P\Rightarrow Q</math>
|-
|-
| 真 || 真 || 真 || 真 || 真
| 真 || 真 || 真 || 真 || 真
第28行: 第36行:
|}
|}
</div>
</div>
蕴含只在“前提真、结论假”时为假。它表达真值之间的约束,并不自动表示因果关系;前提为假时蕴含为真,也不能由此断定结论本身为真。
最后两行表示:P 不成立时,并没有出现“满足 P 却违反 Q”的反例。例如 n=3 既不是 4 的倍数,也不是偶数,它没有推翻“每个 4 的倍数都是偶数”。但从 n=3 不满足前提,也得不出它是偶数。条件句的真假与结论 Q 单独的真假,是两件事。
 
== 必要条件、充分条件与逆否命题 ==
若 <math>P\Rightarrow Q</math>,则 <math>P</math> 是 <math>Q</math> 的充分条件,<math>Q</math> 是 <math>P</math> 的必要条件。例如“整数能被 4 整除”足以推出“整数是偶数”,反向却不成立,6 就是反例。
 
[[File:Gezhi-logic-subsets.svg|frame|center|alt=能被四整除的整数集合包含在偶数集合中,偶数集合又包含在整数集合中,六位于内圈之外|集合包含关系解释蕴含:所有满足强条件的对象都满足弱条件,但弱条件可能包括额外对象。]]
蕴含与逆否命题等价:
<math display="block">(P\Rightarrow Q)\ \Longleftrightarrow\ (\neg Q\Rightarrow\neg P).</math>
它通常不等价于逆命题 <math>Q\Rightarrow P</math>。若两个方向都成立,才写作 <math>P\Leftrightarrow Q</math>,称为充要条件。
 
== 量词顺序不能随意交换 ==
<math>\forall</math> 表示“对所有”,<math>\exists</math> 表示“存在”。例如在实数范围内,
<math display="block">\forall x\ \exists y\ (y>x)</math>
为真,因为对每个 <math>x</math> 可选择 <math>y=x+1</math>。交换后
<math display="block">\exists y\ \forall x\ (y>x)</math>
却为假,它要求找到一个比所有实数都大的固定实数。前者允许 <math>y</math> 依赖 <math>x</math>,后者不允许。


这正是[[极限]]定义中“任给误差,存在足够小的邻域”的核心:邻域可以依赖误差,而不是预先选好同一个邻域应对一切误差。
逻辑蕴含表达这种真假约束,不自行表达时间先后或因果。现实问题中哪些因素导致哪些结果,还需要另行建立模型与证据。


== 怎样正确否定一句话 ==
== 逆命题与逆否命题 ==
否定全称命题得到存在反例;否定存在命题得到全部不成立:
对原句“若 P 则 Q”,交换两者得到'''逆命题''' <math>Q\Rightarrow P</math>;把前后都否定,得到 <math>\neg P\Rightarrow\neg Q</math>。开头的偶数例子已经表明,这两个变化后的句子可能为假。
<math display="block">\neg(\forall x\,P(x))\Leftrightarrow\exists x\,\neg P(x),\qquad\neg(\exists x\,P(x))\Leftrightarrow\forall x\,\neg P(x).</math>
“所有整数都是偶数”的否定是“存在一个整数不是偶数”,不是“所有整数都不是偶数”。对于复合语句,德摩根律给出 <math>\neg(P\land Q)\Leftrightarrow\neg P\lor\neg Q</math>


== 证明与反例承担不同任务 ==
另一种变换是既交换又否定,得到'''逆否命题'''
全称命题不能靠检查有限个普通例子证明,却可以被一个满足前提、违反结论的反例推翻。例如“所有素数都是奇数”被 2 推翻。
<math display="block">\neg Q\Rightarrow\neg P.</math>
它与原命题等价。原命题唯一排除的情况是 P 真、Q 假;逆否命题唯一排除的情况是“非 Q 真、非 P 假”,仍然是同一情况。因此
<math display="block">(P\Rightarrow Q)\Longleftrightarrow(\neg Q\Rightarrow\neg P).</math>
在整数例子中,“若不是偶数,就不是 4 的倍数”与原句表达了同一项约束。


直接证明从假设按有效规则推出结论;逆否证明转而证明等价的逆否命题;反证法假设所求结论的否定并导出矛盾。数学归纳法则需要同时给出初始情形和从 <math>n</math> 到 <math>n+1</math> 的一般推理,仅检查前几项并不构成归纳证明。
这一点给出两种有效推理:已知 P 和 <math>P\Rightarrow Q</math>,可推出 Q;已知非 Q 和同一条件句,可推出非 P。只知道 Q 则不能反推 P,因为 Q 可能包含图中 6 这样的额外对象。


本条使用经典逻辑。形式证明保证结论跟随前提,但现实建模中前提是否符合实际,还需要定义、观测和验证。
=== 完整证明:整数与其平方同奇偶 ===
先证正向:若 n 为偶数,就存在整数 k 使 <math>n=2k</math>,因此
<math display="block">n^2=4k^2=2(2k^2).</math>
括号内仍为整数,所以平方是偶数。


== 语句、变量和讨论范围 ==
反向要证“若平方为偶数,则 n 为偶数”。证明它的逆否命题更直接:若 n 是奇数,写成 <math>n=2k+1</math>,展开得到
“今天下雨”在日期和地点确定后可以成为一个命题;“x 大于三”含有自由变量,在给定 x 或添加量词之前还没有确定真值。数学写作经常省略熟悉的讨论范围,但这种省略应当能从上下文恢复。例如“所有数都有平方根”在非负实数范围内与实数范围内意义不同,在复数范围内又有不同结论。先规定对象属于哪个[[集合]],比急着列真值表更重要。
<math display="block">n^2=4k^2+4k+1=2(2k^2+2k)+1.</math>
这说明平方也是奇数。整数按奇偶两类划分,因而逆否命题成立,所需反向也成立。两个方向合并,才得到“n 为偶数当且仅当 n² 为偶数”。


本条主要采用经典二值逻辑:在给定解释下,命题取真或假。它不意味着我们实际总能知道哪一个,也不意味着任何自然语言句子都能不经澄清地形式化。一个关于尚未解决数学问题的陈述,可能在经典框架中有确定真值,而人们暂时没有证明。真、可证、已知这几个词描述的层次不能混同。
== “所有”与“存在”怎样写清楚 ==
'''全称量词''' <math>\forall</math> 表示“对所有”,'''存在量词''' <math>\exists</math> 表示“至少存在一个”。例如
<math display="block">\forall n\in\mathbb Z,\quad 4\mid n\Rightarrow2\mid n</math>
说明对每个整数,4 整除它时,2 也整除它。而
<math display="block">\exists n\in\mathbb Z,\quad 2\mid n\ \land\ 4\nmid n</math>
说明存在偶数不是 4 的倍数,取 n=6 就能证实。


== 条件命题为什么容易被读错 ==
量词给出的对象范围同样重要。方程 <math>x^2=4</math> 在实数范围有两个解 2、−2,在非负实数范围只有一个解。若说“存在唯一解”,就同时要求存在一个解,以及任意两个解都相等;找到一个候选并不能独自证明唯一性。
“若 p 则 q”写作 <math>p\Rightarrow q</math>。它排除的正是 p 真而 q 假的情形。当前件为假时,整个材料蕴含为真,并非声称我们发现了某种实际因果关系,而是说它没有违反所指定的条件约束。这个约定保证“所有满足 p 的对象都满足 q”与集合包含关系相配:找不到满足 p 却不满足 q 的对象,便没有反例。


“一个整数是四的倍数,则它是偶数”正确;“它是偶数,则它是四的倍数”是逆命题,整数二就是反例;“它不是四的倍数,则它不是偶数”是否命题,同样被二反驳;“它不是偶数,则它不是四的倍数”是逆否命题,与原命题等价。很多错误证明暗中把必要条件当成充分条件,恰好就是把原命题换成了未经证明的逆命题。
全称陈述也不自动保证有对象存在。如果方程没有实数解,“它的每个实数解都是正数”没有反例,仍为真;但“存在一个正实数解”为假。这与空集上的量词有关:空集上所有元素满足某条件为真,空集中存在满足条件的元素为假。通常一阶逻辑的总论域取非空,空集可以作为其中用于限制量词的子集。


充分条件 p 保证 q,必要条件 q 是 p 成立时不可缺少的条件。若两个方向都成立,才写 <math>p\Leftrightarrow q</math>。例如对于整数 n,“n 为偶数”与“n 的平方为偶数”等价,需要分别证明两个方向,不能只算出偶数的平方仍为偶数就结束。
== 量词顺序表示谁可以依赖谁 ==
在实数范围考虑
<math display="block">\forall x\in\mathbb R\ \exists y\in\mathbb R,\quad y>x.</math>
它说:先任意给一个 x,再找一个比它大的 y。选择 <math>y=x+1</math> 就够了,y 可以随 x 改变。


== 两种证明:直接构造与逆否 ==
交换量词,得到
若 n 为偶数,按定义存在整数 k 使 <math>n=2k</math>,于是 <math>n^2=4k^2=2(2k^2)</math>,而括号内仍为整数,故平方为偶数。证明最后一句并非多余,因为“偶数”的定义要求某个整数的两倍,而不只是一个随意实数的两倍。
<math display="block">\exists y\in\mathbb R\ \forall x\in\mathbb R,\quad y>x.</math>
这回要先选定一个 y,然后让它比所有 x 都大。对于任何候选 y,取 <math>x=y</math> 就使严格不等式失败,因此这个陈述为假。两个句子的差别,不在于能否写出两个数,而在于第二个数能否依赖第一个数。


反向直接从 <math>n^2=2m</math> 开始不容易看出 n 的形式,可以证明逆否命题:若 n 为奇数,写成 <math>n=2k+1</math>,则
图中左排让 y 在知道 x 后选择,下面三组数只是同一规则 y=x+1 的实例;右排先固定 y=a,再取 x=a,就得到无法成立的 a>a。这里 a 可以是任意实数,所以右边的失败并不限于某一个数值。
<math display="block">n^2=4k^2+4k+1=2(2k^2+2k)+1,</math>
所以平方为奇数。逆否命题成立,原来的反向蕴含也成立。两个方向合并,完成等价证明。这里用到了整数不是偶数就是奇数的分类;如果把 n 换成任意实数,“奇偶”一词本身就不再按这个定义适用。


反证法则是假设要证结论的否定,从既有前提出发推出矛盾。例如假设存在最大的整数 N,那么 N+1 仍为整数并严格大于 N,与最大性矛盾,故最大整数不存在。这个证明既没有列举所有整数,也没有凭“似乎总能再加一”的直觉止步,而是把这种构造放入了明确的假设与矛盾结构中。
[[File:Gezhi-teaching-foundation-logic-quantifiers.svg|frame|center|alt=左图先给x再取y等于x加一,右图先固定y为a再选x等于a使a大于a失败|量词顺序规定后面的对象可以依赖哪些已知选择。]]


== 量词顺序:依赖关系写在符号里 ==
[[极限]]定义中的“对任意正误差,都存在一个足够小的输入邻域”,采用前一种次序。邻域可以根据误差选择;选定以后,又必须同时适用于该邻域内的所有输入点。这些依赖关系是定义内容的一部分。
在实数范围内,<math>\forall x\,\exists y\;(y>x)</math> 为真,因为对每个给定 x 可以选择 y=x+1。这里的 y 允许依赖 x。交换顺序的 <math>\exists y\,\forall x\;(y>x)</math> 为假,因为不可能先选一个固定实数 y,再让它超过所有实数:取 x=y 就破坏严格不等式。两个公式词语相似,数学要求却完全不同。


极限定义中“对每个误差容许量,都存在足够小的输入范围”也包含这种依赖。输入范围可以依赖所指定的误差和研究的函数,但不能依赖随后在这个范围内任意选取的点。如果把 <math>\delta</math> 选成事后依赖 x 的量,就可能把一个真正的统一控制条件变成几乎没有内容的陈述。学习[[极限]]时先用普通语言说清谁先选、谁后选,会比机械背符号更可靠。
== 否定一句话,需要否定到哪里 ==
“所有整数都是偶数”的否定,是“存在一个整数不是偶数”。它不要求所有整数都不是偶数,一个反例就足够。相应地,
<math display="block">\neg(\forall x\,P(x))\Longleftrightarrow\exists x\,\neg P(x),</math>
<math display="block">\neg(\exists x\,P(x))\Longleftrightarrow\forall x\,\neg P(x).</math>
多层量词需要逐层处理。例如“每个学生都做对至少一道题”,否定后是“有一个学生一道题也没做对”。若 <math>P(s,q)</math> 表示学生 s 做对题 q,则原句为 <math>\forall s\,\exists q\,P(s,q)</math>,否定为 <math>\exists s\,\forall q\,\neg P(s,q)</math>。


量词的否定按
连接词的否定则遵循德摩根律:
<math display="block">\neg(\forall x\,P(x))\equiv\exists x\,\neg P(x),\qquad \neg(\exists x\,P(x))\equiv\forall x\,\neg P(x)</math>
<math display="block">\neg(P\land Q)\Longleftrightarrow\neg P\lor\neg Q,</math>
转换。例如“每个学生都做对至少一道题”的否定,是“存在一个学生,一道题也没做对”,不是“每个学生都至少做错一道题”。设 P(s,q) 表示学生 s 做对题 q,原句为 <math>\forall s\,\exists q\,P(s,q)</math>,否定后为 <math>\exists s\,\forall q\,\neg P(s,q)</math>。逐层取反可以避免自然语言中的歧义。
<math display="block">\neg(P\lor Q)\Longleftrightarrow\neg P\land\neg Q.</math>
例如“输入合法并且余额足够”不成立,可能是输入非法,也可能是余额不足,或者两者都失败。这种否定与[[集合]]中交、并、补的关系一致。


== 归纳法证明的到底是什么 ==
=== 最小正实数的命题与否定 ===
证明对所有非负整数 n 都成立的命题,可以先证明 n=0 的基础步,再证明:对任意 k≥0,若第 k 项成立,则第 k+1 项成立。基础步启动链条,归纳步保证链条不会中断;二者缺一不可。它不是从几个数值“猜到规律”,而是利用自然数的归纳结构证明无限多项。
“存在最小正实数”可以写为
<math display="block">\exists a>0\ \forall x>0,\quad a\le x.</math>
否定时,先把存在 a 改为对每个 a,再把对所有 x 改为存在 x,最后否定不等式,得到
<math display="block">\forall a>0\ \exists x>0,\quad x<a.</math>
这句话能直接证明:给定任意正数 a,取 <math>x=a/2</math>,便有 <math>0<x<a</math>。所以每个正实数都不是最小的,最小正实数不存在。


例如证明 <math>\sum_{j=1}^n j=n(n+1)/2</math>,n=0 时空和为零,等式成立。假设对 k 成立,那么
如果对象换成正整数,这个结论就改变了。1 是最小正整数,而将 a=1 除以 2 会离开整数范围。证明里的构造既要满足关系,也要留在量词指定的集合内。
<math display="block">\sum_{j=1}^{k+1}j=\frac{k(k+1)}2+(k+1)=\frac{(k+1)(k+2)}2.</math>
于是归纳步完成。假设的只是某个任意 k 处的等式,用来证明下一步,并没有先假设所有 n 都成立,所以这不是循环论证。若命题只从 n=1 开始,也可以把基础步放在一;索引范围必须与实际命题一致。


计算机核查前一百万个数值,只证明了一百万个实例。它可以帮助发现反例、检查猜想或验证实现,却不能单独替代对全部自然数的证明。反过来,一个反例就足以否定全称命题,但反例只需落在所声明的对象范围内;拿复数例子反驳一个明确限定实数的定理没有作用。
== 证明怎样覆盖全部情形 ==
要证明一个全称陈述,可以任取一个满足条件的对象,再用这些条件推出结论。前面的偶数平方证明采用了任意整数 k,因而同时覆盖所有偶数。


== 空条件、存在性和唯一性 ==
要推翻全称陈述,只需一个反例。例如“所有素数都是奇数”被 2 推翻;但列出许多奇素数只能提供一些实例,不能证明全部素数都如此。
全称语句并不自动保证对象存在。“某个空集合的所有元素都满足条件”为真,因为没有元素能构成反例;同一空集合中“存在一个元素满足条件”则为假。这叫空真现象,谈的是在空子集上限制量词,并非随意改变一阶逻辑中通常采用的非空论域约定。若推理需要至少一个对象,必须另加存在性前提。


例如“所有满足方程的实数都为正”,若方程根本没有实数解,这句话仍不能被反例推翻,却不能据此推出“存在正实数解”。求方程时先证明候选解必须满足某条件,只完成必要性;还要实际构造解并代回,才能建立存在性。这个逻辑差别正是许多计算题中“筛选候选”与“确认答案”的区别。
'''反证法'''从相反假设出发,推出矛盾。例如假设有最大的整数 N,那么 N+1 仍是整数且大于 N,与最大性矛盾,所以最大的整数不存在。这里的加一给出了对任意候选 N 都有效的反驳。


存在唯一对象比存在对象更强。对实数方程 <math>x^2=4</math>,二是一个存在性见证,但负二也是解,因而不唯一;若将论域限制为非负实数,则存在且唯一。证明唯一性通常先任取两个满足条件的对象,再证明它们相等,而不能因为计算过程中只找到一个就断言没有别的。
=== 数学归纳法为何不是检查前几项 ===
要证明对所有非负整数 n 都成立的公式
<math display="block">1+2+\cdots+n=\frac{n(n+1)}2,</math>
先检查 n=0:左边为空和,取值 0,右边也为 0。这是基础步。


推理规则也需要方向检查。从 <math>P</math> 和 <math>P\Rightarrow Q</math> 可以推出 <math>Q</math>,称为肯定前件;从 <math>\neg Q</math> 和同一个蕴含可推出 <math>\neg P</math>。但已知 <math>Q</math> 时不能倒推 <math>P</math>,例如“是四的倍数则为偶数”与“为偶数”不能推出四的倍数。这种错误称为肯定后件,与此前混淆必要充分条件是同一个逻辑问题。
接着设公式在某个任意的非负整数 k 处成立。再加下一项 k+1:
<math display="block">\begin{aligned}
1+2+\cdots+k+(k+1)
&=\frac{k(k+1)}2+(k+1)\\
&=\frac{(k+1)(k+2)}2.
\end{aligned}</math>
这正是 n=k+1 时的公式,故完成归纳步。


== 形式证明与数学逻辑的更大范围 ==
基础步使命题从 0 启动;归纳步保证每次成立都能传到下一个整数。因此所有非负整数都被覆盖。归纳步没有先假设全部 n 的结论,而是在一个任意 k 处作条件假设,再证明下一步。这与仅计算前若干个数值有本质不同。
真值表可以判定有限个命题变量组成的公式是否在所有真假赋值下为真,这叫重言式。若在所有使前提为真的解释下结论也为真,就说推理在语义上有效;给出按照规定推理规则组织的有限公式序列,则是在某个系统中作形式推导。两者之间的联系是数学逻辑研究的对象,不能仅凭日常语感认定“显然可以推出”。


现代逻辑还研究带量词的语言、模型、形式系统的一致性与表达能力,以及哪些问题能够由算法判定。本条的二值真值表只是入门工具,不是整个数学逻辑。不同形式系统可能采用不同规则;讨论某个深层定理之前,应先说明使用的语言和系统,避免把针对特定系统的结果夸大成“所有数学都无法证明自己”。
== 真值、证明与形式系统 ==
真值表处理有限个命题变量的真假组合。例如可逐行核验原命题与逆否命题在四种赋值下总有相同真假。如果一个公式在所有赋值下都为真,称为'''重言式'''。


== 历史背景与应用 ==
带量词的陈述还涉及变量取值的集合及关系的解释。例如 <math>\forall x\,x^2\ge0</math> 在实数及其通常运算下成立;变量范围和符号的意义提供了判断陈述的背景。数理逻辑进一步研究怎样精确定义这些语言、解释和推导规则。
逻辑研究有古代渊源,现代符号方法的形成则经历了长期发展。George Boole 在 1847 年的《The Mathematical Analysis of Logic》和 1854 年的《An Investigation of the Laws of Thought》中推进了逻辑的代数处理。[https://georgeboole.com/boole/legacy/phil/ University College Cork 的 Boole 纪念项目]核对了两部著作的年份与逻辑研究背景。Boole 的贡献不等于“发现了人类推理”,今天的完整谓词逻辑体系也不能全部归于这两本书。


逻辑的用途包括整理定理假设、分析程序分支、写数据库查询以及验证软件性质。例如程序条件“输入合法且余额足够”与“输入合法或余额足够”只差一个连接词,却可能产生完全不同的可执行行为。数学证明同样需要检查每一步用到了什么前提,特别是除以一个量之前是否知道它非零,以及交换极限顺序之前是否满足额外条件。
一个形式证明是依照已规定规则组成的有限推导。证明是否有效,与所采用的公理是否适合描述某个现实问题,也是不同问题。[[数学建模]]既需要有效推理,也需要为模型中的假设提供现实依据。上述真值与证明方法使用经典逻辑;其他逻辑体系可以采用不同的规则。


== 一个量词否定的完整核验 ==
== 历史 ==
考虑“存在一个最小正实数”。其形式是 <math>\exists a>0\;\forall x>0\;(a\le x)</math>。逐层否定得到 <math>\forall a>0\;\exists x>0\;(x<a)</math>,即每个正实数都有一个更小的正实数。对于任意给定的 a,选择 x=a/2,既保持正数条件,又满足严格小于,故否定命题成立。这里由“不大于”变成“严格大于”,并交换全称与存在量词;不能只改量词而保留原来的不等号。
George Boole 在 1847 年的《The Mathematical Analysis of Logic》和 1854 年的《An Investigation of the Laws of Thought》中发展了逻辑的代数处理,将部分推理关系写成可以计算的符号形式。[https://georgeboole.com/boole/legacy/phil/ University College Cork 的 Boole 纪念项目]介绍了两部作品及其研究背景。


== 编者评注(AI 辅助) ==
布尔式运算后来成为数字电路与程序条件的重要语言。前面表中的“并且”“或者”“否定”,既可连接数学命题,也可组织程序判断;加入量词以后,又能表达“每个元素满足什么”及“是否存在满足要求的对象”等数学陈述。
<div class="math-editorial-note"> 逻辑学习的收益不是把每一句话都改成符号,而是能及时追问:对象范围是什么,条件是否足够,所选常数能依赖谁,反例究竟反驳了哪一句话。建议把一份熟悉的计算题解改写成完整证明,标出每次使用的定义和前提。这样的练习能把形式规则连接到实际推理,也比单独背真值表更容易迁移到分析、代数和程序验证。</div>


== 参考来源与延伸阅读 ==
== 参考资料 ==
* [https://discrete.openmathbooks.org/dmoi3/sec_propositional.html Oscar Levin:命题逻辑],另见同书证明方法与量词章节。
* [https://discrete.openmathbooks.org/dmoi3/sec_propositional.html Oscar Levin:命题逻辑]
* [https://mathshistory.st-andrews.ac.uk/Biographies/Boole/ MacTutor:George Boole],用于著作年代与历史背景。
* [https://discrete.openmathbooks.org/dmoi3.html Oscar Levin,Discrete Mathematics: An Open Introduction,第 0、3 章]:量词与证明方法。
* [https://discrete.openmathbooks.org/dmoi3.html Oscar Levin,《Discrete Mathematics: An Open Introduction》第 0、3 章]:量词、逻辑与证明。
* [https://georgeboole.com/boole/legacy/phil/ University College Cork:Boole 的逻辑研究]。
* [[极限]] · [[组合数学]] · [[数学建模]]
* [https://mathshistory.st-andrews.ac.uk/Biographies/Boole/ MacTutor:George Boole]
* 相关条目:[[集合]][[极限]][[组合数学]][[数学建模]]
[[分类:离散数学]]
[[分类:离散数学]]
[[分类:基础与逻辑]]
[[分类:基础与逻辑]]

2026年9月20日 (日) 07:16的最新版本

数理逻辑(mathematical logic)研究数学陈述怎样组成,以及结论在什么条件下能由前提推出。它为“所有”“存在”“如果……那么……”等常用表达规定明确含义,也是组织数学证明的基础。

例如,“一个整数能被 4 整除,那么它是偶数”成立,因为 n=4k 可以写成 n=2(2k)。反过来说“一个整数是偶数,那么它能被 4 整除”,却被 6 推翻。两句话使用相同的词,却表达了不同方向的要求。

从包含关系理解“如果……那么……”

下图的矩形表示全体整数 ,大椭圆表示偶数 2,小椭圆表示 4 的倍数 4。小椭圆完全位于大椭圆内,因此每个 4 的倍数也都是偶数。数字 6 在大椭圆中、小椭圆外,显示反向推理为何失败;3 在两个椭圆外。

四的倍数集合包含于偶数集合,偶数集合包含于整数集合;六为偶数但不是四的倍数,三不是偶数
“能被 4 整除”保证“是偶数”,而偶数中还包含额外的整数。

把“n 能被 4 整除”记为 P,把“n 是偶数”记为 Q,则原条件句写成 PQ,读作“P 蕴含 Q”。它排除的是 P 成立而 Q 不成立的情况,也就是图中“小椭圆内却在大椭圆外”的点。

P 是 Q 的充分条件,因为 P 成立足以保证 Q;Q 是 P 的必要条件,因为 P 成立时 Q 不可缺少。若两个方向都成立,写作 PQ,称为充要条件。例如对整数 n,“n 是偶数”与“n 的平方是偶数”互为充要条件,两个方向的证明将在后面给出。

命题与逻辑连接词

具有确定真值的陈述称为命题,例如“2 是偶数”是真命题,“3 是偶数”是假命题。“x 是偶数”还含有未确定的变量;指定 x 的值,或者说明“对所有整数 x”,才得到真值确定的陈述。

逻辑连接词把已有陈述组成新陈述:

  • ¬P 表示“不是 P”,称为否定。
  • PQ 表示“P 并且 Q”,两者都真时才真。
  • PQ 表示“P 或者 Q”,至少一个真时就真,允许两者同时真。
  • PQ 表示“如果 P,那么 Q”,只有 P 真、Q 假时为假。

将 P、Q 的四种真假组合逐项写下,就得到真值表

P Q PQ PQ PQ

最后两行表示:P 不成立时,并没有出现“满足 P 却违反 Q”的反例。例如 n=3 既不是 4 的倍数,也不是偶数,它没有推翻“每个 4 的倍数都是偶数”。但从 n=3 不满足前提,也得不出它是偶数。条件句的真假与结论 Q 单独的真假,是两件事。

逻辑蕴含表达这种真假约束,不自行表达时间先后或因果。现实问题中哪些因素导致哪些结果,还需要另行建立模型与证据。

逆命题与逆否命题

对原句“若 P 则 Q”,交换两者得到逆命题 QP;把前后都否定,得到 ¬P¬Q。开头的偶数例子已经表明,这两个变化后的句子可能为假。

另一种变换是既交换又否定,得到逆否命题 ¬Q¬P. 它与原命题等价。原命题唯一排除的情况是 P 真、Q 假;逆否命题唯一排除的情况是“非 Q 真、非 P 假”,仍然是同一情况。因此 (PQ)(¬Q¬P). 在整数例子中,“若不是偶数,就不是 4 的倍数”与原句表达了同一项约束。

这一点给出两种有效推理:已知 P 和 PQ,可推出 Q;已知非 Q 和同一条件句,可推出非 P。只知道 Q 则不能反推 P,因为 Q 可能包含图中 6 这样的额外对象。

完整证明:整数与其平方同奇偶

先证正向:若 n 为偶数,就存在整数 k 使 n=2k,因此 n2=4k2=2(2k2). 括号内仍为整数,所以平方是偶数。

反向要证“若平方为偶数,则 n 为偶数”。证明它的逆否命题更直接:若 n 是奇数,写成 n=2k+1,展开得到 n2=4k2+4k+1=2(2k2+2k)+1. 这说明平方也是奇数。整数按奇偶两类划分,因而逆否命题成立,所需反向也成立。两个方向合并,才得到“n 为偶数当且仅当 n² 为偶数”。

“所有”与“存在”怎样写清楚

全称量词 表示“对所有”,存在量词 表示“至少存在一个”。例如 n,4n2n 说明对每个整数,4 整除它时,2 也整除它。而 n,2n  4n 说明存在偶数不是 4 的倍数,取 n=6 就能证实。

量词给出的对象范围同样重要。方程 x2=4 在实数范围有两个解 2、−2,在非负实数范围只有一个解。若说“存在唯一解”,就同时要求存在一个解,以及任意两个解都相等;找到一个候选并不能独自证明唯一性。

全称陈述也不自动保证有对象存在。如果方程没有实数解,“它的每个实数解都是正数”没有反例,仍为真;但“存在一个正实数解”为假。这与空集上的量词有关:空集上所有元素满足某条件为真,空集中存在满足条件的元素为假。通常一阶逻辑的总论域取非空,空集可以作为其中用于限制量词的子集。

量词顺序表示谁可以依赖谁

在实数范围考虑 x y,y>x. 它说:先任意给一个 x,再找一个比它大的 y。选择 y=x+1 就够了,y 可以随 x 改变。

交换量词,得到 y x,y>x. 这回要先选定一个 y,然后让它比所有 x 都大。对于任何候选 y,取 x=y 就使严格不等式失败,因此这个陈述为假。两个句子的差别,不在于能否写出两个数,而在于第二个数能否依赖第一个数。

图中左排让 y 在知道 x 后选择,下面三组数只是同一规则 y=x+1 的实例;右排先固定 y=a,再取 x=a,就得到无法成立的 a>a。这里 a 可以是任意实数,所以右边的失败并不限于某一个数值。

左图先给x再取y等于x加一,右图先固定y为a再选x等于a使a大于a失败
量词顺序规定后面的对象可以依赖哪些已知选择。

极限定义中的“对任意正误差,都存在一个足够小的输入邻域”,采用前一种次序。邻域可以根据误差选择;选定以后,又必须同时适用于该邻域内的所有输入点。这些依赖关系是定义内容的一部分。

否定一句话,需要否定到哪里

“所有整数都是偶数”的否定,是“存在一个整数不是偶数”。它不要求所有整数都不是偶数,一个反例就足够。相应地, ¬(xP(x))x¬P(x), ¬(xP(x))x¬P(x). 多层量词需要逐层处理。例如“每个学生都做对至少一道题”,否定后是“有一个学生一道题也没做对”。若 P(s,q) 表示学生 s 做对题 q,则原句为 sqP(s,q),否定为 sq¬P(s,q)

连接词的否定则遵循德摩根律: ¬(PQ)¬P¬Q, ¬(PQ)¬P¬Q. 例如“输入合法并且余额足够”不成立,可能是输入非法,也可能是余额不足,或者两者都失败。这种否定与集合中交、并、补的关系一致。

最小正实数的命题与否定

“存在最小正实数”可以写为 a>0 x>0,ax. 否定时,先把存在 a 改为对每个 a,再把对所有 x 改为存在 x,最后否定不等式,得到 a>0 x>0,x<a. 这句话能直接证明:给定任意正数 a,取 x=a/2,便有 0<x<a。所以每个正实数都不是最小的,最小正实数不存在。

如果对象换成正整数,这个结论就改变了。1 是最小正整数,而将 a=1 除以 2 会离开整数范围。证明里的构造既要满足关系,也要留在量词指定的集合内。

证明怎样覆盖全部情形

要证明一个全称陈述,可以任取一个满足条件的对象,再用这些条件推出结论。前面的偶数平方证明采用了任意整数 k,因而同时覆盖所有偶数。

要推翻全称陈述,只需一个反例。例如“所有素数都是奇数”被 2 推翻;但列出许多奇素数只能提供一些实例,不能证明全部素数都如此。

反证法从相反假设出发,推出矛盾。例如假设有最大的整数 N,那么 N+1 仍是整数且大于 N,与最大性矛盾,所以最大的整数不存在。这里的加一给出了对任意候选 N 都有效的反驳。

数学归纳法为何不是检查前几项

要证明对所有非负整数 n 都成立的公式 1+2++n=n(n+1)2, 先检查 n=0:左边为空和,取值 0,右边也为 0。这是基础步。

接着设公式在某个任意的非负整数 k 处成立。再加下一项 k+1: 1+2++k+(k+1)=k(k+1)2+(k+1)=(k+1)(k+2)2. 这正是 n=k+1 时的公式,故完成归纳步。

基础步使命题从 0 启动;归纳步保证每次成立都能传到下一个整数。因此所有非负整数都被覆盖。归纳步没有先假设全部 n 的结论,而是在一个任意 k 处作条件假设,再证明下一步。这与仅计算前若干个数值有本质不同。

真值、证明与形式系统

真值表处理有限个命题变量的真假组合。例如可逐行核验原命题与逆否命题在四种赋值下总有相同真假。如果一个公式在所有赋值下都为真,称为重言式

带量词的陈述还涉及变量取值的集合及关系的解释。例如 xx20 在实数及其通常运算下成立;变量范围和符号的意义提供了判断陈述的背景。数理逻辑进一步研究怎样精确定义这些语言、解释和推导规则。

一个形式证明是依照已规定规则组成的有限推导。证明是否有效,与所采用的公理是否适合描述某个现实问题,也是不同问题。数学建模既需要有效推理,也需要为模型中的假设提供现实依据。上述真值与证明方法使用经典逻辑;其他逻辑体系可以采用不同的规则。

历史

George Boole 在 1847 年的《The Mathematical Analysis of Logic》和 1854 年的《An Investigation of the Laws of Thought》中发展了逻辑的代数处理,将部分推理关系写成可以计算的符号形式。University College Cork 的 Boole 纪念项目介绍了两部作品及其研究背景。

布尔式运算后来成为数字电路与程序条件的重要语言。前面表中的“并且”“或者”“否定”,既可连接数学命题,也可组织程序判断;加入量词以后,又能表达“每个元素满足什么”及“是否存在满足要求的对象”等数学陈述。

参考资料