如何有效地使用Agda的自动验证搜索?

时间:2014-02-26 07:27:41

标签: agda

在编写校样时,我注意到Agda的自动校对搜索经常找不到对我来说显而易见的解决方案。不幸的是,提出一个小例子,说明问题似乎很难,所以我试着描述最常见的模式。

  • 我忘记将-m添加到洞中以使Agda查看模块范围。我可以将该标志设为默认值吗?会有什么缺点?
  • 当前的洞通常可以通过我即将实现的函数的参数来填充。即使添加-m,Agda也不会考虑letwhere子句中引入的函数参数或符号。简单地尝试所有这些都有问题吗?
  • 查看目标时,甚至不会显示letwhere子句中引入的符号。为什么?

使用auto更有效的其他习惯可以做什么?

1 个答案:

答案 0 :(得分:1)

Agda的自动校对搜索硬编码到编译器中。这让它很快,    但限制了您可以执行的自定义量。一种替代方法    将使用Agda实现类似的证明搜索程序    反思机制。随着最近增强版的反射使用    TC monad,    您不再需要实施自己的统一程序。

卡洛斯     Tome一直致力于重新实现这些想法(查看他的代码     https://github.com/carlostome/AutoInAgda)。他一直在研究几个     尝试使用上下文信息的版本,打印调试信息,     希望这有帮助!