跳到内容

红色PRL/mugen

存储库文件导航

穆根:宇宙水平

的实现Conor McBride粗鲁但有效的分层.我们的POPL 2023论文“宇宙多态性的序理论分析”解释了我们设计背后的理论。

稳定性

该API是实验性的且不稳定。我们会打碎东西!

组件

实验中的哲学和信仰

  1. 顶级定义的可分辨级别变量应在核心语言中明确表示,以实现清晰语义。(它可以在表面语言中保持隐式。)
  2. 具有累积性的单变量宇宙多态性就足够了。典型的模糊性(如Coq中的)和多变量宇宙多态性(如Agda中的)是过分的。
  3. 有最高级的类型检查很方便。然而,不应允许最终用户编写顶层,也不允许移动顶层。

置换代数

在Conor McBride的注释中,我们注意到在恒等式和合成下闭合的层上的任何一类严格单调算子都是有效的。我们将这样的类编码为置换代数。通过使用以下非负数模块,可以恢复经典置换操作符:

如何使用

安装

您需要OCaml 4.13或更高版本。以下是使用OPAM 2.1安装库的最快方法:

欧帕姆大头针+https://github.com/RedPRL/mugen网站

示例代码

模块  = 穆根。轮班。国际
模块 M(M) = 穆根。语法

(*universe级别的类型,使用整数作为位移,使用字符串作为变量名。*)
类型 乌列维尔= (.t英寸,一串)M(M).免费

(*表示“x+10”的级别*)
 :乌列维尔= M.Free。(移位(var"x个") (一、。第_页10))

文件

这是API文档。