CNF/DNF

一般是第一题

技巧

  1. 蕴含消除 (Implication Elimination): AB¬AB
  2. 内移否定 (De Morgan): ¬(AB)¬A¬B¬(AB)¬A¬B
  3. 消除双重否定:¬¬AA

Formalization

一般是2-4题

命题逻辑 (Propositional Logic) 形式化

描述系统状态(如红绿灯、警报系统)。

转化关键词

一阶逻辑 (FOL) 形式化

涉及“所有人”、“存在某个人”、“除了...”的句子

Prolog

一般是第五题(倒数第二题)。

CLP

一般是第六题(最后一题)。

模板

  1. 写下 :- use_module(library(clpfd)).
  2. 列出变量 List。
  3. ins 划定范围。
  4. 约束条件, 翻译题目
    • 定义Domain
    • 定义约束
  5. 搜索解:
    • labeling([], Vars).
  6. 加上注释(%)

语法表

操作 标准 Prolog (不要在建模题用!) CLP(FD) (考试必须用!) 说明
数值相等 X is Y + 1 X #= Y + 1 表示数学等式约束
数值不等 X =\= Y X #= Y 表示 X 不等于 Y
大于/小于 X > Y X #> Y 还有 #<#>=#=<
逻辑与 , (逗号) *#/* 例如 (X #> 10) #/\ (X #< 20)
逻辑或 ; (分号) #/ 例如 A #= 1 #\/ A #= 2
逻辑非 \+ *#* -
互不相同 (手动写递归比较) all_distinct(List) 极高频考点
绝对值 abs(X) abs(X) 写法一样,但用在约束中

例题

% 0. 引入库
:- use_module(library(clpfd)).

solve(Vars) :-
    % 1. 定义变量 (Variables)
    % 将所有决策变量放入一个列表,方便后续定义域和 labeling
    Vars = [A, B, C, D], 
    
    % 2. 定义域 (Domains)
    % 根据题目设定变量的取值范围
    A in 8 \/ 12 \/ 15 \/ 18 \/ 22,
    B in 0...10,
    Vars ins 10..40, %如果所有变量范围一样就一起写
    
    % 3. 定义约束 (Constraints)
    % 注意:必须使用 # 前缀的运算符 (#=, #>, #\= 等)
    A #>= B,
    C #= A + B,
    all_distinct(Vars),  % 常用全局约束:所有变量值不同
    
    % 4. 搜索解 (Labeling)
    % 这一步触发求解器,将具体数值赋给变量
    labeling([], Vars).

Natural Detuction

自然演绎 (Natural Deduction) 是逻辑学中的一种证明演算系统。不同于基于真值表(Truth Tables)的语义方法(关注什么是“真”的),自然演绎属于证明论(Proof Theory) 的范畴,关注什么是可证明的(syntactic manipulation),。

它的核心理念是尽可能模仿人类直观的推理方式,“自下而上”地拆解命题,再“自上而下”地通过规则组合出结论,。

1. 核心概念


2. 自然演绎例题

以下是根据课程资料和考试题解选取的三个典型例题,展示了不同规则的应用。

例题 1:交换律 (Commutativity of Conjunction)

目标: 证明 ϕψψϕ 来源: 讲义 excerpts,

证明步骤:

  1. 假设 ϕψ 为真(标记为假设 1)。
  2. 使用 消除规则 (E),从假设中拆解出 ψ
  3. 再次使用 消除规则 (E),从假设中拆解出 ϕ
  4. 使用 引入规则 (I),将 ψϕ 组合为 ψϕ
  5. 使用 引入规则 (I),引入蕴含符号,同时取消假设 1。

推导树表示: $$ \frac{ \frac{[\phi \land \psi]^1}{\psi}(\land E) \quad \frac{[\phi \land \psi]^1}{\phi}(\land E) }{ \frac{\psi \land \phi}{\phi \land \psi \to \psi \land \phi}(\to I)_1 } $$


例题 2:矛盾律 (Law of Non-Contradiction)

目标: 证明 ¬(F¬F) 来源: 2021年6月16日考试题解

证明步骤: 这是一个典型的否定证明。

  1. 假设 F¬F 为真(标记为假设 1)。
  2. 使用 E 得到 F
  3. 使用 E 得到 ¬F(即 F)。
  4. 使用 E(或 ¬E),由 F¬F 推出矛盾符号
  5. 使用 ¬引入规则(或 I),得出结论 ¬(F¬F),并取消假设 1。

推导树表示: $$ \frac{ \frac{[F \land \neg F]^1}{F}(\land E) \quad \frac{[F \land \neg F]^1}{\neg F}(\land E) }{ \frac{\perp}{\neg(F \land \neg F)}(\neg I)_1 } $$


例题 3:连锁推理与归谬法

目标: 证明 ((FG)(G¬F))¬F 来源: 2021年1月18日考试题解

