证明Agda中的爆炸原理

Proving the principle of explosion in Agda

由于 Agda 是直觉主义的,因此必须假设排中律。但据我所知,直觉逻辑接受 ex falso quodlibet 或爆炸原理(一切都源于荒谬的定理)。如何证明这一假设:

  data ⊥ : Set where

  postulate exp : ∀ {n} {x : Set n} → ⊥ → x

可以证明爆炸的原理如下

  data ⊥ : Set where

  exp : ∀ {n} {x : Set n} → ⊥ → x
  exp ()

如果不知道如何证明这一点,可以从一个洞开始:

  data ⊥ : Set where

  exp : ∀ {n} {x : Set n} → ⊥ → x
  exp absurd = {! !}

然后,在 emacs agda2-mode 中可以按 C-c C-l 进行类型检查,这样孔将被替换并且 emacs 将显示目标。在本例中,目标的类型为 .x。然后可以单击该孔并按 C-c C-c 并键入 absurd 以将此函数拆分为变量 absurd。 Emacs 将产生上面给出的最终结果。