自动机



自动机是一种语言,由N.G.Bruijn在60年代后期设计,以便在计算机中表现数学证明。它是“类型理论”线的直接祖先。辅助证明其中最著名的是NUPRL和COQ。

这个网页是现代自动机器的重新实现的家园。弗里克维迪克. 它提供了一个便携式的,简单的和快速的检查器(它是用C编写的)用于Aut-68和AutoQE语言。

*

程序的当前版本是版本4.2. 但是因为手册描述版本4.1这一点也在这里(尽管它与最新版本几乎不同):主要的区别在于新版本可以将AutoScript文本编译成“单行”表示。将它们全部编译在一起,然后有一个程序从输入中读取AutoStand并将其诊断输出到其输出。

没有足够的文档来说明这个自动实现:例如,没有UNIX风格的男性页面。目前存在的是一篇简短的论文。一种准确、精确的数学语言自动机检验器(点击这个链接将下载一个PASScript文件;有一个PDF版本其中包含系统版本4.1的手册。

70年代写的最大的自动机文本。Landau的翻译Grutelang-DER分析(这个链接给出了一个GZIP的TAR文件,既有Landau的书的纯TX版本,也有JutTin的翻译。)

*

自动机和“现代”系统有三个主要区别:

  • 在现代系统中,由用户交互地调用所谓的“策略”来生成证明对象。在自动机中,所有的证明项都必须用手“编码”。这意味着AutoStudio没有自动化,但另一方面,在自动证明中更为明确。(The半系统在这两个世界之间妥协是一个有趣的尝试。

  • Automath没有“归纳类型”。这意味着,现代系统中的基本类型是由归纳类型构建的,必须在Automath中公理化地引入。因此,由于自动机的逻辑具有较少的“数据类型”内置,在Automath,在证明开发开始时使用公理是不可避免的。

    这反过来又导致在自动机中,一般人不太倾向于停留在系统内构建的逻辑中。七十年代在自动机项目中创建的大量证明性发展都使用了经典逻辑。

  • 基于自动机的类型理论与基于“构造演算”的“现代”类型理论(与Brand Read立方体给出的精细结构)有着微妙的不同。

    X:D

    我们有一个表达式f(x),它具有R(x)型,在其上有某种类型的t(x),所以我们有

    f(x):r(x):t(x)

    (实际上,变量x不会出现在“类”t(x)中,所以我们只能写“t”。

    [x:d] f(x):(x:d)r(x):t(x)

    其中“[x]”应被称为“λx”和“(x)”为“皮x”。

    [x:d] f(x):[x:d] r(x):[x:d] t(x)

    在某种程度上,自动机“[]”抽象器概括了lambda和pi抽象器。或者相反地,λπ可以看作是自动机“[]”的前两个阶段。(实际上,在AUT QE语言中有一种称为“类型包含”的词,这意味着有打字。

    [x:d] r(x):t(x)

    允许,混淆了“旧的”和“新的”键入lambda抽象的方式之间的区别。

(最后修改1999—09—29)