Agda命题逻辑(2) 演绎定理

Agda命题逻辑(2) 演绎定理

交流Q群: 893531731
目录: Everything.html
本文源码: Deduction.lagda.md
高亮渲染: Deduction.html
如果你在知乎看到本文: 知乎对Agda语法高亮的支持非常有限, 建议跳转到以上网站阅读

{-# OPTIONS --without-K --safe #-}

module Deduction where

open import Hilbert
open import Data.Sum using (_⊎_; inj₁; inj₂)
open import Relation.Binary.PropositionalEquality using (_≡_; refl)

上一篇讲到, 虽然 \mathfrak{S}_0 系统内的证明繁杂, 但我们仍然采用 \mathfrak{S}_0, 原因是其元定理的证明相对简单. 本节讲的演绎定理就是一个例子. 演绎定理是命题逻辑的重要元定理, 它建立了可证关系 _⊢_ 与系统内的蕴涵 _⊃_ 的联系. 我们先证一些引理.

[引理5.1] \mathfrak{S}_0 的三条逻辑公理有以下相应的演绎推理.

逻辑公理 相应演绎推理
ψ ⊃ φ ⊃ ψ T ⊢ ψ → T ⊢ φ ⊃ ψ
(φ ⊃ ψ ⊃ ρ) ⊃ (φ ⊃ ψ) ⊃ (φ ⊃ ρ) T ⊢ φ ⊃ (ψ ⊃ ρ) → T ⊢ φ ⊃ ψ → T ⊢ φ ⊃ ρ
(~ φ ⊃ ~ ψ) ⊃ ψ ⊃ φ T ⊢ ~ φ ⊃ ~ ψ → T ⊢ ψ ⊃ φ

证明: 这些都是 MP 的特例, 因为 MP 建立了 最一般的联系. ∎

MP-Ax1 :  {T φ ψ}  T  ψ  T  φ  ψ
MP-Ax1 T⊢ψ = MP T⊢ψ (Ax1 _ _)

MP-Ax2 :  {T φ ψ ρ}  T  φ  (ψ  ρ)  T  φ  ψ  T  φ  ρ
MP-Ax2 T⊢φψρ T⊢φψ = MP T⊢φψ (MP T⊢φψρ (Ax2 _ _ _))

MP-Ax3 :  {T φ ψ}  T  ~ φ  ~ ψ  T  ψ  φ
MP-Ax3 T⊢~φ⊃~ψ = MP T⊢~φ⊃~ψ (Ax3 _ _)

不单以上三条, 实际上所有内定理都可以转换成演绎推理的形式. 我们后面将时不时地采用这种形式, 因为它可以在某种程度上简化系统内定理的证明.

[引理5.2] 如果理论 T 中能证明 ψ, 那么 T 的任意扩张 T + φ 也能证明 ψ.

证明: 用归纳法. Ax1 ~ Ax3 以及 Ax 的情况都是显然的. MP 的情况, 存在 ρ 使得 T ⊢ ρT ⊢ ρ ⊃ ψ. 由归纳假设有 T + φ ⊢ ρT + φ ⊢ ρ ⊃ ψ, 由 MP 即有 T + φ ⊢ ψ. ∎

extending :  {T φ ψ}  T  ψ  T + φ  ψ
extending (Ax1 _ _)   = Ax1 _ _
extending (Ax2 _ _ _) = Ax2 _ _ _
extending (Ax3 _ _)   = Ax3 _ _
extending (Ax _ ψ∈T) = Ax _ (inj₁ ψ∈T)
extending (MP T⊢ρ T⊢ρ⊃ψ) = MP (extending T⊢ρ) (extending T⊢ρ⊃ψ)

[定理5.3 (演绎定理)] 对任意理论 T 和公式 φψ, 以下两者等价.

  1. T + φ ⊢ ψ
  2. T ⊢ φ ⊃ ψ

证明: 先证(2)到(1). 由 _⊢_ 的定义有 T + φ ⊢ φ. 由前提 T ⊢ φ ⊃ ψ 和引理5.2有 T + φ ⊢ φ ⊃ ψ. 由 MP 即得 T + φ ⊢ ψ.

deduction← :  {T φ ψ}  T  φ  ψ  T + φ  ψ
deduction← T⊢φ⊃ψ = MP (Ax _ (inj₂ refl)) (extending T⊢φ⊃ψ)

再证(1)到(2). 讨论 T + φ ⊢ ψ 成立的情况. 当 ψ 是形如 Ax1 的公式时, 用 MP-Ax1 抛掉前件 φ, 只需证 T ⊢ ψ, 由 Ax1 得证. 当 ψ 形如 Ax2, Ax3 或非逻辑公理的公式时同理. 当 ψ 等于 φ 时, 由 ⊢φ⊃φ 得证. 当 T + φ ⊢ ψMP 得到时, 存在 ρ 使得 T + φ ⊢ ρT + φ ⊢ ρ ⊃ ψ. 由归纳假设有 T ⊢ φ ⊃ ρT ⊢ φ ⊃ ρ ⊃ ψ. 由 MP-Ax2 即得 T ⊢ φ ⊃ ψ. ∎

deduction :  {T φ ψ}  T + φ  ψ  T  φ  ψ
deduction (Ax1 _ _)   = MP-Ax1 (Ax1 _ _)
deduction (Ax2 _ _ _) = MP-Ax1 (Ax2 _ _ _)
deduction (Ax3 _ _)   = MP-Ax1 (Ax3 _ _)
deduction (Ax _ (inj₁ ψ∈T)) = MP-Ax1 (Ax _ ψ∈T)
deduction (Ax _ (inj₂ refl)) = ⊢φ⊃φ _
deduction (MP T+φ⊢ρ T+φ⊢ρ⊃ψ) = MP-Ax2 (deduction T+φ⊢ρ⊃ψ) (deduction T+φ⊢ρ)

以下都是一些用演绎定理简化内定理证明的例子. 这部分不是重点, 我们只讲第一个的证明, 对于其他部分读者可以挑感兴趣的自己琢磨, 或者直接跳过.

[引理5.4 (交换前件)] (φ ⊃ ψ ⊃ ρ) ⊃ ψ ⊃ φ ⊃ ρ

证明: 用三次演绎定理, 归结为证明 { φ ⊃ ψ ⊃ ρ, ψ, φ } ⊢ ρ. 由 MP 和公理 ψ, 只需证 { φ ⊃ ψ ⊃ ρ, ψ, φ } ⊢ ψ ⊃ ρ. 再次用 MP, 由公理 φφ ⊃ ψ ⊃ ρ 得证. ∎

swap-premise :  {T} φ ψ ρ  T  (φ  ψ  ρ)  ψ  φ  ρ
swap-premise φ ψ ρ = deduction (deduction (deduction {φ⊃ψ⊃ρ,ψ,φ}⊢ρ)) where
  {φ⊃ψ⊃ρ,ψ,φ}⊢ρ = MP (Ax ψ (inj₁ (inj₂ refl))) {φ⊃ψ⊃ρ,ψ,φ}⊢ψ⊃ρ where
    {φ⊃ψ⊃ρ,ψ,φ}⊢ψ⊃ρ = MP (Ax φ (inj₂ refl)) (Ax (φ  ψ  ρ) (inj₁ (inj₁ (inj₂ refl))))

[引理5.5 (三段论)] (φ ⊃ ψ) ⊃ (ψ ⊃ ρ) ⊃ φ ⊃ ρ

syllogism :  {T} φ ψ ρ  T  (φ  ψ)  (ψ  ρ)  φ  ρ
syllogism φ ψ ρ = deduction (deduction (deduction {φ⊃ψ,ψ⊃ρ,φ}⊢ρ)) where
  {φ⊃ψ,ψ⊃ρ,φ}⊢ρ = MP {φ⊃ψ,ψ⊃ρ,φ}⊢ψ (Ax (ψ  ρ) (inj₁ (inj₂ refl))) where
    {φ⊃ψ,ψ⊃ρ,φ}⊢ψ = MP (Ax φ (inj₂ refl)) (Ax (φ  ψ) (inj₁ (inj₁ (inj₂ refl))))

MP-syllogism :  {T φ ψ ρ}  T  φ  ψ  T  ψ  ρ  T  φ  ρ
MP-syllogism T⊢φ⊃ψ T⊢ψ⊃ρ = MP T⊢ψ⊃ρ (MP T⊢φ⊃ψ (syllogism _ _ _))

[引理5.6 (爆炸律)] ~ φ ⊃ φ ⊃ ψ.

explosion :  {T} φ ψ  T  ~ φ  φ  ψ
explosion φ ψ = deduction (MP-Ax3 (MP-Ax1 (Ax (~ φ) (inj₂ refl))))

[引理5.7 (双重否定消去)] ~ ~ φ ⊃ φ

DN :  {T} φ  T  ~ ~ φ  φ
DN φ = deduction (MP (⊢φ⊃φ φ) (MP-Ax3 (deduction← (explosion _ _))))

[引理5.8 (双重否定引入)] φ ⊃ ~ ~ φ

DN← :  {T} φ  T  φ  ~ ~ φ
DN← φ = MP-Ax3 (DN (~ φ))

[引理5.9 (逆否命题)] (φ ⊃ ψ) ⊃ ~ ψ ⊃ ~ φ

这是 Ax3 的反向.

contraposition :  {T} φ ψ  T  (φ  ψ)  ~ ψ  ~ φ
contraposition φ ψ = deduction (MP-Ax3 (MP-syllogism {φ⊃ψ}⊢~~φ⊃ψ (DN← ψ))) where
  {φ⊃ψ}⊢~~φ⊃ψ = MP-syllogism (DN φ) (Ax (φ  ψ) (inj₂ refl))

MP-contraposition :  {T φ ψ}  T  φ  ψ  T  ~ ψ  ~ φ
MP-contraposition T⊢φ⊃ψ = MP T⊢φ⊃ψ (contraposition _ _)

[引理5.10] (φ ⊃ ~ φ) ⊃ ~ φ

用该命题和爆炸律取代 Ax3 将得到直觉主义逻辑.

⊢[φ⊃~φ]⊃~φ :  {T} φ  T  (φ  ~ φ)  ~ φ
⊢[φ⊃~φ]⊃~φ φ = deduction (MP (⊢φ⊃φ φ) {φ⊃~φ}⊢[φ⊃φ]⊃~φ) where
  {φ⊃~φ}⊢[φ⊃φ]⊃~φ = MP-Ax3 (MP-syllogism (DN φ) {φ⊃~φ}⊢φ⊃~φ⊃φ) where
    {φ⊃~φ}⊢φ⊃~φ⊃φ = MP-Ax2 (MP-syllogism (deduction← (⊢φ⊃φ _)) (explosion _ _)) (⊢φ⊃φ φ)

[引理5.11 (反证法)] T + ~ φ ⊢ φ → T ⊢ φ

contradiction :  {T φ}  T + ~ φ  φ  T  φ
contradiction {T} {φ} T+~φ⊢φ = MP (MP (deduction (MP T+~φ⊢φ (DN← φ))) (⊢[φ⊃~φ]⊃~φ (~ φ))) (DN φ)

[引理5.12] (~ φ ⊃ φ) ⊃ φ

⊢[~φ⊃φ]⊃φ :  {T} φ  T  (~ φ  φ)  φ
⊢[~φ⊃φ]⊃φ φ = deduction (contradiction (MP (Ax (~ φ) (inj₂ refl)) (Ax (~ φ  φ) (inj₁ (inj₂ refl)))))

[引理5.13] (φ ⊃ ψ) ⊃ (~ φ ⊃ ψ) ⊃ ψ

⊢[φ⊃ψ]⊃[~φ⊃ψ]⊃ψ :  {T} φ ψ  T  (φ  ψ)  (~ φ  ψ)  ψ
⊢[φ⊃ψ]⊃[~φ⊃ψ]⊃ψ {T} φ ψ = deduction (deduction (
  contradiction (MP helper (Ax (~ φ  ψ) (inj₁ (inj₂ refl)))))) where
    helper : T + (φ  ψ) + (~ φ  ψ) + ~ ψ  ~ φ
    helper = deduction← (MP-contraposition (Ax (φ  ψ) (inj₁ (inj₂ refl))))

[引理5.14 (皮尔士定律)] ((φ ⊃ ψ) ⊃ φ) ⊃ φ

皮尔士定律是表述中没有使用 ~_ 但必须要 Ax3 才能证明的代表性命题.

Peirce :  {T} φ ψ  T  ((φ  ψ)  φ)  φ
Peirce φ ψ = deduction (contradiction (MP (deduction← (explosion φ ψ)) (Ax ((φ  ψ)  φ) (inj₁ (inj₂ refl)))))