Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Emacs 当我期望看到一个荒谬的模式时,如何使用agda2模式生成模式?_Emacs_Agda_Agda Mode - Fatal编程技术网

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