Intrinsically-Typed Mechanized Semantics for Session Types
会话类型已经成为构建基于通信的程序的强大范例。它们保证了具有复杂通信协议的并发程序的类型可靠性和会话保真度。由于具有会话类型的语言的类型可靠性证明是繁琐的,并且涉及技术,因此很少看到这些系统的机械可靠性证明。我们提出了一个可执行的内在类型的小步语义的一个现实的功能会话类型演算。演算包括线性、递归和带子类型的递归会话。异步通信是用编码来建模的。语义在Agda中实现为一个内在类型化的、可中断的CEK机器。这个实现证明了类型保持和特定的构造进度概念。
2019-08-08 cs.PL
Proving Noninterference by a Fully Complete Translation to the Simply Typed lambda-calculus
Tse和Zdancewic已经正式确定了Abadi等人的不干涉概念。的DCC的逻辑关系,并通过系统F的参数化证明了系统F的不干涉性。不幸的是,他们的证明在一个关键引理中包含错误,即他们从DCC到系统F的翻译保留了为两个演算定义的逻辑关系。事实上,我们已经找到了一个反例,在这篇文章中,我们证明了密封演算的不干涉性,而不是DCC,密封演算是DCC的一个新变体,通过还原到简单类型λ演算的逻辑关系的基本引理,使用简单类型λ演算的完全完全翻译。完全完备性在显示翻译过程中两种逻辑关系的保持方面起着重要的作用。此外,我们调查之间的关系密封演算,DCC和DCC的Tse和Zdancewic的扩展,并表明第一个和最后三个是等价的。
2008-09-20 cs.CR cs.PL
A Dependent Dependency Calculus (Extended Version)
二十多年前,Abadi等人建立了依赖核心演算(DCC)作为分析类型化程序设计语言中依赖关系的通用框架。从那时起,依赖性分析已经显示出对语言设计的许多实际好处:它的结果可以帮助用户和编译器强制执行安全约束,消除死代码,以及其他应用。在这项工作中,我们提出了一个依赖依赖演算(DDC),它扩展了这个一般的想法,设置依赖类型的语言。我们使用这种演算来跟踪运行时和编译时的无关性,从而实现更快的类型检查和程序执行。
2022-02-02 cs.PL
Nominal Henkin Semantics: simply-typed lambda-calculus models in nominal sets
我们研究了一类简单类型的λ演算的名义代数Henkin式模型,其中变量映射到表示中的名称,而λ演算抽象映射到(非功能性的)名称抽象操作。由此产生的表示更小,更好的行为,在我们精确的方式,比基于函数值的模型。使用这些新的模型,我们然后开发了一个概括的λ-长期语法丰富他们的存在元变量,从而产生一个理论的不完整的功能。这种不完备性与函数抽象和应用给出的不完备性的通常概念是正交的,并且对应于洞和不完备对象。
2011-11-01 cs.LO cs.PL
A Proposal for an Interactive Shell Based on a Typed Lambda Calculus
The Open University of Japan(日本开放大学)
本文介绍了Favalon,一个功能性的程序设计语言的前提下建立的λ演算作为一个交互式的外壳更换。Favalon使用类型推断、灵活的运行时类型元数据以及shell用来将命令链接在一起的相同技术,与现有库和命令的类型化版本无缝集成。Favalon的大部分语法都可以通过用户定义函数进行自定义,允许任何熟悉命令行shell的人对其进行扩展。此外,Favalon的类型推断引擎可以从其运行时库中分离出来,并且可以很容易地重新用于其他应用程序。
2021-04-08 cs.CL cs.PL
Type-Driven Prompt Programming: From Typed Interfaces to a Calculus of Constraints
本文提出类型驱动的提示编程框架Lambda Prompt,通过依赖类型演算与概率精化表达句法和语义约束,并针对约束表达与算法支持不足提出优化规则及编译器研究方向。
2025-08-17 cs.FL cs.PL
On Generalized Metric Spaces for the Simply Typed Lambda-Calculus (Extended Version)
广义度量,从Lawvere的度量空间丰富的范畴的观点,已被广泛应用于指称语义作为一种方式来衡量在何种程度上两个程序的行为相似,但不等价的方式。然而,到目前为止,将广义度量应用于高阶语言(如简单类型的λ演算)并不令人满意。本文研究了广义度量空间的Carnival闭范畴的一种新的构造方法。我们的出发点是一个定量语义学的基础上,一般的逻辑关系。在这种情况下,我们表明,几个家庭的广义度量提供的方法来扩展欧几里德度量的所有高阶类型。
2021-04-27 cs.LO cs.PL math.LO
Strong Normalization for the Calculus of Constructions
构造演算(CC)是依赖类型编程和高阶构造性逻辑的核心理论。CC最初是在Coquand 1985年的论文中提出的,它激发了程序设计语言和类型论25年的研究。今天,CC的扩展构成了Coq和Agda等语言的基础。本综述回顾了CC强规范化属性的三个证明(良好类型的表达式不存在无限约简序列)。它突出了证明结构的相似性,同时显示了它们的差异是如何被作者的不同目标所激发的。
2022-10-07 cs.PL
A Specification for Typed Template Haskell
多阶段编程是一种经过验证的技术,可以通过控制代码生成来提供可预测的性能特征。我们提出了一个核心语义类型化模板Haskell,扩展的Haskell,支持多阶段的编程,以及与多态性和合格的类型进行交互。我们的语义与一个声明性的源语言与合格的类型的核心语言的基础上的多态λ演算增强多阶段的结构。
2021-12-07 cs.PL
Typed Non-determinism in Concurrent Calculi: The Eager Way
本文提出一种基于急切语义的会话类型π-演算,以处理非确定性与线性性的张力,确保无死锁性,并通过翻译资源λ-演算展示其表达能力。
2024-12-07 cs.LO cs.PL
Session Types in a Linearly Typed Multi-Threaded Lambda-Calculus
我们提出了一个形式化的会话类型在多线程λ演算(MTLC)配备了一个线性类型系统,建立MTLC类型保存和全球的进步。后者(全局进度)意味着在MTLC中对良好类型程序的评估永远不会陷入死锁。由于这个制定的MTLC可以很容易地嵌入到ATS,一个成熟的语言与功能的编程核心,支持依赖类型(的DML风格)和线性类型,我们得到了一个直接实现的会话类型在ATS。此外,我们获得了直接支持的依赖会话类型的基础上,这种嵌入到ATS的形式。与现有的各种会话类型的形式化相比,我们看到本文给出的形式化在其接近具体实现方面是独特的。特别是,我们报告这样一个实现准备实际使用,生成Erlang代码从良好类型的ATS源(利用会话类型),从而充分利用的基础设施支持分布式计算在Erlang。
2016-03-11 cs.LO cs.PL
A prototype-based approach to object reclassification
我们调查,在功能原型为基础的语言,微积分的对象,可能会扩展自己收到一条消息,一种能力被Cardelli称为一个自我造成的操作。我们提出了一个健全的类型系统,这种演算,保证评估一个良好类型的表达式将永远不会产生一个消息未找到运行时错误。由此产生的演算是一种尝试,旨在定义一种语言,将静态类型检查的安全优势与动态类型语言中通常存在的灵活性相结合。
2018-08-13 cs.PL
Scoped and Typed Staging by Evaluation
本文基于依值类型化宿主语言,构造了包含静态与动态阶段的极简双层级简单类型演算,通过受求值归一化启发的模型构造获得分阶段求值函数,并演示了其扩展至元编程及数字电路描述语言的能力。
2024-01-11 cs.PL
$λ_A$: A Typed Lambda Calculus for LLM Agent Composition
State Key Laboratory of Novel Software Technology, Nanjing University(南京大学软件新技术国家重点实验室);Software Institute, Nanjing University(南京大学软件学院)
本文提出$λ_A$类型lambda演算,通过引入oracle调用、有界固定点、概率选择和可变环境扩展简单类型lambda演算,证明类型安全性和终止性,并展示其在代理配置检测中的应用。
2026-04-14 cs.MA cs.PL cs.SE
A Theory of RPC Calculi for Client-Server Model
使用多层程序设计语言,程序员可以指定要运行的代码的位置,以减少基于Web的客户端-服务器模型的开发工作,在基于Web的客户端-服务器模型中,程序员分别编写客户端和服务器程序,并一起测试多个程序。RPC演算是Cooper和Wadler开发的这些语言的基础之一,在程序员编写任意深度嵌套的客户-服务器的【形】交互时具有对称通信的特征。然而,现有的研究只考虑动态类型的位置。我们提出了一个类型化的RPC演算的位置跟踪类型级别。一个新的定位类型系统为客户-服务器的【形】模型的RPC演算理论铺平了道路。(In在SCP 2020和PPDP 2021上发表的以下论文中,类型化RPC演算将通过多态位置和基于类型的切片编译进行增强。)
2021-10-28 cs.PL
Typed Generic Traversal With Term Rewriting Strategies
提出了一种策略性术语改写的类型化模型。关键的创新是覆盖了泛型遍历。为此,我们定义了一个类型化重写演算S '_{gamma}。演算采用了一个多排序的类型系统扩展指定的通用策略类型伽马。我们考虑两种通用的策略类型,即类型保持和类型统一的策略。S ′_{gamma}提供遍历组合子,用于从多分类和一般策略中构造遍历或遍历方案。遍历组合子模拟了不同形式的单步遍历,也就是说,它们处理给定项的直接子项,而不期望任何递归到项的方案。为了适应泛型类型,我们需要添加一个基本的组合子来将多排序策略$s$提升为泛型类型gamma。这一步称为策略扩展。对应的组合子的语义表明,只有当手头的项的类型适合时才应用s,否则扩展策略失败。这种方法要求策略应用的语义必须在一定程度上依赖于类型。覆盖泛型项遍历的类型化策略项重写是泛型编程的一个简单但富有表现力的模型。它在程序转换和程序分析中有应用。
2002-07-28 cs.PL
On Encoding LF in a Predicate Logic over Simply-Typed Lambda Terms
Festival和Miller描述了他们声称是遗传Harrop公式逻辑中依赖类型化的λ演算LF的忠实编码,这是Church简单类型论的直觉变体的子逻辑。它们的编码大致基于将LF中的对象表达式转换为简单类型的λ演算中的项,方法是在类型化中擦除依赖关系,然后通过使用谓词重新捕获擦除的依赖关系。不幸的是,这个想法并不完全奏效。特别是,我们提供了一个反例,声称所描述的编码是忠实的。这种说法错误的根本原因是,从依赖类型的lambda项到简单类型的lambda项的映射不是一对一的,因此逆变换是模糊的。这一观察对其他相关编码有广泛的影响。
2021-08-24 cs.LO cs.PL
On Decidable and Undecidable Extensions of Simply Typed Lambda Calculus
本文证明了有限PCF在加入异常、代数效应和引用等副作用后的四种扩展的不可判定性,并针对带引用的扩展提出了首个包含引用单元的高阶递归函数的非平凡可判定片段。
2025-02-10 cs.LO cs.PL
Backpropagation in the Simply Typed Lambda-calculus with Linear Negation
Deepomatic;CNRS(法国国家科学研究中心);Université Sorbonne Paris Nord(索邦巴黎北大学);Université de Paris(巴黎大学)
反向传播是一种经典的自动微分算法,用于计算由某类简单的一阶程序(称为计算图)指定的函数的梯度。它是多个领域的基本工具,最值得注意的是机器学习,它是有效训练(深度)神经网络的关键。近年来,一个名为可微程序设计的研究领域迅速发展,其目的是通过求助于实际的程序设计语言,赋予控制流算子和高阶组合子,如map和fold,更综合和模块化地表达计算图。在本文中,我们将反向传播算法扩展到这样的一个程序设计语言的一个范例:我们定义了一个组合程序转换从简单类型的λ演算本身增加了一个概念的线性否定,并证明了这计算梯度的源程序具有相同的效率作为一阶反向传播。转换是完全无效果的,因此提供了对反向传播动态的纯逻辑理解。
2019-11-06 cs.LG cs.LO cs.PL
Recovering Purity with Comonads and Capabilities
在本文中,我们采用了一种普遍有效的(ML风格的)类型λ演算,并展示了如何扩展它以允许捕获具有类型的纯表达式。我们的关键观察是,正如纯简单类型的λ演算可以扩展到支持一元类型规则的效果,不纯类型的λ演算可以扩展到支持一元类型规则的纯度。我们通过一个简单的指称模型来建立我们的类型系统的正确性,我们称之为能力空间模型。我们的模型形式化的直觉常见的系统程序员,执行效果的能力应该通过访问权限或能力进行控制,一个程序是能力安全的,如果它没有执行效果,它没有一个运行时的能力。然后,我们确定的公理范畴结构的能力空间模型验证,并使用这些公理给我们的comonadic类型系统的范畴语义。然后,我们给出了一个等式理论(替代和调用的值$β$和$η$法律)的命令λ演算,并显示其可靠性相对于此语义。最后,我们给出了一个翻译的纯简单类型的λ演算到我们的共同命令演算,并表明,任何两个条款是$βη$ -平等的STLC是平等的共同命令演算的方程理论,建立纯程序可以映射到我们的命令演算在一个方程保持的方式。
2020-11-10 cs.LO cs.PL
Typing Copyless Message Passing
我们提出了一个演算,模拟一种形式的进程交互的基础上无拷贝的消息传递,在风格的奇点OS。演算配备了一个类型系统,确保良好的类型的进程是免费的内存故障,内存泄漏,和通信错误。类型系统本质上是线性的,但是我们证明了仅仅线性是不够的,因为它为类型良好的进程泄漏大量内存的情况留下了空间。我们解决这些问题的基础上的会话类型的原始变体的类型系统。
2012-03-01 cs.PL
Explicit Effect Subtyping
随着代数效果和处理程序的普及,对其有效执行的需求也在增加。Eff是一种类似ML的语言,具有对处理程序的本机支持,它具有一个基于子类型的效果系统,可以在该系统上构建一个效果感知优化编译器。不幸的是,根据我们的经验,为Eff实现优化非常容易出错,因为它的核心语言是隐式类型的,这使得代码转换非常脆弱。为了弥补这一点,我们提出了一个显式类型的多态核心演算代数效果处理程序与子类型为基础的类型和效果系统。它具体化了在显式类型转换中的子类型化,并使用见证子类型化证明的子类型化,从而快速暴露程序转换中的类型化错误。我们的面向类型的细化带有一个基于约束的推理算法,该算法将隐式类型的Eff-like语言转换为我们的演算。此外,所有的子和效应信息都可以直接擦除,这表明子没有计算内容。此外,我们提出了一个一元的翻译从我们的演算到一个纯语言没有代数的影响或处理程序,使用效果的信息,只有在必要时才引入一元结构。
2020-05-28 cs.PL
Gradual Typing for Extensibility by Rows
这项工作研究了行类型和行多态性的逐步类型化。这项工作中的关键要素是动态行类型,它表示行的静态未知部分,以及行类型的一致性,它允许将静态行类型注入动态行类型,反之,将动态行类型投影到任何静态行类型。虽然一致性静态地捕获动态行类型的行为,但当与标识行类型直到字段重新排序的行等价相结合时,它使逐渐类型化语言的语义不一致。为了解决这个问题,我们开发了一致等价,它的特点是一致性和行等价的组合。使用一致等价,我们提出了一个多态归咎演算行类型和行多态性。在我们的责备演算中,强制转换不仅执行动态行类型的运行时检查,而且还执行行类型中的字段重新排序。为了简化行多态性的技术开发,我们采用了作用域标签,这是Koka语言所采用的,也是在效果系统的上下文中出现的。利用这些技术发展给出了我们的责备演算的形式化定义,并证明了它的类型可靠性。我们还勾画了逐渐类型化的表面语言和类型保持翻译的表面语言的责任演算和讨论的保守性的表面语言的静态类型化的语言与行类型和行多态性。
2019-10-22 cs.PL
A Categorical Normalization Proof for the Modal Lambda-Calculus
本文为模态λ-演算提出基于Kripke式替换的求值归一化算法,证明其可靠完备,为元编程的依赖类型基础奠定逻辑基石。
2023-02-20 cs.LO cs.PL
Live Functional Programming with Typed Holes
本文开发了一个动态语义不完整的功能程序,从静态语义在最近的工作榛子。我们将不完整的函数程序建模为带孔的表达式,空的孔代表缺失的表达式或类型,非空的孔作为静态和动态类型不一致的膜。而不是像在一些现有系统中那样在评估遇到任何这些孔时中止,评估围绕孔进行,当它流过程序的其余部分时跟踪每个孔实例周围的闭合。编辑器服务可以使用这些漏洞闭合中的信息来帮助程序员在决定如何填充剩余的漏洞时开发和确认程序的完整部分的行为的心理模型。孔洞闭合还支持填充并恢复操作,从而避免了在相当于孔洞填充的编辑之后重新开始计算的需要。从形式上讲,语义学借用了渐进类型论(为处理未填充的类型漏洞提供了基础)和上下文模态类型论(为漏洞闭包提供了逻辑基础)的机制,将这些机制结合起来,并开发了必要的额外机制来继续评估过去的漏洞,同时保持类型安全。我们已经使用Agda证明助手将核心演算的元理论机械化,称为Hazelnut Live。我们还将这些想法实现到Hazel编程环境中。该实现遵循Hazelnut编辑操作演算自动插入漏洞,以保证每个编辑器状态都有一些(可能不完整)类型。结合本文的类型安全属性,其结果是一个概念验证的实时编程环境,其中丰富的动态反馈是真正可用的,没有差距,即每一个可达的编辑器状态。
2018-11-20 cs.PL
The Safe Lambda Calculus
安全性是高阶文法的一个句法条件,它根据变量的类型论顺序约束变量在产生式规则中的出现。在本文中,我们介绍了安全的λ演算,这是通过转置(和推广)的设置简单类型的λ演算的安全条件。与安全性的原始定义相反,我们的演算并不约束类型(必须是同质的)。我们表明,在安全的λ演算,没有必要重命名绑定变量时,执行替代,变量捕获是保证不会发生。我们还提出了一个适当的概念β-减少,保持安全性。与Schwichtenberg在1976年对简单类型的λ演算的刻画一样,我们证明了在安全的λ演算中可表示的数值函数恰好是多元多项式,因此条件是不可定义的。我们也给出了表征词的功能。然后,我们研究了两个安全的简单类型的条款,并表明这个问题是PSPACE困难的决定β-eta平等的复杂性。最后,我们给出了一个游戏语义分析的安全:我们表明,安全的条款表示的“P-增量合理的策略”。因此,在安全的博弈语义中,指针只有从4阶开始才是必要的。
2009-02-19 cs.GT cs.PL
Circular Proofs as Session-Typed Processes: A Local Validity Condition
本文扩展了直觉主义线性逻辑与会话类型π演算的对应关系到带最小和最大不动点的子结构逻辑片段,提出一个局部且可判定的有效性准则来识别对应有效循环证明的互递归进程,并证明该准则比既有守护条件更严格但更适合作编程语言基础。
2022-05-09 cs.LO cs.PL
Elegant elaboration with function invocation
我们提出了一个优雅的设计的核心语言在依赖类型的λ演算与$δ$减少和细化算法。
2021-07-05 cs.PL
The Functional Machine Calculus II: Semantics
作者最近引入的函数机器演算(FMC)是拉姆达演算的推广,它可以忠实地编码高阶可变存储、I/O和概率/非确定性输入的影响。值得注意的是,它仍然是融合的,并且可以在这些效果存在的情况下简单地类型化。在本文中,我们探讨的指称语义的FMC。我们有三个主要的贡献:首先,我们认为,它的语法-在这两个效果,并实现使用相同的句法结构-是语义自然,密切对应的结构斯科特风格的域理论语义。第二,我们表明,简单的类型赋予强规范化扩展甘迪的证明,包括一个小的简化的技术。最后,我们表明,类型FMC(不考虑具体的编码效果),模适当的方程理论,是一个完整的语言笛卡尔闭范畴。
2023-02-05 cs.LO cs.PL
A type-based termination criterion for dependently-typed higher-order rewrite systems
一些作者设计了基于类型的终止标准ML类语言允许非结构递归调用。我们将这些工作扩展到一般的重写和依赖类型,从而为构造演算中的重写和β-还原的组合提供了一个强大的终止标准。
2006-10-11 cs.LO cs.PL
An Interactive Proof of Termination for a Concurrent $λ$-calculus with References and Explicit Substitutions
在本文中,我们介绍了一个类型化的,并发的$λ$ -演算的引用具有显式替换变量和引用。除了通常的安全属性,我们恢复了强正常化。证明是基于一个reductiontechnique和一个原始的互动属性让人想起游戏语义的方法。
2021-02-09 cs.LO cs.PL
Typed Answer Set Programming and Inverse Lambda Algorithms
Arizona State University(亚利桑那州立大学)
我们更广泛的目标是将英语句子自动翻译成适当的知识表示语言中的公式,作为理解和回答英语文本问题的一步。本文的重点是回答集编程语言(ASP)。我们的方法来翻译句子ASP规则的启发蒙塔古的使用λ演算公式的单词和短语的意义。以ASP为目标语言,单词和短语的含义是ASP-lambda公式。在早期的工作中,我们通过手动开发单词字典及其ASP lambda公式来说明我们的方法。然而,这种方法是不可扩展的。在本文中,我们的重点是两个算法,允许一个以逆的方式构建ASP-lambda公式。特别地,这两个算法将两个微积分表达式G和H作为输入,并且计算微积分表达式F,使得输入为G的F(由F@G表示)等于H;并且类似地G@F = H。我们目前的正确性和复杂性的结果,这些算法。为了做到这一点,我们开发了类型化ASP-λ演算理论及其顺序的概念,并将其用于开发完备性结果。(To《逻辑程序设计的理论与实践》(Theory and Practice of Logic Programming)
2012-10-21 cs.AI cs.LO cs.PL
The Guarded Lambda-Calculus: Programming and Reasoning with Guarded Recursion for Coinductive Types
我们提出了守护的Alguda演算,简单类型的Alguda演算与守护递归和共归纳类型的扩展。保护递归类型的使用确保了良好类型程序的生产力。受模态逻辑和Atkey-McBride时钟量化启发的类型生成器可以将受保护的递归类型转换为共归纳类型,从而允许非因果函数的类型化。我们给出了演算的按名调用操作语义,并在树的拓扑中定义了适当的指称语义。充分性证明意味着程序的评估总是终止的。我们介绍了一个程序逻辑与Löb归纳推理的上下文等价的程序。我们展示了表现力的演算显示的可定义性的解决方案Rutten的行为微分方程。
2016-09-05 cs.LO cs.PL
Linear Recursion
我们定义了两个扩展的类型的线性代数演算,产生最小的图灵完备系统。扩展是基于无界递归在一种情况下,和有界递归与最小化在其他。我们表明,这两种方法是兼容的线性和可键入性的限制。类型化线性代数演算的两个扩展都是最小的,在这个意义上,去掉任何组件都会破坏系统的普适性。我们讨论的实施技术,利用线性的结石。最后,我们将结果应用于语言的不动点算子:我们给出了一个编译的程序设计语言PCF成线性代数演算与线性无界递归。
2016-11-25 cs.LO cs.PL
Transformer Models for Type Inference in the Simply Typed Lambda Calculus: A Case Study in Deep Learning for Code
IHES(高等科学研究所);University of Illinois at Urbana-Champaign(伊利诺伊大学厄巴纳-香槟分校);IBM Research(IBM研究院)
本文提出以项与类型关系为核心的基准,研究 transformer 在简单类型 lambda 演算类型推断中的预热与优化器选择,发现 Adafactor 较 Adam 和 RAdam 收敛更快。
2023-03-15 cs.AI cs.LG cs.LO
A type system for data flow and alias analysis in ReScript
本文提出一种用于ReScript语言子集(含可变性和模式匹配的lambda演算)的数据流分析类型系统,通过局部分析收集变量使用与别名信息。
2024-08-21 cs.PL
Tracking Data-Flow with Open Closure Types
类型系统隐藏由函数类型中的函数闭包捕获的数据。在大多数情况下,这是一个有益的设计,有利于简单性和组合性。但是,有些应用程序需要有关闭包中捕获的数据的显式信息。本文介绍了开放闭包类型,即用类型上下文装饰的函数类型。它们用于跟踪从环境到函数闭包的数据流。利用简单类型的λ演算研究开闭包类型的类型论的性质。这个类型论的一个显著特征是函数的开闭包类型在不同的类型上下文中可以变化。为了提出一个应用程序的类型论,它表明,一个类型推导建立一个简单的非干扰属性的意义上的信息流理论。一个公开的原型系统的实现可以用来实验类型派生的例子程序。
2013-11-29 cs.PL
Programming and Reasoning with Guarded Recursion for Coinductive Types
我们提出了守护的Alguda演算,简单类型的Alguda演算与守护递归和共归纳类型的扩展。保护递归类型的使用确保了良好类型程序的生产力。受模态逻辑和Atkey-McBride时钟量化启发的类型生成器可以将受保护的递归类型转换为共归纳类型,从而允许非因果函数的类型化。我们给出了演算的按名调用操作语义,并在树的拓扑中定义了适当的指称语义。充分性证明意味着程序的评估总是终止的。我们展示了表现力的演算显示的可定义性的解决方案Rutten的行为微分方程。我们介绍了一个程序逻辑与Löb归纳推理的上下文等价的程序。
2015-01-15 cs.LO cs.PL
Towards a Direct, By-Need Evaluator for Dependently Typed Languages
我们提出了一个C语言实现的Adida-pi演算的扩展(按需调用)栈机的Ariola,张和Felleisen持有类型,使用无类型的无标签的最终解释器策略。它的优点是将所有操作都表示为术语的折叠,包括按需评估,恢复任何术语的初始语法树编码,并消除大多数垃圾收集任务。这些都是通过一种规范的方法来处理每个术语的主干,以及一个强大的基于堆栈的API。类型推断在本工作中没有涉及,但也从当前的堆栈转换中获得了几个优点。执行基准问题的时间和最大堆栈空间使用的结果。我们讨论了如何设计选择这个解释器允许语言被用作一个高层次的脚本语言自动分布式并行执行常见的科学计算工作流程。
2015-09-23 cs.PL
The Geometry of Bayesian Programming
本文为高阶贝叶斯编程的典范演算构建了交互几何模型,基于可测空间范畴,并证明其相对于分布和采样操作语义的充分性。
2019-04-16 cs.PL
Explicit Auditing
审计单位演算(英语:Calculus of Audited Units,CAU)是一种类型化的λ演算,源自于在Curry-Howard同构下对Artemov的证明逻辑的计算解释;它通过提供审计类型来扩展简单类型化的λ演算,这些审计类型由携带其过去计算历史的表达式占据。与大多数其他审计技术不同,CAU允许在运行时检查踪迹作为一流的操作,并应用于科学计算的安全性、调试和透明度。CAU的有效实现是具有挑战性的:不仅轨迹的大小快速增长,而且在每次beta缩减后都需要对其进行归一化。在本文中,我们研究了如何减少条款更有效地在无类型的变体CAU通过显式替换和显式审计操作,最后得出一个按值调用抽象机。
2018-08-01 cs.LO cs.PL
A Polymorphic RPC Calculus
RPC演算是多层程序设计语言(如Links)的简单语义基础,在Links中可以为客户端-服务器模型编写定位函数。随后,类型化RPC演算被设计成按类型捕获函数的位置信息,并驱动位置类型导向的切片编译。然而,位置的使用目前仅限于单态的,这是要克服的差距之一,将RPC演算的客户端-服务器模型的理论付诸实践。本文提出了一种多态RPC演算,允许程序员编写简洁的多层程序使用多态位置结构。然后,多态多层程序可以自动转换成程序只包含位置常数服从现有的切片编译方法。我们制定了多态RPC演算的类型系统,并证明其类型可靠性。此外,我们还设计了一个单态化翻译,并证明了翻译的类型和语义正确性。
2020-05-25 cs.PL
Polymorphic Endpoint Types for Copyless Message Passing
我们提出的PolySing#,一个演算,模型的基础上,无拷贝的消息传递过程中的交互,在风格的奇点OS。我们配备了一个类型系统,可容纳多态端点类型,这是一个变种的多态会话类型的演算,我们表明,良好的类型的进程是免费的故障,泄漏和通信错误。类型系统本质上是线性的,尽管线性本身可能会为类型良好的进程泄漏内存的情况留下空间。我们在端点类型上确定一个条件,以防止这些泄漏发生。
2011-08-02 cs.DC cs.PL
Mailbox Types for Unordered Interactions
我们提出了一个类型的系统推理的协议一致性和死锁自由网络的进程,通过无序的邮箱进行通信。我们在邮箱演算中对这些网络进行建模,邮箱演算是具有第一类邮箱和选择性输入的异步π演算的温和扩展。演算包含演员模型,并允许我们分析网络的动态拓扑结构和不同数量的进程可能混合不同的并发抽象。良好类型的进程是无死锁的,永远不会因为意外消息而失败。对于其中的一个重要类别,垃圾自由也是有保证的。我们说明了表达的演算和类型系统的编码实例的非统一的,并发的对象,二进制会话扩展连接和分叉,和一些已知的演员基准。
2018-01-12 cs.PL
Formalizing $φ$-calculus: a purely object-oriented calculus of decorated objects
存在许多演算用于对面向对象语言的各种特性进行建模。它们中的许多都是基于$λ$ -演算的,并且专注于基于静态类型的类语言或基于动态原型的语言。我们正式的装饰对象,非正式地提出了Bugayenko,这是定义在对象和依赖于装饰作为一个主要的机制对象扩展的无类型演算。它不是基于$λ$ -演算,但只有四个基本的语法结构是一样完整的。我们证明了演算是合流的(即具有Church-Rosser性质),并介绍了一个抽象的机器调用的名称评估。最后,我们提供了一个健全的翻译$λ$ -演算记录。
2022-12-02 cs.LO cs.PL
Dynamic Type Inference for Gradual Hindley--Milner Typing
Garcia和Cimini研究了ITGL的类型推断问题,并为ITGL开发了一个可靠的完整的推断算法。可靠性和完整性意味着,如果算法成功,输入项可以通过强制转换插入转换为显式类型的责备演算的良好类型项,反之亦然。然而,一般来说,根据静态类型推断未确定的类型变量如何用具体的静态类型实例化,有许多可能的转换。更糟糕的是,翻译后的术语可能会表现得不同-有些评价价值观,但其他人则提出指责。在本文中,我们提出了一个新的责任演算$λ^{\textsf{DTI}}_{\textsf{B}}$,避免了这种分歧的ITGL的中间语言和形式化。一个主要的想法是允许一个术语包含类型变量(在静态类型推断期间没有被实例化),并将这些类型变量的实例化推迟到运行时间。我们将动态类型推断(DTI)引入到$λ^{\textsf{DTI}}_{\textsf{B}}$的语义中,使得类型变量沿着约简被实例化。基于DTI的语义不仅避免了上述分歧,而且在以下意义上相对于完全实例化的项的语义是合理和完整的:终止于值),则存在该术语的完全实例化版本,该完全实例化版本也在显式类型化的归咎演算中成功,反之亦然。最后,我们证明了ITGL的渐进保证,这是渐进类型语言的一个重要的正确性准则。
2018-11-09 cs.LO cs.PL
Recursive Session Types Revisited
会话类型为基于通信的结构化编程建模。具体来说,π演算的二进制会话类型描述了分布式场景中两个参与者之间的通信。向pi演算添加会话意味着用类型和术语构造来扩充它。在之前的一篇文章中,我们试图理解会话结构在何种程度上比标准的pi演算结构更复杂和更具表达力。为此,我们采用线性类型和变量类型以及连续传递原则,提出了一种将二进制会话pi演算编码为标准类型pi演算的方法。在本文中,我们专注于递归会话类型,我们提出了一个编码到递归线性π演算。这种编码是前者的保守扩展,因为它保留了其中获得的结果。最重要的是,它采用了对偶关系的新处理方法,在递归类型的情况下,这已经被证明是相当具有挑战性的。
2014-08-26 cs.PL
Semi-Automation of Meta-Theoretic Proofs in Beluga
本文提出一种用于Beluga核心逻辑的可靠完备聚焦演算,并实现为Harpoon中的策略,自动完成简单子情形,简化了简单类型λ演算的弱头规范化证明。
2023-11-17 cs.LO cs.PL
The Difference Lambda-Calculus: A Language for Difference Categories
笛卡尔差分范畴是笛卡尔微分范畴的一个最近的推广,它引入了满足类似于科克-劳弗尔公理的“无穷小”箭头的概念,笛卡尔微分范畴的公理仅在“无穷小扰动”下满足。在这项工作中,我们构建了一个简单类型的微积分的精神,配备了语法无穷小的微分λ演算,并显示其模型如何对应于不同的微分范畴,一个家庭的笛卡尔差分范畴配备了适当的表现良好的指数。
2020-11-30 cs.LO cs.PL
Decidability of Type-checking in the Calculus of Algebraic Constructions with Size Annotations
自从Val Tannen的先驱工作简单类型的类演算和一阶重写的组合(LICS'88),许多作者都通过将其扩展到更丰富的类型类演算和重写范式,最终在演算像代数结构的演算。这些工作提供了理论基础的类型理论的证明助手的功能和谓词定义的定向高阶方程。这种定义包含了基于归纳的定义,更容易编写,并提供了更多的自动化。另一方面,检查用户定义的重写规则是强规范化和融合的,并且在与beta约简结合时保持类型检查的可判定性,则更加困难。大多数终止标准依赖于期限结构。在以前的工作中,我们扩展到依赖类型和高阶重写,“大小类型”的概念由几位作者在ML类语言的简单框架中研究,并证明了它保持了强规范化。本文件的主要贡献是双重的。首先,证明了在带尺寸标注的代数构造演算中,只要尺寸标注所产生的约束集是可满足的,并且允许最一般的解,则类型推断和类型检验问题是可判定的.其次,我们证明了一个大小代数足够丰富的捕获通常的归纳为基础的定义和更多的后来的属性。
2006-09-11 cs.LO cs.PL
Hereditary Substitution for the λΔ-Calculus
遗传替换是类型有界迭代替换的一种形式,首先由沃特金斯等人和亚当斯明确提出,以显示各种构造性逻辑的证明项的规范化。本文是第一个应用遗传替代显示规范化的类型论对应于一个非建设性的逻辑,也就是说,三角洲演算制定的Zeroof。我们证明了简单类型的λ演算的遗传替换函数有一个非平凡的扩展到一个的λ-Delta演算。然后用遗传替换证明了归一化。
2013-09-05 cs.LO cs.PL
Linearising Explicit Substitutions using Intersection Types
LIACC;Faculdade de Ciências, Universidade do Porto(波尔图大学理学院);CRACS, INESC-TEC(CRACS,INESC-TEC)
研究为带显式替换的演算定义新项展开,以此关联带显式替换的lambda演算与Boudol的带多重性的资源感知lambda演算,函数参数可用性或受限,核心方法是新项展开,主要贡献是建立了这种关联。
2026-07-23 cs.LO cs.PL
Types and Terms Translated: Unrestricted Resources in Encoding Functions as Processes (Extended Version)
类型保持翻译是研究核心程序演算的有效工具。在本文中,我们开发了一个新的类型化翻译,连接顺序和并发演算,它是由类型系统控制资源消耗。我们的主要贡献是源语言,一个新的资源$λ$ -微积分与非确定性和失败,被称为\ulamf。在\ulamf中,资源被分为线性和不受限制的;故障是明确的,并且由这种区别引起。我们定义了一个基于交集类型的类型系统来控制资源和易失败的计算。目标语言是\spi,一种现有的会话类型的$π$演算,它是由线性逻辑和会话类型之间的Curry-Howard对应关系产生的。我们的类型化翻译包含了我们以前的工作;有趣的是,它将\lamrfailunres中的无限制资源视为\spi中的客户端-服务器会话行为。
2022-05-30 cs.LO cs.PL
Formal Small-step Verification of a Call-by-value Lambda Calculus Machine
我们正式验证一个抽象的机器调用的值的alcuda演算与de Bruijn条款,简单的替代,和小步语义。我们遵循逐步改进的方法,从一个带有替换的朴素堆栈机器开始。然后,我们细化到一个具有闭包的机器,最后是一个具有为闭包提供结构共享的堆的机器。我们证明了三个细化步骤的正确性与组成小步自下而上的模拟。有一个附带的Coq开发验证所有结果。
2019-01-02 cs.LO cs.PL