当我期望看到荒谬的模式时,如何使用agda2模式生成模式?

时间:2017-11-06 17:54:47

标签: emacs agda agda-mode

例如,我们正在证明2 + 2 != 5

data _+_≡_ : ℕ → ℕ → ℕ → Set where
  znn : ∀ {n} → zero + n ≡ n
  sns : ∀ {m n k} → m + n ≡ k → suc m + n ≡ suc k

我可以手动证明:

2+2≠5 : 2 + 2 ≡ 5 → ⊥
2+2≠5 (sns (sns ()))

但是我希望生成模式(sns (sns ()))(就像填充一个洞一样)。有没有办法实现这个目标?

我正在使用带有agda2模式的Emacs 25。

1 个答案:

答案 0 :(得分:3)

好的,所以我们假设你从这个配置开始:

2+2≠5 : 2 + 2 ≡ 5 → ⊥
2+2≠5 h = {!!}

在这种情况下,您可以使用emacs' keyboard macros因为h上匹配生成的子词也会被命名为h。所以使用:

  • <f3>(开始录制宏)
  • C-c C-f(搬到洞里)
  • C-c C-c h RET(匹配h
  • <f4>(记录宏)

你已经记录了&#34;移动到第一个目标的动作与h&#34;匹配。您现在可以继续按<f4>,直到遇到荒谬的案件。