证明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 将产生上面给出的最终结果。
由于 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 将产生上面给出的最终结果。