隐含同步税

我认为隐式语法,就像现在在Agda中一样,也是老练。它不应该由新的打字系统定义但应该只是顶部的一个语法糖/注释工具显式类型系统的。

下面是隐式语法的一种更简单的方法,应该是够了。(这在一定程度上受到了Necula和Lee在证明的有效表示与验证.)

首先我们引入_符号,以便用户写入_当他知道系统可以毫无歧义地进行推断。例如

  • id:(A:设置)->A->A

人们可以写id _ zero而不是id Nat zero。

第二,我们约定,如果我们写

  • f:{x:A}->{y:B}->。。。

然后我们宣布

  • f:(x:A)->(y:B)->。。。

但当我们写f时,这被理解为f。

这样,普通类型的系统就足够了,我们只有解释如何处理符号。

该机制比实施的机制更具限制性现在,但更容易理解。


欺骗

很好的例子

无法使用受限版本表达的示例。

为类型命名:

参考:(A->A->Set)->Set参考R={x:A}->R x x(R x x)符号:(A->A->Set)->SetSym R公司={xy:A}->R x y->R y x

正在将多态函数作为参数传递。。。

  • 在消除函数中:
elimVec:{A:集}(P:集){n:自然}->Vec A n->设置)->P无->({n:纳特}(x:A)(xs:Vec A n)->P xs->P(x::xs))->{n:Nat}(xs:Vec A n)->P xs
  • 构建术语序列时:
Ctx=列表类型数据项(Γ:Ctx):Ctx->设置其中ε:术语Γ[]_,_:项Γτ->项ΓΔ->项Г(τ::Δ)数据变量:Ctx->类型->设置位置v0:Var(τ::Γ)τvS:对于所有{Γστ}->VarΓτ->Var(σ:Γ)τ表格:{ΓΔ:Ctx}->({τ:类型}->VarΔτ->项Γτ)->项ΓΔ制表。。。

--乌尔夫/北美


隐含语法(帕特里克语言评论笔记)

Conor:这可能是一个选项:

Sch::=Ty|(x:Sch)->Sch|{x:Ty}->Schren:{ΓΔ:Ctx}(r:{τ:Ty}->VarΓτ->VarΔτ)->{τ:Ty}->TmΓτ->TmΔτren=?id_ren=ren(\x->x)

乌尔夫/尼尔斯-安德斯:蒂里的建议太有限了,但康纳可以。

乌尔夫:我们可以尝试不同的限制——当前的系统有一些问题

彼得:为了稳定,我们需要决定使用什么方法

Makoto:当前的系统似乎可以工作,所以不清楚通过限制它可以获得什么。但是Sch版本+某种类型的同义词可能就足够了。

本特:我真的很喜欢将“表示”(隐藏参数)从类型系统中分离出来的想法。

页面上次修改时间:2007年10月3日下午02:52
技术支持私人维基