Emacs 当我期望看到一个荒谬的模式时,如何使用agda2模式生成模式?
例如,我们正在证明Emacs 当我期望看到一个荒谬的模式时,如何使用agda2模式生成模式?,emacs,agda,agda-mode,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。好
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。好的,假设您从这个配置开始:
2+2≠5 : 2 + 2 ≡ 5 → ⊥
2+2≠5 h = {!!}
在这种情况下,您可以使用emacs,因为在h
上匹配生成的子项也将被命名为h
。因此,使用:
(开始录制宏)
(移动到孔中)C-C-f
(匹配C-C-C-h-RET
)h
(记录宏)
您已经记录了“移动到h上匹配的第一个目标”的操作。您现在可以继续按
,直到出现荒谬的情况。也有类似的情况。使用此功能,您可能可以编写2+2≠5(snsnsn())
其中snsN
生成适当数量的sn
s。不过自动化程度不高。这太棒了!如果一天内没有更好的方法出现,我会将你的答案设置为接受:D