Abstract clones for abstract syntax
本文提出用带额外代数结构的 abstract clones 公理化简单类型理论的二阶变量绑定算子,构造自由代数并导出归纳原理,从而支持独立于语法的可靠性与规范化证明。
2021-05-03 cs.LO cs.PL
Syntax and Semantics of Abstract Binding Trees
本文的贡献是多排序名义抽象绑定树(abts)的语法和语义的发展,二阶泛代数的扩展,以支持符号索引家庭的运营商。名词性abts对于正确处理具有生成现象的语言的句法,包括异常和可变状态是必不可少的。此外,我们已经开发了抽象绑定树的分类语义,正式在建设性类型论使用Agda证明助手。多排序的名词性abt也形成了即将到来的JonPRL证明助手版本的句法基础,JonPRL是Nuprl传统中扩展的构造性类型论的实现。
2016-01-23 cs.LO cs.PL
Substructural Abstract Syntax with Variable Binding and Single-Variable Substitution
本文提出了带变量绑定与单变量替换的子结构抽象语法的统一范畴论,涵盖线性、仿射、相关与笛卡尔四种理论,通过自由代数、公理化与结构递归构造替换操作并证明其正确性。
2025-05-30 cs.LO math.CT
Extended Initiality for Typed Abstract Syntax
初始语义学的目标是将与签名相关联的语法解释为某类“模型”的初始对象,为抽象语法产生归纳和递归原则。Zavió证明了一个简单类型语法的初始性结果:给定一个签名S,与S相关联的抽象语法构成了单子中S的模型范畴中的初始对象。然而,她的定理提供的迭代原则只考虑了在一组固定的对象类型上的两种语言之间的翻译。我们推广Zavió的模型概念,使对象类型可以变化,产生一个更大的类别,同时保持其中语法的初始性。因此,我们得到了一个扩展的初始性定理的类型化抽象语法,在不同类型的条款之间的翻译可以指定通过相关的范畴理论的迭代算子作为一个初始态射。我们的定义确保通过初始化指定的翻译是类型安全的,即在明显的意义上与源语言和目标语言中的类型兼容。我们的主要例子是通过命题作为类型的范例:我们指定命题和推理规则的经典和直觉命题逻辑通过各自的类型签名。然后,我们使用范畴论的迭代算子指定一个双重否定翻译从前者到后者。第二个例子是PCF的签名。对于这种特殊情况,我们在证明助手Coq中将定理形式化。然后,我们指定,通过范畴理论的迭代运算符,从PCF的无类型的λ演算的翻译。
2012-04-05 cs.LO cs.PL
Abstract Predicate Entailment over Points-To Heaplets is Syntax Recognition
抽象谓词被认为是本文的抽象技术堆分离的配置,并作为真正的Prolog谓词直接翻译成相应的形式语言语法作为验证计划的中间堆状态。所提出的方法是基于规则的,因为抽象谓词是基于规则的,解析技术可以被解释为相应堆图的自动折叠/展开。
2019-06-01 cs.FL cs.LO cs.SC
A Weakly Initial Algebra for Higher-Order Abstract Syntax in Cedille
Cedille是一个相对较新的工具,基于Curry风格的纯类型论,没有原始的数据类型系统。使用新技术的基础上依赖的交叉类型,归纳数据集及其归纳原则。这种方法的一个好处是它允许探索新的或高级形式的归纳数据类型。本文报告的工作进展中的一个这样的形式,即高阶抽象语法(HOAS)。我们在纯类型论的背景下考虑HOAS的性质,与传统的λ演算的环境模型的概念进行比较。我们看到了一种替代方案,基于我们所称的Kripke函数空间,我们可以在Cedille中推导出弱初始代数。使用编码给出了几个例子。
2019-10-24 cs.LO cs.PL
A Higher-Order Abstract Syntax Approach to Verified Transformations on Functional Programs
我们描述了一种方法来验证实现的转换功能的程序,利用高阶表示的语法。在这种方法中,使用遗传Harrop公式的逻辑指定变换。一方面,这些规范直接作为实现,是Lambda Prolog语言中的程序。另一方面,它们可以用作Abella系统的输入,该系统允许我们证明关于它们的属性,从而证明关于实现的属性。我们认为,这种方法是特别有效的实现转换,分析绑定结构。我们通过在Lambda Prolog中描述对这种结构敏感的类型化闭包转换和代码提升等转换的简洁编码,并通过展示如何使用Abella证明其正确性来做到这一点。
2016-01-23 cs.LO cs.PL
Reasoning with Higher-Order Abstract Syntax in a Logical Framework
基于具有更高类型量化的直觉或线性逻辑的逻辑框架已成功地用于对程序设计语言和推理系统领域中的许多重要判断给出高级、模块化和形式化的规范。给定这样的规范,考虑证明框架中指定系统的属性是很自然的:例如,给定函数式程序设计语言的求值规范,证明该语言是确定性的或求值保留类型。开发这种推理框架的一个挑战是高阶抽象语法(HOAS),一种优雅的和声明性的对象级抽象和替换处理,很难在涉及归纳的证明中处理。在本文中,我们提出了一个元逻辑,可用于推理使用HOAS编码的判断,这个元逻辑是一个简单的直觉主义逻辑,承认高阶量化简单类型的非线性项(HOAS的关键成分),以及归纳和定义的概念的扩展。我们通过考虑直觉和线性逻辑的编码,探讨了HOAS编码的形式元理论分析的困难,并正式推导出这些逻辑的重要子集的割的容许性。然后,我们提出了一种方法,以避免高阶抽象语法的好处和分析所产生的编码的能力之间的明显的权衡。我们通过涉及简单函数式和命令式程序设计语言PCF和PCF:=的示例来说明这种方法。我们正式推导出这样的属性,作为唯一性的类型,主题减少,确定性的评价,和等价的过渡语义和自然语义表示的评价。
2001-01-15 cs.LO cs.PL
Frameworks for Reasoning about Syntax that Utilize Quotation and Evaluation
如果不是必要的话,推理解释语言中表达式的句法结构通常是有用的(即,具有语义的语言)。本文介绍了一种数学结构,称为语法框架,旨在成为一个抽象的模型,一个系统的推理解释语言的语法。像许多具体的语法推理系统一样,语法框架包含解释语言中的表达式到表示表达式的语法结构的语法值的映射;用于推理语法值的语言;引用表达式的语法值的称为引用的机制;以及引用由语法值表示的表达式的值的称为求值的机制。语法框架提供了将关于表达式的语法的推理与关于表达式的含义的推理集成的基础。语法框架的概念用于讨论如何将引用和评估构建到语言中,并定义什么是准引用。语法框架的几个例子。
2014-06-25 cs.LO
Structural abstract interpretation, A formal study using Coq
解释器是计算程序行为的近似的工具。然后,这些近似值可以用于优化或错误检测。在本文中,我们将展示如何描述一个抽象的解释器使用类型理论为基础的定理证明Coq,使用归纳类型的语法和结构递归编程的抽象解释器的内核。抽象解释器然后可以被证明是正确的关于霍尔逻辑的程序设计语言。
2008-10-20 cs.LO
Formal Metatheory of Second-Order Abstract Syntax
尽管在理论和实践方面都进行了广泛的研究,但形式化,推理和实现具有变量绑定的语言仍然是一项艰巨的工作-重复的样板文件和过于复杂的捕获避免替换元理论经常阻碍语言的实际有趣属性。现有的发展提供了一些缓解,但代价是不方便和容易出错的术语编码和缺乏正式的基础。我们提出了一个启发性的语言形式化框架中实现的Agda。该系统将具有变量绑定运算符的语法签名的描述转换为内部编码的归纳数据类型,该数据类型配备有语法操作,例如弱化和替换,以及它们的正确性属性。所生成的元理论进一步结合了元变量及其相关的元替换操作,这使得二阶方程/重写推理。该框架的基础数学基础-初始代数语义-通过构造将语言的组合解释导出到满足语义替换引理的模型中。
2022-01-10 cs.DM cs.LO cs.PL
A Higher-Order Abstract Syntax Approach to the Verified Compilation of Functional Programs
我们认为,功能性程序设计语言的编译器的实现和验证大大简化了采用高阶表示的语法称为高阶抽象语法或HOAS。HOAS的基本思想是使用一种元语言,它为绑定相关概念提供内置的逻辑处理。通过将元语言嵌入到更大的编程或推理框架中,可以将对象语言中的绑定结构的处理吸收到系统的元理论中,从而大大简化整体实现和推理过程。我们在这篇论文中提出并证明了上述论点的有效性的方法来验证执行的编译器转换的函数程序,利用HOAS。在这种方法中,函数程序的转换首先以基于规则的关系规范的形式表达。这些规范被渲染成语言lambda Prolog的程序。一方面,这些程序直接作为实现。另一方面,它们可以用作Abella系统的输入,该系统允许我们证明关于它们的属性,从而证明关于实现的属性。lambda Prolog和Abella都支持使用HOAS方法。因此,它们构成了一个框架,可用于在验证编译中测试HOAS方法的好处。我们用它们来实现和验证一个编译器的代表性的功能程序设计语言,体现了许多编译器的核心,这些语言的转换。在这两个编程和推理阶段,我们展示了如何使用的HOAS方法显着简化了绑定结构的表示,操作,分析和推理。
2017-02-11 cs.LO cs.PL
From Abstract Rewriting Systems to Abstract Proof Systems
一些个人的回忆,介绍了“抽象证明系统”作为一个框架,制定语法独立的,一般性的结果,规则的可推导性和可接受性。我特别关注Roel de Vrijer的灵感:抽象重写系统的类比。
2013-02-23 cs.LO cs.SC
Higher-order theories
我们通过模块和线性扩展我们的方法到抽象语法(与绑定结构)。首先,我们给出了一个新的arity的一般定义,从而产生了签名的伴随概念。然后,我们得到了Ghani和Uustalu(2003)所要求的模块性结果:在我们的设置中,合并两个语法扩展对应于构建一个合并和。最后,我们定义了一个自然的概念方程的签名,并证明了存在一个初始语义的所谓的可表示的签名配备了一组方程。
2008-09-09 cs.LO
Nominal Recursors as Epi-Recursors: Extended Technical Report
本研究提出抽象框架比较名义递归子与共递归子的表达能力,揭示不同语法公理化的相对优劣,并通过Isabelle/HOL验证结果。
2023-11-14 cs.LO
The Formalization of Syntax-Based Mathematical Algorithms Using Quotation and Evaluation
像那些用于区分函数表达式的算法以数学上有意义的方式操纵数学表达式的句法结构。这种算法的形式化应该包括其计算行为的规范,其数学意义的规范,以及将算法应用于实际表达式的机制。要实现这些目标,就需要能够将对表达式语法的推理与对表达式含义的推理结合起来。语法框架是一种数学结构,它是语法推理系统的抽象模型。它包含表达式到表示表达式的语法结构的语法值的映射;用于推理语法值的语言;引用表达式的语法值的引用机制;以及引用由语法值表示的表达式的值的评估机制。我们提出并比较了两种方法,基于语法框架的实例,形式化的语法为基础的数学算法在一个正式的理论T。在第一种方法中,由算法操作的表达式的语法值是T中归纳类型的成员,但引用和求值是T的元理论中定义的函数。在第二种方法中,T中的每个表达式都由一个语法值表示,引用和求值是T本身的运算符。
2013-08-05 cs.LO
Free Monads, Intrinsic Scoping, and Higher-Order Preunification
本文提出一种基于二阶抽象语法、点菜式数据类型和内在作用域的高阶预合一新方法,从双函子自由生成对象语言,并展示了其在Martin-Löf类型理论类型检查中的应用。
2024-02-24 cs.LO
A unified treatment of structural definitions on syntax for capture-avoiding substitution, context application, named substitution, partial differentiation, and so on
我们介绍了一个范畴理论抽象的语法与辅助功能,称为admissiblemonad态射。依赖于结构递归的抽象形式,我们设计了通用工具,从基本数据中构造容许单子态射。这些工具自动化了普遍存在的标准模式,如(1)在连续的、潜在依赖的层中定义辅助函数,以及(2)通过语法归纳来证明辅助函数的属性。我们涵盖了文献中的重要例子,包括标准的捕获避免替换的Aluda-calculus,具有bindingevaluation上下文的Aluda-calculus,具有命名替换的Aluda-mu-calculus,以及微分Aluda-calculus。
2022-04-08 cs.LO cs.PL math.CT
Variable binding, symmetric monoidal closed theories, and bigraphs
本文研究了使用对称monoidal封闭(SMC)结构表示语法变量绑定,特别是线性方面的语言。在我们的设置中,首先指定一个SMC理论T,它可以表达绑定操作,在某种程度上让人想起高阶抽象语法。这个理论产生了一个SMC范畴S(T),它的态射在某种意义上是所需语法中的项。我们将我们的方法应用到詹森和米尔纳的(抽象绑定)二图,这是线性w.r.t.流程.这导致了另一类的双图,我们比较原始。
2009-05-26 cs.LO cs.PL math.CT
Initiality for Typed Syntax and Semantics
在这篇论文中,我们给出了简单类型语言的语法和语义的代数刻画。更确切地说,我们通过一个普遍的属性,即作为初始对象的一些类别的简单类型的绑定语法配备了约简规则的特点。我们通过2-signature(A,A)来指定一种语言,也就是说,在两个级别上的签名:语法级别A指定语言的排序和术语,并将排序与每个术语相关联。语义层A通过不等式指定语言术语的归约规则。对于任何给定的2-签名(A,A),我们关联一类(A,A)的“模型”。我们证明了这个范畴有一个初始对象,它整合了由A自由生成的项和由A在这些项上生成的归约关系。我们把这个对象称为由(A,A)生成的程序设计语言。初始化提供了一个迭代原则,允许指定语法上的翻译,可能是不同种类的语言。此外,通过迭代原则指定的翻译是通过构造类型安全的,并且在约简方面是忠实的。为了说明我们的结果,我们考虑了两个例子:首先,我们指定了一个双重否定翻译从经典的直觉命题逻辑通过范畴论迭代原则。其次,我们指定一个翻译从PCF的无类型的λ演算,这是忠实的减少在源和目标语言。在第二部分中,我们正式我们的一些初始性定理的证明助手Coq。该实现产生一个机器,当给定2-签名时,返回其相关抽象语法的实现以及经认证的替换操作,迭代运算符和由指定的归约规则生成的归约关系。
2012-06-20 cs.LO
An Improved Implementation and Abstract Interface for Hybrid
Hybrid是一种在Isabelle/HOL中实现的形式化理论,它提供了一个使用高阶抽象语法(HOAS)表示和推理对象语言的接口。这个接口是围绕一个HOAS变量绑定运算符构建的,该运算符是从de Bruijn索引表示定义地构造的。在本文中,我们做了各种改进的混合动力,最终在一个抽象的接口,一方面使混合动力一个更数学上令人满意的理论,另一方面具有重要的实际好处。我们首先修改混合的类型的条款,更好地隐藏其实现方面的de Bruijn指数,排除在类型级别的术语与悬空指数。我们提出了一套改进的定义,和一系列新的引理,提供了一个完整的表征混合的原语在HOAS级别的属性。这个新包的好处包括一个新的充分性证明和改进对象逻辑的推理。这样的证明是在更高的层次上进行的,而不涉及更低层次的de Bruijn语法。
2011-11-01 cs.LO cs.PL
Syntax Monads for the Working Formal Metatheorist
针对原始一阶语法表示缺乏范畴论支撑导致基础引理难复用的问题,本文提出Coq框架Tealeaves的核心抽象装饰可遍历单子的弦图解释,证明其表示定理并得到有穷树状数据类型递归组合子。
2023-12-14 cs.LO cs.PL
Initial Algebra Semantics for Cyclic Sharing Tree Structures
术语是树结构的简明表示。由于它们可以通过归纳类型自然地定义,因此它们在函数式编程和机械化推理中提供了数据结构,并具有有用的原则,如结构归纳和结构递归。然而,对于图或“树状”结构--包含循环和共享的树--仍然不清楚存在什么样的归纳结构,以及我们如何忠实地分配它们的术语表示。在本文中,我们提出了一个简单的术语语法循环共享结构,承认结构归纳和递归原则。我们表明,得到的语法是直接可用的函数式语言Haskell和证明助手Agda,以及普通的数据结构,如列表和树。为了实现这一目标,我们使用范畴的方法来初始代数语义的预层类别。这种方法遵循Fiore,Plotkin和Turi的变量绑定抽象语法模型。
2010-09-03 cs.LO
Rensets and Renaming-Based Recursion for Syntax with Bindings
我介绍了重命名富集集(简称rensets),这是一种代数结构,它公理化了重命名(也称为变量对变量的替换)的基本属性。Rensets在某些方面与基于名义集合的著名基础相比毫不逊色。特别地,重命名是比名义交换操作符更基本的操作符,并且与变量新鲜度谓词具有更简单的等式表达关系。再加上一些自然公理匹配的属性的语法构造器,rensets产生一个真正的最低限度的表征的abstract演算条款作为一个抽象的数据类型-一个涉及一个递归的无条件方程组,只涉及最基本的长期运营商:构造器和重命名。这个特征产生了一个递归原理,它(类似于名义集的情况)可以通过结合巴伦德雷格特的变量约定来改进。当解释语义域中的语法时,我的基于重命名的递归比名义递归更容易部署。我的结果已经过证明助手Isabelle/HOL的验证。
2022-05-20 cs.LO math.LO
Case Studies in Formal Reasoning About Lambda-Calculus: Semantics, Church-Rosser, Standardization and HOAS
我们以前已经出版了Isabelle/HOL形式化的一般理论的语法绑定。在这篇配套文件中,我们实例化的一般理论,以语法的λ演算和形式化的发展,导致几个基本的结构和结果:健全的语义解释,教会罗瑟和标准化定理,高阶抽象语法(HOAS)编码。对于Church-Rosser和标准化,我们的工作涵盖了微积分的按名称调用和按值调用版本,遵循Takahashi和Plotkin的经典论文。在形式化过程中,我们能够专注于开发的高级思想-感谢我们的一般理论提供的武器库:关于替换,交换和新鲜度操作符的丰富基本事实,以及递归定义和推理原则,包括语法语义解释的专业化。
2021-07-24 cs.LO cs.PL
Abstract Compilation as Abstraction of Operator Semantics, applied to Cost Analysis
Universidad Politécnica de Madrid(马德里理工大学);IMDEA Software Institute(IMDEA软件研究所);Spanish Council for Scientific Research (CSIC)(西班牙国家研究委员会);Computer Science Laboratory of Sorbonne University (LIP6)(索邦大学计算机科学实验室);STMicroelectronics(意法半导体)
该研究提出算子语义与抽象编译框架,将其应用于静态代价分析,开发出支持通用函数未知量等的最优递归提取技术,提升了代价分析的可靠性与精确性。
2026-08-11 cs.LO cs.PL
Initial Semantics for higher-order typed syntax in Coq
初始语义学旨在将与签名相关联的语法表征为某个类别的初始对象。我们提出了一个初步的语义结果类型的高阶语法连同其形式化的Coq证明助手。主要定理在2010年第二作者的博士论文中首次在纸上证明,并在不久后正式验证。对于固定的对象类型集合T上的简单类型绑定签名S,我们将一个称为S的表示范畴的范畴联系起来。我们证明了这个范畴有一个初始对象Sigma(S)。从它的构造中可以清楚地看出,对象Sigma(S)值得与S相关联的名称抽象语法。通过大量使用依赖类型,我们的定理在证明助手Coq中实现并证明了正确性。通过单子的方法产生了一种语法实现,其中术语和变量都是固有类型的,即对象类型反映在元级别类型中。这篇文章被看作是一篇研究文章,而不是关于一个经典数学结果的形式化。我们的定理的性质-涉及冗长,技术证明和复杂的代数结构-使它特别有趣的形式化验证。我们的目标是促进使用计算机定理证明器作为研究工具,并因此,一种新的方式出版的数学成果:一个平行的描述定理及其形式化应允许验证正确转录的定义和声明到证明助手,和简单,但技术证明应该很好地隐藏在一个数字图书馆。我们认为,科克的丰富的类型论,结合其各种功能,如隐式参数,允许一个特别可读的形式化,因此非常适合数学交流。
2011-09-17 cs.LO math.LO
HMC: Verifying Functional Programs Using Abstract Interpreters
我们提出了Hindley-Milner-Cousots(HMC),一个算法,允许任何一阶命令式程序的过程间分析被用来验证类型化高阶函数程序的安全属性。HMC工作如下。首先,它利用函数程序的类型结构来生成一组逻辑精化约束,这些约束的满足意味着源程序的安全性。其次,它将逻辑精化约束转换成一个简单的一阶命令式程序,该程序是安全的,当且仅当约束是可满足的。因此,HMC一举使工具的不变生成,例如,基于抽象域、谓词抽象、反例引导的精化和Craig插值可以直接应用于以全自动的方式验证现代函数式语言的安全属性。我们已经实现了HMC,并描述了初步的实验结果,使用两个命令式检查器- ARMC和InterProc -来验证OCaml程序。因此,通过组成基于类型的推理在程序语法和基于状态的推理在抽象解释的基础上,HMC打开了大门,以现代程序设计语言编写的程序的自动验证。
2010-12-30 cs.LO cs.PL