Alfa-用户指南
上次更新时间:2001年6月25日
介绍
阿尔法是WYSIWYG校对编辑器。它允许您以交互方式逐步定义理论(公理和推理规则),制定定理并构造定理的证明。中的所有步骤系统会立即检查验证结构可以构造错误的证明。使用的逻辑框架是阿格达,由实施Catarina Coquand公司,基于工作时间:蒂埃里·科昆.这是佩尔·马丁·洛夫类型理论的一个版本。
或者,您可以将Alfa视为带有提供依赖类型的类型系统。实际上,功能语言与语言非常相似卡宴通过伦纳特·奥古斯特松.
本文档描述了如何使用所见即所得编辑器,但它没有解释类型理论。
警告
在你开始玩阿尔法之前,请注意阿尔法目前正在开发中,并且您仅使用测试版本。当心那个阿尔法
- 不警告您破坏性操作,例如退出而不保存或覆盖现有文件。(破坏性可以使用撤消/重做历史记录。)
- 有一些错误,
- 如果内存不足,则会在没有警告的情况下死亡。使用大型经常堆并保存您的工作!
- 正在进行工作。事情并不总是像在本用户指南中说明!
有关更多详细信息,请参阅电流的限制版本.
目录
使用Alfa
Alfa用命令启动
阿尔法
[RT标志] [ -旗帜]
哪里
- rt标志
- 是Haskell运行时系统的可选标志列表。A有用的标志是
-小时
重排米
,其中将堆大小设置为重排兆字节。默认值为30(旧版本为25),这足以进行小编辑文件。如果在内存不超过32MB的计算机。 - 旗帜
- 是Alfa解释的可选标志列表。有关详细信息,请参阅命令行语法.注意单曲
-
在这些标志之前。
可以通过选择退出命令来自这个文件菜单。
启动Alfa时,它会打开两个窗口:
- 主管道编辑窗口显示正在编辑的文档。编辑窗口还具有菜单数量:文件,编辑,查看,选项和一个实用程序菜单。(另请参见单独的文件菜单概述对于这些菜单中的命令说明。)窗口底部有一个显示屏,显示与文件当前选定部分相关的信息,例如,占位符的类型。
- 这个菜单窗口,其中显示的上下文相关菜单编辑操作,指导用户进行校对过程。这个菜单中的命令可以由状态指示器执行,哪个是绿色的命令适用时,以及红色否则。
关闭主编辑窗口与退出Alfa相同。关闭菜单窗口会使其消失,但您可以使用中的命令实用程序菜单。
主编辑窗口底部显示的信息大小为自动调整以适应当前显示的消息,但您也可以通过拖动分隔线手动调整大小。
键盘快捷键
通过选择,可以执行各种菜单中显示的命令他们使用鼠标,但大多数人也有可以改为使用。
- 菜单窗口中显示的命令具有键盘快捷键显示在方括号中的
[ ]
.它们是一个或多个键长,应该输入没有按修改键,如元或控制.
- 其他菜单中显示的命令具有显示的快捷方式用前面的钻石.它们正好是一个键长,应该用元按键。(元关键是在一些Sun键盘上标记有菱形符号和文本中高音在许多其他键盘上。)
Alfa允许您编辑文件,这是一个序列声明.A型宣言是一组(可能)相互递归的定义。A类定义将名称与关联类型和该类型的值(x=a:a)。(语法和含义表达式跟随阿格达的定义,本文档中没有介绍。)声明中引入的名称在该声明的作用域中以及以下声明。
两种最常见的编辑操作可能是添加声明和填充占位符(实例化元变量)。前者是解释如下。后者可以通过多种方式实现,如快速参考页十大方法填写占位符.
添加和删除声明
您可以通过选择将新声明添加到文档末尾命令新宣言来自编辑编辑窗口中的菜单。然后你会有输入要定义的名称在弹出窗口中的声明中。名字应该是用逗号隔开。您还可以包括正式列表中的参数。
您还可以在文档中的任意位置添加声明只需在空白处单击在现有声明之上或之下,然后选择命令插入新声明在菜单窗口中按照上述步骤进行。(注释:这种添加声明的方式是效率较低,因为在验证引擎中没有直接支持需要重新检查整个模块。)
如果声明中定义的名称未被使用,则可以通过选择声明并执行删除操作(显示在菜单窗口中)。您实际上可以删除声明,即使名称正在使用。受影响的申报将然后用一个误差条.
选择和操作
大多数编辑都是通过选择文档的一部分完成的,通常是占位符、声明或表达式,以及执行编辑操作。菜单中显示适用的编辑操作窗口。可以通过单击它们或键入方括号中显示的组合键。(注释:键盘快捷方式是动态生成的,因此相同的备选方案可能会分配不同的不同上下文中的键。)进一步编辑操作提供在编辑菜单。
注:部分“编辑”菜单中的命令可能不适用,但没有当前版本中对此的视觉反馈。
通过单击编辑窗口中的某个点,可以选择最小的包含该点的句法单位。您还可以使用以下键:
- 空间:选择下一个(或第一个)位置持有人。使用班次它选择上一个(或最后)占位符。
- 向上:选择当前选定节点的父节点语法树。
- 向下:选择当前选定的节点。
- 左侧/赖特:选择可选择的最小值单元位于当前节点的左侧/右侧。
- 元-左侧/赖特:选择当前节点的左/右同级,例如上一项/下一项按顺序排列。
剪切和粘贴编辑
剪切和粘贴编辑的工作方式与其他编辑方式基本相同程序。
可以将文档的当前选定部分复制到通过执行复制中的命令这个编辑菜单。然后可以将其粘贴到其他位置在文档中。它也可以粘贴到其他X Windows程序中,例如emacs,通常通过按下鼠标中键(在emacs中也可以使用C-y)。选择占位符且剪贴板包含表达式时在合适的类型中,占位符可以替换为表达式通过执行这个粘贴中的命令编辑菜单。语法错误可能如果剪贴板包含一些文本(来自文本编辑器)没有形成正确的语法表达。
如果上面的空白或下面选择了一个声明,并且剪贴板包含一个宣言。
您还可以粘贴到现有表达式和声明的顶部。如果如果发生类型错误,您将得到误差条.
将新构造函数添加到现有数据
键入依据选择数据表达式并选择命令添加建造师从菜单窗口。在这之后,你可能在某些情况下还需要为新构造函数添加分支表达。这是以相同的方式完成的,即选择案例
表达式并选择命令添加分支从菜单窗口。
类型检查器可能不接受不完整的case表达式,因此向数据类型添加构造函数可能会导致错误,导致包含受影响的case表达式的声明标有误差线。仍然可以添加新构造函数的分支。
也可以从中删除分支案例
表达式和构造函数数据
类型。为此,请选择分支或构造函数并选择删除菜单窗口中的命令(或编辑菜单)。删除仍在中的构造函数在某处使用会导致受影响的声明标记为错误.
在某些情况下,例如,使用给予
命令在构造case表达式时,必须输入表达式作为文本。在这些情况下使用的语法与Alfa使用的语法相同用于将文档存储在文件中。(请参阅的文档阿格达详细信息。)例如,这意味着构造函数应该以@_
你不能忽略隐藏的论点。你可以使用占位符(?
或{| |}
)对于不想填写的子表达式。
Alfa目前为用户提供以下影响方式布局:
- 单个标识符的选项:隐藏的数量变元、中缀优先级和结合性、量词符号等。这些选项适用于标识符的每次出现。
- 一些全局设置:启用/禁用参数隐藏,启用/禁用压缩符号、校对样式等。
关于参数隐藏
单态类型理论中的术语通常包含大量冗余类型信息。此类型信息通常由验证引擎,用户不必填写。提供了参数隐藏机制作为一种隐藏方式一些冗余信息,从而使术语更小更具可读性。
您可以将标识符的隐藏参数数量设置为如下所述。在标识符带有n个隐藏参数应用于某些参数,第一个参数n个参数将不可见。(在早期版本的Alfa中用一个°表示,让你看到隐藏的东西。)
注意,参数隐藏是标识符和未连接到特定绑定的范围。
这个查看菜单包含用于打开和远离参数隐藏机制。
作为参数隐藏效果的一个例子,请考虑列表功能图:
没有参数隐藏 |
带有2个隐藏参数 |
|
|
设置标识符的布局选项
标识符的布局选项可以通过单击绑定标识符的出现并选择命令更改布局选项显示在菜单窗口中。这会弹出一个窗口,您可以在其中更改各种选项。
此窗口中显示的布局选项从上到下依次为:
- 隐藏参数的数量
- 在此处输入数字以设置隐藏参数的数量。
- 显示为
- 如果存在,将显示在此字段中输入的字符串,而不是标识符的真实名称。此字符串可以是任何组合字符,而不仅仅是合法标识符,并且它不影响菜单窗口中显示的缩写。
- 使用符号字体
- 标识符将使用符号字体而不是普通的字体。
- 使用图像文件
- 输入到显示为:字段是解释为xbitmap中包含图像的文件的名称格式以显示实名。
- 非固定/中缀/后缀
- 这会影响标识符如何应用于显示参数:
非修复 | 中缀(Infix) | 后缀 |
---|
操作 | 操作 | 操作 |
操作x | (x操作) | x操作 |
操作x y | x操作y | (x操作)y |
操作x y z | (x操作y)z | (x操作)y z
|
- 中缀三元/中缀四元
- 这些选项如下中缀(Infix)但也提出了论点操作员上方和/或下方。
- 量词
- 此选项打开量词标记。量词是一个通常应用于lambda的函数抽象。例如,应用程序
对于所有(\(x::A)->B x)
,可能显示为
.量化域可以显示,如本例所示,或被隐藏。
- 大型运营商
- 此选项导致应用表格
金融资产负债表
显示为
和表单的应用f a b(i->c)
显示为
- 薄纱
- 此选项以尖括号显示函数的参数,用逗号分隔。函数的名称将不可见。
- 分数
- 对于应用于两个参数的函数,此选项显示参数垂直,由水平线分隔。函数的名称将不可见。
- Mixfix运算符
- 此选项允许您交错参数和任意字符串。参数将被插入以代替
_
中的个字符函数的名称(或显示为字符串,如果给定)。例如,应用程序
如果(T)hen_else_ x个 年 z(z)
将显示为
如果x个然后年其他的z(z)
也可以使用数字来引用特定位置。例如,通过更改显示为将上述函数的字符串
如果为1,则为2,否则为3
相同的应用程序将显示为
年如果x个,z(z)否则
- 关联性和优先级
- 这会影响表达式插入括号的位置包含infix/mixfix/distfix操作符的嵌套应用程序。
紧凑型符号
这个查看菜单包含用于打开的命令和非紧凑符号。在当前版本中,紧凑表示法意味着函数类型和lambda表达式缩写为:
完整表示法 | 紧凑表示法 |
---|
(a:a)->(b:b)->C | (a:a,b:b)->C |
(a:a)->(b:a)->C | (a,b:a)->C |
\x->\y->e | \x y->e |
它还使嵌套的case表达式以更紧凑的方式显示。右侧为case表达式的定义显示在等式风格。嵌套的case表达式显示为嵌套模式。
错误警告:某些编辑操作在以下情况下无法正常工作紧凑表示法正在使用中,所以您可能想暂时关闭它。例如,如果您更改(a,b:a)->C到(a,b:b)->C你会看到(a,b2:b)->C,但你会得到(a:B,B:a)->C。
校样样式
如果它们是以某种方式构造的,那么证明可以是以自然演绎风格和其他类似风格呈现。请参见关于的单独教程自然扣除风格证明了解更多详细信息。
命令计算表达式
在中实用程序
菜单弹出一个窗口,您可以在其中输入要计算的表达式。表达式必须作为文本输入(如解释所示在上面). 选择占位符后,表达式将在该位置的上下文中进行计算持有人。否则,将在顶级上下文中对其进行评估(即,顶层定义的所有标识符都在范围内)。
注:有一个终止测试,因此如果您尝试评估不终止的表达式,或需要太多的表达式计算步骤,您将得到一条错误消息。
此窗口中的箭头按钮允许您在评估(<和>按钮)或go直接转换为表达式的原始形式和正常形式(该<<和>>按钮)。
语法错误
由于Alfa是一个语法导向的编辑器,因此不可能构造语法错误的文档。然而,文本表示表达式或其他语法实体当然可能包含错误和可以通过以下方式进入系统:
- 打开文件时。如果文件,Alfa显示错误消息,指示行和发生错误的列,并拒绝打开文件。通常只有在创建文件或用Alfa以外的编辑器修改。
- 什么时候?输入表达式为文本在这种情况下,Alfa将光标移动到错误位置,显示一个悲伤的笑脸和一条错误消息,并拒绝接受表达式。
- 粘贴时。当您在中选择了一些文本时另一个编辑器并尝试将其粘贴到Alfa中,您将得到一个错误消息,如果文本不表示表达式,声明或需要任何语法实体尝试粘贴它。
类型错误
输入Alfa的所有内容都会立即进行类型检查,因此通常不可能创建类型不正确的文档。然而,在某些情况下,编辑操作会导致键入允许出现错误:
- 打开文件时。如果文件包含类型不正确声明,文件仍处于打开状态,但声明包含错误的标记为误差线.错误声明之后的声明是未选中并用错误栏标记。
- 验证引擎不直接支持的操作,(当前大多数编辑操作,但实例化位置除外持有人)通过重新检查整个文件进行处理。这个可以导致声明变得错误并带有错误标记条,就像打开错误文件时一样。
错误栏是声明左侧的红色垂直栏。它指示声明的类型检查(或之前的声明)失败,并且被留在未检查状态.当声明处于未选中状态时,仅限于可以在其中进行编辑操作。特别是,您不能查看占位符的类型,您填写的内容不是类型选中的。进行一些更改后,可以使用以下命令再次检查让类型检查器重新检查声明,如果错误已纠正,将其返回到正常的类型检查状态。