阿尔法是WYSIWYG校对编辑。它允许您以交互方式逐步定义理论(公理和推理规则),制定定理并构造定理的证明。中的所有步骤校样结构立即由系统检查,没有可以构造错误的证明。所使用的逻辑框架是蒂埃里·科昆(Thierry Coquand)对佩尔·马丁·洛夫(Per Martin-Löf)类型理论的版本。或者,您可以将Alfa视为带有类型系统的小型纯函数式编程语言提供了依赖类型。编辑立即检查您输入的程序语法正确,键入正确。
Alfa的灵感主要来自Window-Alf[AGNvS94型],已实施通过莉娜·马格努森和约翰·诺德兰德,并具有类似的用户界面。
计划是Alfa应该通过以下方式改进Window-Alf
- 允许用户定义证明术语应如何显示在屏幕上(和纸上)。这包括简单的比如参数隐藏和中缀操作符,还有更多高级数学符号与自然演绎式证明树和其他证明表示。阿尔法也应该允许您生成解释性文本和证明的文档碎片交错排列。
- 使用超文本和Web浏览器中的想法,允许用户高效地浏览大型校样和库。
其中一些已经实施。如所示图90,证明可以用自然演绎的方式呈现。图90。Alfa的窗户垃圾场,说明施工自然演绎风格的简单证明。
而Window-Alf是在标准ML(验证引擎)中实现的以及C++和面试(用户界面),Alfa完全在Haskell,使用Fudgets作为用户界面。在编写,源代码由大约8000条线路组成,分布如下跟随:
- Thierry Coquand的验证引擎。2700条线路。这包括一个解析器和解析器组合符(480行)。
- Fudget库的扩展和改进。1900行。其中最大的部分是用于显示的新软糖结构化图形(如所述第27章)和语法导向编辑。它还包括一个新的文件选择窗口和具有立即语法的字符串输入窗口通过笑脸进行检查和反馈(请参见图91). 尽管这些技术的发展促使Alfa项目,它们足够通用,可以使用在其他情况下。
图91:。笑脸表示是否有输入中的语法错误。
- Alfa用户界面。3400条线路。最大的部分是WYSIWYG风格编辑操作的实施(1000线条)和绘制/构建抽象语法树的代码由语法导向的编辑器fudget使用(800行)。
此外,Aarne Ranta还提供了2100条线路,支持自然语言。其中一些代码已集成到Alfa中,但这项工作还处于试验阶段。有关Alfa的更多详细和最新信息,请访问WWW[哈尔97].