Categorical Semantics for Functional Reactive Programming with Temporal Recursion and Corecursion
函数式反应式编程(FRP)使得以声明的方式表达计算的时间方面成为可能。最近,我们发展了两种类型的FRP范畴模型:抽象过程范畴(APC)和具体过程范畴(CPC)。此外,我们发现,APC泛化CPC。在本文中,我们扩展APC与额外的结构。这个结构对与时间相关的递归和共递归运算符进行建模。我们表明,由此产生的分类模型概括了那些CPC施加额外的约束时间尺度。这个限制归结为排除了$ω$ -超级任务,它与芝诺的阿基里斯和乌龟悖论密切相关。
2014-06-09 cs.LO cs.PL
A proof theoretic study of abstract termination principles
我们进行了一个证明理论的分析,在一个抽象的设置递归路径顺序的良好基础。我们概述了一个非常普遍的终止原则,并提取其良好的基础证明subrecursive范围的大小推导树,可以定义在哥德尔的系统T加酒吧递归。然后,我们进行了这些条款的复杂性分析,并演示了如何将其应用于约束的衍生复杂性的长期重写系统。
2019-02-22 cs.LO math.LO
Greatest HITs: Higher inductive types in coinductive definitions via induction under clocks
守护递归是一种强大的模式递归方法,可以看作是步进索引的抽象形式。它目前被广泛用于分离逻辑,通过求解具有负出现的域方程来模拟具有高级功能的程序设计语言。在其多时钟版本中,保护递归也可以用于对共归纳类型进行编程和推理,编码类型中递归定义所需的生产力条件。本文提出了第一种类型论,它结合了多时钟保护递归和立方类型论的特点,并给出了一个指称语义。结合使用高阶归纳类型(Higher Inductive Types,HIT)和保护递归,可以对传统上难以在类型论中表示的共归纳类型进行简单的编程和推理,例如标记转移系统的分支分支类型。例如,我们的研究结果意味着这些双相似性意味着路径平等,因此证明可以沿着双相似性证明。我们的技术贡献之一是一个新的原则下的时钟感应。这允许在时钟上的通用量化与HIT交换直到等价的类型,并且对于共归纳类型的编码至关重要。这种交换性的要求已经制定了归纳类型的公理在以前的类型论与多时钟保护递归,但我们目前的配方作为一个归纳原则允许制定一般的计算规则。
2022-06-03 cs.LO
Two algorithms in search of a type system
作者的ATR编程形式主义是复杂性理论驱动的类型系统下的按值调用PCF的一个版本。ATR程序运行在2型多项式时间内,所有标准的2型基本可行泛函都是ATR可定义的(ATR类型被限制在0、1和2级)。原始版本的ATR的一个局限性是,唯一可直接表达的递归是尾递归。在这里,我们扩展ATR,使广泛的仿射递归直接表达。特别是,修改后的ATR可以相当自然地表达经典的插入和选择排序算法,从而克服了大多数以前的隐复杂性为基础的形式主义的症结。本文的主要工作是在提炼原来的时间复杂度语义ATR表明,这些新的递归计划不会导致的可行性领域。
2008-04-18 cs.LO cs.PL
Parallel Pushdown Automata and Commutative Context-Free Grammars in Bisimulation Semantics (Extended Abstract)
本文研究了在互模拟语义下,将经典下推自动机与上下文无关文法等价定理扩展至并行下推自动机与带并行性进程代数的情况。
2023-09-13 cs.LO
On the Semantics of Intensionality and Intensional Recursion
意向性是一种发生在逻辑和计算中的现象。在最一般的意义上,一个函数是内涵的,如果它在一个比(外延)相等更精细的水平上操作。对于计算机科学家来说,这是一个熟悉的设置,他们经常研究不同的程序或过程,这些程序或过程是可互换的,即在外延上是相等的,即使它们不是以相同的方式实现的,因此在内涵上是不同的。与内涵性相伴的是内涵递归现象,它指的是程序访问自己代码的能力。在可计算性理论中,内涵递归由Kleene第二递归定理实现。本论文关注的是制作一个逻辑工具箱,通过它可以研究这些现象。我们的主要贡献是一个框架,在这个框架中,数学和计算结构可以被认为是外延的,即作为抽象值,或内涵的,即作为其结构的细粒度描述。一旦实现了这一点,它就可以用来分析内涵递归。
2017-12-26 cs.LO cs.PL math.CT
Bisimulation as path type for guarded recursive types
在类型论中,共归纳类型用于表示进程,因此对于基于类型论的证明助手(如Coq和Agda)中的非终止反应式程序的形式化验证至关重要。目前,关于共归纳类型的编程和推理很困难,原因有两个:需要递归定义才能高效,以及内置标识类型和重要的双相似性概念缺乏重合。中野意义上的保护递归最近被认为是处理生产力问题的一种可能方法,允许将其编码在类型中。事实上,共归纳类型可以使用保护递归和时钟上的通用量化的组合来编码。本文研究了Ticked Cubical类型论中保护递归类型的双相似性概念,Ticked Cubical类型论是Cubical类型论的一个推广。我们证明了,对于任何函子,一个抽象的,范畴论的概念,双相似的最终守护余代数是等价的(在同伦类型论的意义上),以道路平等(原始概念的平等在立方类型论)。作为一个工作的例子,我们研究了一个守卫的概念标记的过渡系统,并表明,作为一个特殊的情况下的一般定理,路径平等符合适应通常的概念互模拟过程。特别是,这意味着保护递归可以用来给简单的等式推理证明的双相似性。这项工作应该被看作是使用上述编码获得双相似性作为共归纳类型的路径相等的一步。
2018-10-31 cs.LO
Intensional Kleene and Rice Theorems for Abstract Program Semantics
可计算性理论中的经典结果,特别是赖斯定理,集中于程序的扩展内容,即程序计算的部分递归函数。后来和最近的工作调查了这些结果的内涵概括,这些结果考虑到函数计算的方式,从而受到计算它们的特定程序的影响。在本文中,我们挑出一类新的程序语义的基础上抽象域的程序属性,能够捕捉非扩展方面的程序计算,如其渐近复杂性或逻辑不变,并允许我们概括一些基本的可计算性结果,如赖斯定理和Kleene的第二递归定理,这些语义。特别是,事实证明,对于这一类的抽象程序语义,任何非平凡的抽象属性是不可判定的,每一个可判定的过度近似必然包括一个无限的假阳性集,涵盖了语义抽象域的所有值。
2021-09-14 cs.FL cs.LO
The clocks they are adjunctions:Denotational semantics for Clocked Type Theory
Clocked类型论(Clotted Type Theory,CloTT)是一种用于保护递归的类型论,可用于使用共归纳类型进行编程,允许将生产力编码在类型中,并用于使用步骤索引的抽象形式来推理高级程序设计语言功能。CloTT之前已经被证明具有许多语法属性,包括强规范化,规范性和类型检查的可判定性。在本文中,我们为CloTT提供了一个有用的指称语义,例如,用于研究未来的CloTT扩展,如路径类型。构建这个模型的主要挑战是对CloTT中用于共归纳类型的共归纳推理的滴答概念进行建模。我们建立在一个以前用于对保护递归进行建模的类别上,但是在这个类别中没有ticks对象,因此不能使用标准工具对上下文中的tick假设进行建模。相反,我们展示了如何使用伴随函子来建模滴答,以及如何使用语义替换来建模滴答常数。
2018-04-18 cs.LO
Guarded Cubical Type Theory: Path Equality for Guarded Recursion
本文将保护依赖类型论(GDTT)与立方类型论(CTT)相结合,改进了GDTT中等式的处理. GDTT是一种具有保护递归类型的可拓类型论,它对于建立程序逻辑模型以及使用共归纳类型进行程序设计和推理是有用的。我们希望用可判定的类型检查实现GDTT,同时仍然支持非平凡的等式证明,这是关于保护递归构造的扩展的原因。CTT是Martin-Löf类型论的变体,其中单位类型被项之间的抽象路径所取代。CTT提供了一个计算解释的功能扩展性,被证明有可判定的类型检查,并已实现的类型检查器。我们的新的类型论,称为守护立方类型论,提供了一个计算解释的可拓性守护递归类型。这进一步扩展了CTT作为数学和计算机科学形式化基础的基础。我们提出的例子来证明我们的类型论,所有这些都已经检查使用原型类型检查器实现的表达能力,并在一个preheaf类别的语义。
2016-06-28 cs.LO cs.PL
Computational Adequacy for Substructural Lambda Calculi
子结构类型系统,例如仿射(和线性)类型系统,是对变量的复制(和丢弃)施加限制的类型系统,并且它们在计算机科学中有许多应用,包括量子编程。我们描述了一个线性和仿射型系统,我们制定了抽象的分类模型,它们都是健全的和计算足够的。我们还表明,在基本假设下,解释lambda抽象通过一个monoidal封闭结构(一种流行的方法,线性类型系统)必然导致退化和不足的模型调用值仿射型系统递归。在我们的分类处理中,清楚地提出了这个问题的解决方案。我们的分类模型比用于研究线性逻辑的线性/非线性模型更一般,并且我们在按值调用设置中提出了线性和仿射类型系统的齐次分类帐户。我们还给出了许多具体模型的例子,包括经典和量子模型。
2021-01-26 cs.LO
Type-Based Termination, Inflationary Fixed-Points, and Mixed Inductive-Coinductive Types
类型系统以组合的方式证明程序属性。从一个更大的程序中,可以抽象出一个部分,并通过使用被抽象出的部分的类型来证明所得到的抽象程序的属性。终止性和生产力是非平凡的,但所需的程序属性,并已提出了几个类型系统,保证终止,组成。这些类型系统与通过顺序迭代定义的最小和最大不动点密切相关。虽然大多数类型系统使用常规迭代,但我们在本文中考虑膨胀迭代。我们演示了这是如何导致一个更有原则的类型系统,递归基于有理有据的归纳。该类型系统有一个原型实现,MiniAgda,我们特别展示了它如何证明生产力的correcursive和混合递归correcursive功能。
2012-02-16 cs.LO cs.PL
Adventures in time and space
本文探讨了什么是本质上是一个呼叫的PCF的价值观版本下的复杂性理论的动机类型系统。ATR的一阶规划刻画了多项式时间可计算函数,二阶规划刻画了Mehlhorn和Cook和Urquhart的2型基本可行泛函。(The ATR类型仅限于级别0、1和2。类型系统分为两部分,一部分主要限制表达式值的大小,另一部分主要限制计算表达式所需的时间。尺寸限制部分的动机是Bellantoni和Cook和Leivant的多项式时间的隐式特征。时间限制部分是Barber和Plotkin的DILL的仿射版本。为ATR构造了两种语义。第一个是对ATR的朴素指称语义的修剪。这种修剪删除了某些函数,这些函数会导致其他可行形式的递归出错。第二种语义是ATR相对于某个抽象机器的时间复杂度的模型。这个模型提供了一个设置复杂的递归所产生的ATR递归,其解决方案产生二阶多项式时间的界限。时间复杂度的语义也被证明是健全的相对于抽象机器上的解释成本。
2007-03-12 cs.LO cs.PL
Structured general corecursion and coinductive graphs [extended abstract]
Bove和Capretta用一般递归方程来证明函数定义的流行方法是基于这样的观察:任何结构化的一般递归方程定义了一个预期域(“定义域”)的归纳子集,该方程具有唯一的解。要接受这个定义,只要证明这个子集包含整个预定域就足够了。这种方法对于“终止”定义非常有效。但是它没有考虑到“生产性”的定义,例如流值函数的典型定义。我们认为,这样的定义可以被视为在一个类似的精神,从一个不同的独特的可解性标准。任何结构化的递归方程都定义了预定域和预定余域之间的共归纳关系(“共归纳图”)。这个关系又确定了一个子集的预期域和商的预期的余域的属性,该方程是唯一解决的子集和商。因此,只要子集是全集且商是相等的,就保证方程对于预定域和预定余域有唯一解。
2012-02-16 cs.LO cs.PL
Extended Initiality for Typed Abstract Syntax
初始语义学的目标是将与签名相关联的语法解释为某类“模型”的初始对象,为抽象语法产生归纳和递归原则。Zavió证明了一个简单类型语法的初始性结果:给定一个签名S,与S相关联的抽象语法构成了单子中S的模型范畴中的初始对象。然而,她的定理提供的迭代原则只考虑了在一组固定的对象类型上的两种语言之间的翻译。我们推广Zavió的模型概念,使对象类型可以变化,产生一个更大的类别,同时保持其中语法的初始性。因此,我们得到了一个扩展的初始性定理的类型化抽象语法,在不同类型的条款之间的翻译可以指定通过相关的范畴理论的迭代算子作为一个初始态射。我们的定义确保通过初始化指定的翻译是类型安全的,即在明显的意义上与源语言和目标语言中的类型兼容。我们的主要例子是通过命题作为类型的范例:我们指定命题和推理规则的经典和直觉命题逻辑通过各自的类型签名。然后,我们使用范畴论的迭代算子指定一个双重否定翻译从前者到后者。第二个例子是PCF的签名。对于这种特殊情况,我们在证明助手Coq中将定理形式化。然后,我们指定,通过范畴理论的迭代运算符,从PCF的无类型的λ演算的翻译。
2012-04-05 cs.LO cs.PL
Static Analysis of Run-Time Errors in Embedded Real-Time Parallel C Programs
我们提出了一个静态分析的抽象解释检查运行时间错误的并行和多线程的C程序。在我们的工作Astrée,我们专注于嵌入式关键程序没有递归,也没有动态内存分配,但扩展到一个静态的线程集的分析,通过共享内存和显式地使用一组有限的互斥锁隐式通信,并根据实时的【形】调度策略和固定的优先级调度。我们的方法是线程模块化的。它是基于一个稍微修改的非平行分析,当分析一个线程,应用和丰富的一组抽象的线程冲突。然后迭代器依次重新分析每个线程,直到冲突稳定下来。我们证明了我们的方法的可靠性顺序一致性语义,但也相对于一个合理的弱一致的内存语义。我们还展示了如何考虑互斥和线程优先级,通过分区的抽象调度状态。我们展示了使用原型Thésée分析工业程序的初步实验结果,并展示了我们方法的可扩展性。
2012-03-22 cs.LO cs.PL
Denotational semantics of general store and polymorphism
本文首次提出结合卫递归与非直谓多态性的多态依赖类型理论指称语义,支持一般高阶引用和递归类型,并通过“逻辑关系即类型”的模态构造实现对有状态抽象数据类型的关系推理。
2023-04-12 cs.LO cs.PL
Type-two polynomial-time and restricted lookahead
本文提供了第二类多项式时间可计算性的另一种表征,目的是使二阶复杂性理论更接近。我们依赖于通常的oracle机器来模拟具有子例程调用的程序。与以前的结果相比,避免了使用高阶对象作为运行时间,无论是显式还是隐式。相反,使用常规多项式。这是通过改进库克引入的预言多项式时间的概念来实现的。我们对oracle交互施加了进一步的限制,以强制可行性。限制及其目的都非常简单:众所周知,库克模型允许函数输入的多项式深度迭代,而对大小没有限制,因此不能保证保持多项式时间的可计算性。为了弥补这一点,我们限制了lookahead修订的数量,也就是说,一个查询可以被询问的次数比之前的任何查询都要多。我们证明,这导致一类可行的泛函,所有可行的问题都可以在这个类内解决,如果一个被允许分离成有效的可解决的子任务的任务。形式上说:我们的类在抽象和应用下的闭包包括所有可行的操作。我们还重新审视了非常相似的类强多项式时间可计算的运营商以前介绍的Kawamura和斯坦伯格。我们证明它是严格包括在我们的类,有点令人惊讶的是,有相同的封闭性。这可以归因于有限递归算子的性质:它不是强多项式时间可计算的,而是分解为两个这样的运算,并且属于我们的类。
2020-10-28 cs.CC cs.LO