证明步骤:

  1. 假设前提 (FG)(G¬F)(标记为假设 2)。
  2. 为了证明结论 ¬F,我们先假设 F(标记为假设 1,准备进行反证)。
  3. 从假设 2 中拆解出 FG。结合假设 F,通过 E 推出 G
  4. 从假设 2 中拆解出 G¬F。结合上一步得到的 G,通过 E 推出 ¬F
  5. 现在我们要么得到了 ¬F(直接证明),要么如果你视 ¬FF,则结合 F 得到
  6. 此处题解使用了归谬法(RAA)或否定引入:由 F 导出了矛盾(因为同时也导出了 ¬F),所以 F 不成立,即 ¬F
  7. 最后通过 I 取消假设 2,得出最终蕴含式。

推导树表示: $$ \frac{ [((F \to G) \land (G \to \neg F))]^2 }{ \frac{G \to \neg F}{}(\land E) } \quad \frac{ \frac{[((F \to G) \land (G \to \neg F))]^2}{F \to G}(\land E) \quad [F]^1 }{ G }(\to E) $$ (注:上述两部分结合推出 ¬F,再与 [F]1 结合推出 ,最后通过规则得到 ¬F 并取消假设 1 和 2,最终形成完整树形结构)。

2025 jan

基于提供的 2023年1月12日 (Exam 23.01.12) 试题内容,以下是前两道题目的详细解答和解题思路。

由于提供的参考答案文件中似乎没有包含这两题的具体步骤(通常考试官方解答有时只给结论),这里我根据逻辑学(自然演绎和语义判定)的标准规则为你重新推导一遍。


Q1. 自然演绎证明 (Natural Deduction)

题目 1.1: 证明 (A(BC))((AB)C)

解题思路: 这是一个标准的蕴含证明。我们需要证明的主连接词是 ,所以策略是:

  1. 假设 前件 A → (B → C)
  2. 为了证明后件 (A ∧ B) → C,再次假设 A ∧ B
  3. 利用 ∧E (消除合取) 拆解 A ∧ B 得到 A 和 B
  4. 利用 →E (蕴含消除/Modus Ponens) 结合 A 和第一个假设,得到 B → C
  5. 再次利用 →E 结合 B 和 B → C,得到 C
  6. 最后使用 →I (蕴含引入) 两次,取消假设,得到结论。

证明树 (Derivation Tree):

[A(BC)]1[AB]2A(E)BC(E)[AB]2B(E)C(AB)C(I)2(I)1
  1. 假设 1: A(BC)
  2. 假设 2: AB

推导步骤:

这个证明的核心在于先把复杂的蕴含式拆解,利用合取拆分出的原子命题进行“喂入”,最后得到结论 C 后再层层打包回去。希望这次的展示更加清晰!


题目 1.2: 证明或找反例 (F → G) → (¬G → F)

解题思路: 我们需要检查这个公式是否恒真(Tautology)。 观察后件 ¬G → F。如果 G 是假 (False),¬G 就是真。此时如果 F 也是假,那么 ¬G → F 就是 True → False,结果为假。 再看前件 F → G。如果 F 是假,G 是假,那么 F → G是 False → False,结果为真。 综上: 前件真,后件假,整个蕴含式为假。所以这是一个**非有效(Not Valid)**的公式,不能证明,需要给出反例。

反例 (Counter-example):


Q2. 逻辑蕴含判定 (Logical Consequence)

题目要求判断 ϕψ 是否成立(即 ψ 是否是 ϕ 的逻辑结果)。如果不成立,需给出反例。

题目 2.1:

解题思路 (寻找反例法): 我们要找一个解释 I,使得 ϕ 为真 (True) 而 ψ 为假 (False)。

  1. ψ 为假:
    • ¬B¬CA 为假,意味着所有析取项都必须为假。
    • ¬B 是 False  B=True
    • ¬C 是 False  C=True
    • A 是 False  A=False
  2. 检查在解释 I:A=F,B=T,C=T 下,ϕ 是否为真:
    • ABFTTrue
    • ACFTTrue
    • ϕTrueTrueTrue
  3. 结论: 存在一个解释使得前件真后件假,所以 ϕψ (Not a logical consequence)

题目 2.2:

解题思路 (寻找反例法): 试图让 ϕ 为真,ψ 为假。

  1. ψ 为假:
    • 蕴含式 (AB)C 只有在“前件真且后件假”时才为假。
    • 所以必须满足:AB 为真  A=True,B=True
    • 同时 C 为假  C=False
  2. 检查在解释 I:A=T,B=T,C=F 下,ϕ 是否为真:
    • ϕ=AB¬CTT¬FTrue
  3. 结论: 存在反例 I:A=T,B=T,C=F,所以 ϕψ (Not a logical consequence)

总结