例如,我们正在证明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。
答案 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>
,直到遇到荒谬的案件。