自动校样搜索(自动)

Agda支持(自2.2.6版起)命令自动,搜索为类型的居民和填补一个洞时,发现一个。类型发现的居民并不一定是独一无二的。

在中以交互方式构造术语时,可以使用Auto作为辅助工具阿格达。在具有依赖类型的系统中,使用这样的工具不仅可以找到证据,还可以找到程序。人们不应该期望它能处理任何特定的大问题但几乎任何类型的问题都足够小。

任何来自Auto的解决方案都由Agda检查。此外,主要搜索算法具有超时机制。因此,几乎没有尝试自动操作会有害处,而且它可能会省去你按键的时间。

用法

通过将光标放置在孔上并选择自动在目标菜单中或按抄送 C-a公司.汽车的行为可以使用直接传递的各种选项进行更改在洞里。

选项

含义

-t吨 N个

将超时设置为N个

身份证件

使用定义身份证件作为提示

-米

使用当前模块中的定义作为提示

-u个

使用范围中的非限定定义作为提示

-我

列出最多十个解决方案,不承诺任何解决方案

-秒 N个

跳过N个第1个解决方案

不提供参数很好,搜索结果为默认参数。搜索一直进行到必须是唯一的)解决方案,搜索空间已满(并且未成功)探索或超时(1秒默认设置)。下面是不同模式和参数的列表。

提示

默认情况下,Auto不会尝试在范围中使用常量。如果有围绕它的引理可能有助于构造可以包含的术语它在搜索中给出提示。有两种方法这个。一种方法是向包括。这样的列表是通过写一些常量名称来给出的以空格分隔:<提示1> <提示2> ....

您还可以使用-米使用最内部模块中定义的所有常量包含当前孔,或-u个使用范围内的所有常量不合格。这两个选项都可以与命名的常数。

对于必须指定为提示的内容,有几个例外:

  • 数据类型和常量,可以通过统一这两者来推导可以省略相等约束的边。

    例如,如果约束 = 列表 A类在搜索过程中发生,然后精炼列表 ...将在不需要的情况下发生提供列表作为提示。可以省略的常量与隐藏参数中出现的参数或多或少重叠,也就是说,你在手写术语时不会写两者都可以。

  • 构造函数和投影函数会自动尝试,因此不应作为提示提供。

  • 递归调用,尽管目前只有函数本身,而不是在同一个相互块中的所有函数。

超时

超时默认为1秒,但可以通过添加-t吨 <n>参数,其中<n>是秒数。

列出并选择几个解决方案

通常,“自动”会用找到的第一个解决方案替换孔。如果你对那个特定的解决方案不满意,你可以列出十个(在most)包含标志时遇到的第一个解决方案-我.

然后,您可以通过编写-秒 <n>哪里<n>是要跳过的解决方案数(以及数字出现在列表中的解决方案之前)。选项-我-秒 <n>可以组合列出除前十个以外的解决方案个。

元变量之间的依赖关系

如果目标类型或局部变量类型包含元变量,然后这些约束也包含在搜索中。如果找到解决方案意味着Auto也找到了发生的元变量。这些解决方案将插入您的文件以及您调用自动的孔的文件。此外,任何包含任何相关元的未解决的相等约束在搜索中尊重变量。

限制

  • 不支持自然数以外的文字。

用户反馈

发送错误报告时,请使用Agda错误追踪系统除此之外,接收如果有好的例子(通过bug跟踪器),我们将不胜感激。两者都有Auto无法解决的此类示例,但您有一种感觉不会比这更大。以及仅自动的示例通过增加超时来解决问题。发送的示例将用于调整启发式并希望改进性能。