A Polyvariant Binding-Time Analysis for Off-line Partial Deduction
我们研究了逻辑程序的绑定时间分析的概念。我们正式展开方面的在线部分演绎系统作为一个Prolog程序。使用抽象解释,我们收集有关程序运行时行为的信息。我们使用这些信息,使控制决策的展开在分析时间,并把在线系统变成一个离线系统。我们报告一些初步的实验。
2000-03-17 cs.LO cs.PL
On Specialization of a Program Model of Naive Pattern Matching in Strings (Extended Abstract)
我们证明了对于任何模式p,朴素模式匹配的尾递归程序模型可以自动地特化为w.r.t.模式p到所谓的KMP算法的专门版本,使用控制展开/折叠的Higman-Kruskal关系。给定一个输入字符串,相应的残差程序在线性时间内找到字符串中第一次出现的p。基于展开/折叠的自动化程序专业化技术的当前状态太弱,以便能够再现手工完成的上述统一属性的证明,而在此之前已知程序专业化有时能够为一些具体的静态模式产生KMP算法。
2021-08-23 cs.DS cs.LO cs.PL
Semantical Equivalence of the Control Flow Graph and the Program Dependence Graph
程序依赖图(PDG)表示程序中语句之间的数据和控制依赖。本文提出了程序依赖图的操作语义。由于PDG排除了驻留在顺序程序中的语句的人为顺序,因此PDG的执行不是唯一的。然而,我们确定了一类具有唯一最终执行状态的PDG,称为确定性PDG。我们证明了控制流图的操作语义等价于确定性PDG的操作语义。确定性PDG的类适当地包括从结构良好的程序获得的PDG。因此,我们的操作语义的PDG是更一般的PDG结构良好的程序,这是已经建立在文献中。
2018-03-08 cs.PL
Parametric Denotational Semantics for Extensible Language Definition and Program Analysis
我们提出了一种新的方法来构建一个正式的语义的程序设计语言。我们的方法,使用一个参数指称语义,允许的语义可以很容易地扩展到支持新的语言功能,并抽象定义程序分析。我们将其应用于分析鸭子类型的,反射的,咖喱化的动态语言。这种方法的好处包括它的简洁性和模块性,以及可以在语义的先前化身之上逐渐构建语言特征和分析的容易性。
2018-11-30 cs.PL
Semantic Solutions to Program Analysis Problems
程序分析中的问题可以通过开发新的程序语义和传统的抽象来解决。三十多年来,高阶程序分析一直被当作一个难题。它的解决方案需要独创性和复杂的近似模型。我们声称,这种困难是由于过早集中在抽象,并提出了一种新的方法,强调语义。它的简单性使新的分析,是超越了目前的最先进的。
2011-04-30 cs.PL
A Well-Founded Semantics for FOL-Programs
一个FOL-program由一个一阶逻辑的可判定片段中的背景理论和一组可能包含一阶公式的规则组成。形式主义源于最近的ASP与描述逻辑紧密集成的方法。在本文中,我们定义了一个有理有据的语义FOL-programs的基础上一致的,以及不一致的文字集的无基集的新概念,并研究其性质。语义定义为所有的FOL-programs,包括那些有必要明确表示不一致。该语义支持在封闭世界和开放世界假设下的规则组合推理,是标准良基语义在一般逻辑程序中的推广。我们还表明,在这里定义的有理有据的语义近似支持正常DL程序的答案集语义。
2014-05-14 cs.PL
Expected-Cost Analysis for Probabilistic Programs and Semantics-Level Adaption of Optional Stopping Theorems
在这篇文章中,我们提出了一个语义级的可选停止定理的适应,素描的预期成本分析作为其应用,并调查不同的变种的可选停止定理,已被用于概率程序的静态分析。
2021-03-30 cs.PL
Symbolic Semantics for Probabilistic Programs (extended version)
本研究基于Kozen的工作提出含observe语句与连续分布采样的概率程序的新型符号执行语义,完成正确性证明,在symProb工具中实现并通过示例验证。
2023-07-19 cs.PL
Abductive functional programming, a semantic approach
我们提出了一个调用的值λ演算扩展了一个新的构造的灵感来自溯因推理和机器学习的编程习惯。虽然在句法上简单,但溯因结构具有复杂而微妙的操作语义,我们使用基于交互几何的风格来表达。我们表明,微积分是健全的,在这个意义上,良好的类型的程序正常终止。我们还提供了一个视觉实现的语义依赖于额外的垃圾回收规则,我们也证明声音。
2017-10-11 cs.PL
Toward Semantic Foundations for Program Editors
程序设计语言定义为完整的程序赋予形式意义。然而,程序员花了大量的时间与不完整的程序进行交互-有漏洞,类型不一致和绑定不一致的程序-使用程序编辑器和实时编程环境(交织编辑和评估)等工具。语义学家在形式化描述(1)不完整程序的静态和动态语义,(2)程序员在编辑和检查不完整程序时可以采取的行动,以及(3)基于从正在编辑的不完整程序中提取的语义信息向程序员建议可能的编辑动作的编辑器服务的行为,以及系统过去遇到的程序。因此,每个工具设计者在很大程度上都被留下来开发自己的特殊工具。本文作为一个研究计划,旨在发展这些“失踪”的语义基础的愿景声明。我们的希望是,这些贡献,这将采取一系列简单的形式演算配备了一个易于处理的元理论,将指导各种当前和未来的交互式编程工具的设计,就像各种lambda演算引导现代语言的设计。我们自己的研究将在Hazel的设计中应用这些原则,Hazel是一个实验性的实时实验室笔记本编程环境,专为数据科学任务而设计。我们计划共同设计Hazel语言和编辑器,这样我们就可以探索诸如编辑时语义冲突解决机制和允许库提供商安装特定于库的编辑器服务的机制等概念。
2017-03-25 cs.PL
Conditioning in Probabilistic Programming
我们调查的语义复杂性的条件,概率规划的一个主要特点。我们提供了一个最弱的(自由)前置条件(w(l)p)的基本概率程序设计语言pGCL扩展条件的语义。我们证明了定量最弱(自由)的先决条件与条件(自由)期望回报的马尔可夫链,并表明语义条件是一个真正的保守扩展。我们提出了两个程序转换,完全消除任何程序的条件,并证明其正确性使用的w(l)p-语义。最后,我们展示了如何的w(l)p-语义可以用来确定条件概率的参数匿名协议,并表明,一个归纳的w(l)p-语义的条件在非确定性的概率程序不存在。
2015-04-01 cs.PL
Typed SLD-Resolution: Dynamic Typing for Logic Programming
逻辑编程的语义基础通常分为两种不同的方法。操作语义,它使用SLD解析,证明方法,计算逻辑编程中的答案,和声明语义,它把逻辑程序看作公式,把它的语义看作模型。在这里,我们定义了一个新的操作语义,称为TLDD-解析,它代表类型化的SLD-解析,其中我们包括一个值“错误”,对应于在运行时检测到类型错误。为此,我们定义了一个新的类型统一算法。最后,我们证明了TSLD-决议的正确性方面的一个类型的声明语义。
2022-07-30 cs.PL
Distribution Theoretic Semantics for Non-Smooth Differentiable Programming
随着深度学习和受梯度下降启发的优化算法的广泛传播,可微编程获得了关注。如今,它已经在许多不同的领域,如科学计算,机器人,计算机图形学和其他应用。它的一个众所周知的困难问题在于解释不是处处可微的程序。在这项工作中,我们定义了$λ_δ$,一个核心演算的非光滑可微程序,并定义其语义使用的概念分布理论,一个完善的功能分析领域。我们还展示了如何$λ_δ$提出了更好的方程比其他现有的语义属性,并使用我们的语义的原因简化的光线追踪算法。此外,我们与我们的语义现有的微分语言提供翻译和其他现有的微分语义模型。最后,我们在PyTorch中提供了本文中新颖结构的概念验证实现。
2022-07-13 cs.PL
LAGC Semantics of Concurrent Programming Languages
形式化的、数学上严格的程序设计语言语义是设计允许对并发程序进行自动推理的逻辑和演算的基本先决条件。我们提出了一种新的模块化语义,旨在顺利对齐与演绎验证和并发程序的形式规范中使用的程序逻辑。我们的语义分离的表达式和语句的本地评估在一个抽象的,符号化的环境,从他们的组合成全球性的计算,在这一点上,他们是具体化。这使得可以逐步增加新的语言概念,而不需要修改框架。的基础是一个概括的概念,一个程序跟踪作为一个序列的不断发展的状态,我们丰富的事件描述符和尾随延续标记。这允许将调度约束从局部评估的级别推迟到全局组合阶段,其中在事件结构上的格式良好性谓词声明性地描述了广泛的并发模型。我们还说明了如何一个健全的程序逻辑和演算可以定义这种语义。
2022-02-24 cs.PL
Transformation Rules for Locally Stratified Constraint Logic Programs
本文提出了一组带否定的约束逻辑程序的转换规则。我们假设每一个程序都是局部分层的,因此,它有一个唯一的完美模型。我们给出了充分的条件,确保建议的一套转换规则保持完美的模型的程序。我们的规则扩展在某些方面的规则逻辑程序和约束逻辑程序已经考虑在文献中,特别是,他们包括一个规则展开一个条款相对于一个负文字。
2004-02-20 cs.LO cs.PL
Coalgebraic Logic Programming: from Semantics to Implementation
共归纳定义,例如无限流的定义,通常可以用优雅的逻辑程序来描述,但是对于那些SLD-反驳没有价值的定义,因为SLD-推导会陷入无限循环。这样的定义引起了惰性共递归推导和并行性的问题,因为这样的逻辑程序的执行可以同时具有递归和共递归特性。观察语义学和共代数语义学已经被用来抽象地研究它们。方案拟订工作往往是单独进行的,而且通常是以执行为主导的。在这里,我们给出了一个连贯的语义为主导的帐户的问题,从抽象的范畴理论语义,发展coalgebra,自然产生的树,并着手实现一个新的方言,CoALP,逻辑编程,其特点是由看守懒惰corecursion和并行。
2013-12-23 cs.PL
A Semantics for Approximate Program Transformations
近似程序转换是一种可以在指定的经验误差范围内改变程序语义的转换。这种转换有广泛的应用:它们可以减少计算时间,功耗和内存使用,并且在某些情况下,可以允许实现不可计算的操作。近似程序变换的正确性证明是定量的。不幸的是,与标准程序转换不同,目前还没有模块化的方法来证明近似转换本身的正确性。误差界必须证明每个转换程序单独,并必须重新证明每次修改程序或一组不同的近似应用。在本文中,我们给出了一个语义,使定量推理的一个大类的近似程序变换的本地,组合的方式。我们的语义是基于程序之间的距离的概念,它定义了一个近似变换是正确的错误界意味着什么。关键的见解是,程序之间的距离一般不能用度量空间和实数来表示。相反,我们的语义承认每个类型构造的距离的自然概念;例如,数字被用作数值数据的距离,函数被用作函数数据的距离,多态数据项被用作多态数据的距离。然后,我们将展示我们的语义如何应用于两个示例近似:用浮点数替换实数和循环穿孔。
2013-04-19 cs.PL
A Pure Demand Operational Semantics with Applications to Program Analysis
本文提出一种仅依赖调用栈和词法层级的高阶函数式语言最小状态操作语义,证明其与标准语义等价,并基于其直接有限化构建了可推导递推、无需值拓宽的新型程序分析,给出了形式化定义与实现。
2024-03-07 cs.PL
Compositional Semantics for the Procedural Interpretation of Logic
逻辑程序的语义由证明论、模型论和直接后果算子的不动点给出。如果子句逻辑是一种程序设计语言,那么它也应该具有组合语义。程序设计语言的组合语义遵循程序的抽象语法,通过对其组成单元的含义进行数学运算来组成单元的含义。逻辑的过程解释只产生了逻辑程序的不完整的抽象语法。我们完成它,并使用的结果作为基础的组合语义。我们提出比较塔斯基的代数化的一阶谓词逻辑,这是在实质上的组合语义为他选择的语法。我们的特点是我们的语义等价的直接后果运营商。
2006-05-07 cs.PL
π: Towards a Simple Formal Semantic Framework for Compiler Construction
本文提出了一种用于编译器构造和程序验证的形式化语义框架π。π由π Lib和π Automata组成,π Lib是一组受Peter Mosses的基于语义的程序设计语言构造启发的构造,π Automata是一种基于自动机的形式主义,用于描述程序设计语言的操作语义,它概括了Gordon Plotkin的解释自动机。
2018-07-31 cs.PL
Mechanized semantics
本讲座的目标是展示现代定理证明器--在本例中,Coq证明助手--如何用于机械化程序设计语言及其语义的规范,以及如何对单个程序和通用程序转换进行推理,如通常在编译器中发现的那样。所涵盖的主题包括:操作语义学(小步、大步、定义解释器);指称语义的简单形式;公理语义学和霍尔逻辑;验证条件的生成,以及对程序证明的应用;编译成虚拟机器码及其正确性证明;优化程序转换(死代码消除)及其正确性证明的示例。
2010-10-27 cs.PL
An Effective Fixpoint Semantics for Linear Logic Programs
在本文中,我们调查的理论基础,一个新的自下而上的语义线性逻辑程序,更确切地说,为片段的LinLog,包括语言LO丰富的常数1。我们使用约束来象征性地和非象征性地表示可能无限的可证明目标的集合。我们基于TP处理约束风格的新运算符定义了不动点语义。不动点算子的应用可以通过算法来计算。作为终止的充分条件,我们证明了不动点计算是保证收敛命题LO。据我们所知,这是首次尝试为线性逻辑程序定义有效的不动点语义。作为我们的框架的应用,我们还提出了一个正式的调查LO和析取逻辑编程之间的关系。使用一种基于抽象解释的方法,我们表明,DLP不动点语义可以被视为我们的语义LO的抽象。我们证明,由此产生的抽象是正确的和完整的一个有趣的类LO程序编码Petri网。
2001-03-23 cs.PL
Semantics of Sets of Programs
本文提出程序集合的最小组合指称语义,揭示跟踪无界多次执行中的不同行为是验证的充要条件,并导出首个可靠且相对完备的 Hoare 风格逻辑。
2025-07-27 cs.PL
A Three-Valued Semantics for Typed Logic Programming
逻辑编程中的类型一方面关注常规类型对程序语义的保守近似,另一方面关注基于为类型化程序定义的规定语义的类型系统。在本文中,我们定义了一个新的语义逻辑编程,程序评估为真,假,并称为错误的一个新的语义值,对应于一个运行时类型错误。这样我们就有了一种具有分离的类型语义的类型语言。最后,我们定义了一个类型系统的逻辑编程,并证明它是语义上的声音相对于程序和类型之间的语义关系,如果一个程序有一个类型,那么它的语义是没有错的。我们的工作遵循米尔纳的方法类型的函数语言的语义程序是独立的类型的语义,类型系统被证明是健全的两个语义之间的关系。
2019-09-18 cs.LO cs.PL
Relating Weight Constraint and Aggregate Programs: Semantics and Representation
权约束和聚集程序是最广泛使用的带约束的逻辑程序。在本文中,我们涉及这两类程序的语义,即稳定的模型语义的权重约束程序和答案集语义的基础上的条件满足聚合程序。这两类程序都是具有约束的逻辑程序的实例,并且特别地,聚合程序的答案集语义可以应用于权重约束程序。我们表明,这两个语义是密切相关的。首先,我们表明,广泛的一类重量约束的程序,称为强可满足的程序,这两个语义一致。当它们不一致时,由稳定模型语义承认的稳定模型可以循环地证明。我们表明,这两种语义之间的差距可以通过将权重约束程序转换为强可满足的程序来关闭,因此在当前实现的稳定模型语义下可能不会生成循环模型。我们进一步证明了这两个语义之间的密切关系,制定一个转换从权重约束程序到逻辑程序与嵌套表达式,保留了答案集语义。我们的语义研究导致了一个方法论问题的调查,即可能性的紧凑表示的聚合程序的重量约束程序。我们表明,几乎所有的标准聚集可以编码的重量约束competencies。这使得有可能计算的答案集的聚合程序使用的ASP求解器的重量约束的程序。这种方法进行了实验比较,其中聚集处理更明确,这表明,权重约束编码的聚集,使一个有竞争力的方法来回答集计算的聚集程序。
2011-05-16 cs.LO cs.PL
Semantically Reflected Programs
IT University of Copenhagen(哥本哈根信息技术大学);University of Oslo(奥斯陆大学)
本文通过语义提升程序解决结构化与行为化知识形式化之间的矛盾,提出面向对象编程语言的语义反射层,通过地质建模案例展示其应用。
2026-04-07 cs.LO cs.PL
The Semantics of Graph Programs
GP(图形程序)是一种基于规则的、非确定性的程序设计语言,用于在高抽象级别上解决图形问题,使程序员从处理低级别的数据结构中解放出来。GP的核心由四个结构组成:一组条件图转换规则的单步应用,顺序组合,分支和迭代。我们提出了一个形式化的语义GP的结构操作语义的风格。我们的语义的一个特殊功能是使用失败的程序来定义GP的强大的分支和迭代命令。
2010-03-24 cs.LO cs.PL
Transformations of Logic Programs with Goals as Arguments
我们考虑逻辑编程的一个简单扩展,其中变量可以在目标上变化,目标可以是谓词的参数。在这种语言中,我们可以编写以目标为数据的逻辑程序。我们给出了实际的证据表明,利用这种能力时,转换程序,我们可以提高程序的效率。我们提出了一套程序转换规则,扩展了熟悉的展开和折叠规则,并允许我们操纵的目标出现的谓词参数的条款。为了证明这些转换规则的正确性,我们形式化地定义了我们的扩展逻辑程序设计语言的操作语义。这个语义是LD-分辨率的一个简单变体。当适当的条件得到满足时,这种语义与LD-分辨率一致,因此,用我们的扩展语言编写的程序可以由普通的Prolog系统运行。我们的转换规则,以保持操作语义和终止。
2004-02-20 cs.LO cs.PL
Program Synthesis and Linear Operator Semantics
对于确定性和概率性的程序,我们调查的问题,程序合成和程序优化(相对于非功能属性)的一般设置的全局优化。这种方法是基于表示的语义的程序和程序片段的线性运算符,即矩阵。我们特别利用的事实,我们可以自动生成的基本块的语义表示。然后可以使用这些来组合整个程序的语义,即相应的离散时间马尔可夫链(DTMC)的生成器。我们还利用一个广义版本的抽象解释适合这个线性代数或功能分析框架,以制定语义约束(不变量)和优化目标(例如性能要求)。
2014-07-21 cs.PF cs.PL
Learning Scalable and Precise Representation of Program Semantics
Visa Research(Visa研究院)
神经程序嵌入已显示出帮助分析大规模复杂软件的潜力。新提出的深度神经架构以学习程序语义而不是表面的语法特征为荣。然而,由于只考虑源代码,绝大多数神经网络不能捕获程序语义的深层精确表示。在本文中,我们提出了\dypro,一种新的深度神经网络,从程序执行轨迹学习。与现有的动态模型相比,\dypro不仅能够在多个执行中泛化,以整体地学习程序的动态语义,而且\dypro在处理产生长执行轨迹的程序时也更有效。为了进行评估,我们对\dypro进行了语义分类(即根据语义对程序进行分类),并将其与两个主要的静态模型进行了比较:门控图神经网络和TreeLSTM。我们发现,\dypro达到所有模型中最高的预测精度。为了进一步揭示所有上述深度神经架构的能力,我们研究了模型是否可以学习检测程序的更深层次语义属性。特别是考虑到识别循环不变的任务,我们显示\dypro击败了所有静态模型的一个很大的利润。
2019-05-26 cs.LG cs.PL
Non-Termination Inference of Logic Programs
本文提出了一种逻辑程序非终止推理的静态分析技术。我们的框架依赖于包容测试的扩展,其中一些特定的参数位置可以被实例化,而另一些则被泛化。我们给出的语法标准,静态地确定这样的参数位置从一个程序的文本。原子左循环查询从感兴趣的程序的二进制展开的选定子集自底向上生成。我们提出了一套正确的算法自动化的方法。然后,非终止推理是定制的,试图证明左终止条件计算的终止推理工具的最优性。实验评估报告。当终止性和非终止性分析为逻辑过程产生互补的结果时,则相对于最左边的选择规则和用于描述原子查询集的语言,每个分析都是最优的,并且它们一起引起逻辑过程的操作行为的表征。
2004-06-22 cs.LO cs.PL
Towards the Future: Bring Program Correctness back to the focus
在形式语义是一个热门话题的早期,程序正确性曾经是计算机软件的主要关注点。但是,“正确”一词后来被可靠、稳健和值得信赖等取代,一个折衷的情况。这并不是因为正确性不再重要,而是因为人们发现没有办法在这个方向上取得成功。这种权衡导致软件工程师专注于技术和测试工具。软件工程的快速发展现在已经达到了一个高峰,程序员现在可以自由地工作,而不用太担心bug,因为bug是无法避免的。今天讨论程序正确性有意义吗?我们的答案是肯定的。现在是再次认真考虑正确性的时候了,在为时已晚之前,为未来做好准备。下一代计算机系统在语法(静态)和语义(动态)上都应该是正确的。第一作者的《OESPA:面向语义的编程理论》(2019)一书为语义研究开辟了新的方向。从理论上讲,基于OESPA,可以从程序文本中计算出程序语义,从而证明程序的正确性。但是,当程序规模较大时,语义计算和正确性证明无法手工完成。自动工具是必要的。本文的工作为开发所需的自动化工具奠定了基础,从而丰富了OESPA,使之更好地服务于未来的需要。为此,提出了条件语义谓词的概念。对OESPA中的语义函数、语义谓词、语义公式和语义演算等概念进行了重新表示。这种重新介绍是必要的,因为这本书是唯一的出版物语义演算迄今为止。新版本的语义演算说明了如何进行语义自动计算。
2022-03-29 cs.PL cs.SE
Derivation of Efficient Logic Programs by Specialization and Reduction of Nondeterminism
程序特化是一种程序转换方法,它通过利用编译时可用的有关输入数据的信息来提高程序效率。我们表明,目前的技术程序专业化的基础上部分评估不执行不确定性逻辑程序。然后,我们考虑一组转换规则,扩展用于部分评估,我们提出了一个策略,用于指导这些扩展规则的应用,从而得到非常有效的专门程序。效率的提高,有时是指数,是由于减少不确定性和事实上,这是由初始程序执行的计算树的不同分支,是由专门的程序在单个分支内执行。为了减少不确定性,我们还利用模式信息来指导展开过程。为了验证我们的技术,我们表明,我们可以自动获得非常有效的匹配程序和解析器的正则语言。我们已经执行的推导不能通过以前已知的部分评估技术来完成。
2003-11-27 cs.LO cs.PL
Deriving Abstract Semantics for Forward Analysis of Normal Logic Programs
虽然否定作为失败是通过内建谓词来处理的,但在文献中还没有正式地讨论{ \em normal}逻辑程序的前向抽象解释问题!在Prolog中实现的方式。本文提出了一个解决这个问题的方法,推导出两个通用的不动点抽象语义$F^b and $ F^ \diamond { \em正常}逻辑程序的前向抽象解释。$F^b$用于推断程序图中边的数据描述,其中边表示执行控制从其源程序点转移到其目的程序点的可能性。$F^\diamond$源自$F^b$,用于推断文本程序点的数据描述。
1998-11-06 cs.LO cs.PL
An interactive semantics of logic programming
我们适用于逻辑编程的一些最近出现的想法,从该领域的减少为基础的通信系统,目的是提供证据的隐藏的相互作用和协调机制,规则的运作机制,这样的编程范式。语义框架,我们选择了我们的结果是瓦片逻辑,它的优点是允许一个统一的治疗目标和意见,并应用抽象的分类工具来证明结果。作为主要的贡献,我们提到的有限表示的抽象统一,和并发和协调的抽象语义逻辑编程的最常见的语义相一致。此外,拼块语义的组合性由标准结果保证,因为它减少了对与逻辑程序相关联的拼块系统享有拼块分解属性的检查。还讨论了处理约束系统的方法的扩展。
2001-07-17 cs.LO cs.PL
Equivalence of two Fixed-Point Semantics for Definitional Higher-Order Logic Programs
已经提出了两种不同的研究方法分配一个纯粹的扩展语义高阶逻辑编程。前一种方法使用经典的域理论工具,而后者建立在一个固定的点构造上定义的语法实例的源程序。这两种方法之间的关系尚未被调查,直到现在。在本文中,我们证明了对于一类非常广泛的程序,即由W。W. Wadge,这两种方法是一致的(相对于涉及程序符号的基础原子)。另一方面,我们认为,如果存在的高阶变量被允许出现在身体的程序规则,这两种方法是在一般不同的。本文的结果有助于更好地理解高阶逻辑编程的语义。
2015-09-10 cs.LO cs.PL
Giving Semantics to Program-Counter Labels via Secure Effects
为信息流控制而设计的类型系统通常使用程序计数器标签来跟踪上下文的敏感性,并排除敏感上下文中有效计算所引起的数据泄漏。目前,除了在安全证明中,类型系统设计者使用特别的技术,他们非正式地推理这个标签。我们开发了一个框架的基础上一元语义的影响,语义程序计数器标签。这个框架导致了三个结果的程序计数器标签。首先,我们开发了一种新的证明技术,用于有效语言中的信息流控制的核心安全定理。其次,我们统一了不同类型的效果,包括国家,例外和非终止的安全概念。最后,我们正式的民间传说,程序计数器标签是一个下界的影响。我们表明,虽然不是普遍正确的,这个民间传说有一个良好的语义基础。
2020-12-10 cs.CR cs.PL
Denotational Semantics for Probabilistic and Concurrent Programs
本文针对兼具概率动作与并行组合的命令式程序,提出具有良好域论性质的指称模型,并通过两个适当性定理证明其统一涵盖并发与概率非确定语义。
2025-06-07 cs.LO cs.PL
Semantics of higher-order probabilistic programs with conditioning
University College London(伦敦大学学院);Cornell University(康奈尔大学)
我们提出了一个指称语义高阶概率规划的线性算子之间的Banach空间。我们的语义是植根于经典理论的Banach空间及其张量积,但承担的相似之处与著名的斯科特语义的高阶程序通过使用有序的Banach空间,允许定义的不动点。基于一个monoidal而不是carnival封闭结构,我们的语义有效地把随机性作为一种资源。
2019-02-28 cs.LG cs.LO cs.PL
Minimum Model Semantics for Extensional Higher-order Logic Programming with Negation
University of Athens(雅典大学);University of Szeged(塞格德大学)
可拓高阶逻辑程序设计是经典逻辑程序设计的推广。这种范式的一个重要特征是它保留了传统逻辑编程的所有众所周知的属性。在本文中,我们考虑在新的范式的背景下,否定的语义。利用非单调不动点理论的一些最新结果,我们证明了每一个带否定的高阶逻辑程序都有唯一的最小无穷值模型。通过这种方式,我们获得了第一个纯粹的模型论语义的否定在可拓高阶逻辑编程。使用我们的方法,我们解决了一个老的悖论,介绍了W。W. Wadge,以证明高阶逻辑编程的语义困难。
2014-05-15 cs.AI cs.LO cs.PL
Predicting Program Exit Code with LLMs and Programming Language Semantics
The University of Texas at Austin(德克萨斯大学奥斯汀分校);Cisco Research(思科研究院)
本研究提出程序可执行性预测(PrEx)任务,构建含系统生成非法变换的数据集,评估开源编码LLM,发现其依赖预训练先验而非给定语义,在修改语义及复杂程序上表现差。
2026-09-02 cs.AI cs.CL cs.PL
Logic Programming Semantics for Causal Processes
German University Of Digital Science Potsdam(德国波茨坦数字科学大学)
研究逻辑程序设计语义与因果过程最终状态的关系,指出正逻辑程序稳定模型对应特定过程最终状态,支持模型描述任意起点可达状态,为逻辑程序设计语义讨论提供新视角及时间维度。
2026-07-24 cs.AI cs.LO cs.PL
Evaluation of Generalizability of Neural Program Analyzers under Semantic-Preserving Transformations
University of Houston(休斯顿大学)
丰富的公开源代码库,结合神经网络的进步,使数据驱动的方法程序分析成为可能。这些方法称为神经程序分析器,使用神经网络来提取程序中的模式,用于从开发生产力到程序推理的任务。尽管神经程序分析器越来越受欢迎,但其结果的可推广程度尚不清楚。在本文中,我们使用七个语义等价的程序变换对两个流行的神经程序分析器的泛化能力进行了大规模的评估。我们的研究结果警告说,在许多情况下,神经程序分析器不能很好地概括,有时程序的文本差异可以忽略不计。这些结果为神经程序分析器中的鲁棒性量化提供了初步的基础。
2021-03-18 cs.LG cs.PL cs.SE
Towards meta-interpretive learning of programming language semantics
University of Edinburgh(爱丁堡大学);The Alan Turing Institute(艾伦·图灵研究所)
我们介绍了一个新的应用程序归纳逻辑程序设计:学习的程序设计语言的语义,从例子评估。在这篇简短的论文中,我们使用Metagol元解释学习系统探索了这一领域的简化任务。我们强调了这种情况下具有挑战性的方面,包括抽象的功能符号,非终止的例子,学习非观察到的谓词,并提出了扩展Metagol有助于克服这些挑战,这可能会证明在其他领域有用。
2019-07-20 cs.LG cs.LO cs.PL
Representing Partial Programs with Blended Abstract Semantics
Massachusetts Institute of Technology(麻省理工学院)
从例子中合成程序需要在可能的程序的巨大的组合空间中搜索。在这个搜索过程中,一个关键的挑战是在程序可以执行之前表示部分编写的程序的行为,以判断它是否在正确的轨道上,并预测下一步在哪里搜索。我们介绍了一种通用的技术,用于表示部分编写的程序中的程序合成引擎。我们从抽象解释的技术,其中一个近似的执行模型是用来确定一个未完成的程序将最终满足一个目标规范的灵感。在这里,我们学习了一个近似的执行模型,它被实现为一个模块化的神经网络。通过构建组合程序表示,隐式编码的解释语义的底层程序设计语言,我们可以表示部分程序使用一个灵活的组合,具体的执行状态和学习的神经表示,使用学习的近似语义时,具体的语义是未知的(在未完成的部分程序)。我们表明,这些混合神经符号表示,使执行指导的合成器使用更强大的语言结构,如循环和高阶函数,并可以用来合成程序更准确地为一个给定的搜索预算比纯神经方法在几个领域。
2021-04-19 cs.AI cs.LG cs.PL
Proceedings 37th Conference on Mathematical Foundations of Programming Semantics
MFPS会议致力于数学、逻辑和计算机科学领域,这些领域通常与计算模型有关,特别是与程序设计语言的语义有关。这是一个数学和计算机科学的研究人员可以见面和交换意见的论坛。大力鼓励邻近地区的研究人员参与。主题包括但不限于以下内容:生物计算;并发定性和定量分布式系统;过程演算;概率系统;构造数学;域理论和分类模型;形式语言;形式方法;博弈语义; λ演算;编程语言理论;量子计算;安全;拓扑模型;逻辑;类型系统;类型论。我们还欢迎将语义应用于复杂系统、市场和网络等新领域的贡献。
2021-12-27 cs.FL cs.LO cs.PL
Well-Definedness and Efficient Inference for Probabilistic Logic Programming under the Distribution Semantics
University of Ferrara(费拉拉大学);Universidade Nova de Lisboa(新里斯本大学)
分布语义是逻辑程序设计与概率论相结合的重要途径之一。许多语言遵循这种语义,例如独立选择逻辑、PRISM、pD、带有注释析取的逻辑程序(LPAD)和ProbLog。当程序包含函数符号时,只有当查询的解释集是有限的并且每个解释也是有限的时,分布语义才是定义良好的。良好定义通常要么是明确强加的,要么是通过严格限制允许程序的类别来实现的。在本文中,我们确定了一个更大的类的程序,其中的语义是定义良好的计算查询的概率与一个有效的程序。由于LPAD提供了最一般的语法,我们提出了我们的结果,但我们的结果适用于所有的语言下的分布语义。我们提出的算法“概率推理与制表和答案包容”(PITA),计算概率的查询转换成一个正常的程序,然后应用SLG决议与答案包容。PITA已经在XSB中实现,并在六个域上进行了测试:两个域带有函数符号,四个域没有。与ProbLog,cplint和CVE的执行时间相比,PITA几乎总是能够在更短的时间内解决更大的问题,无论是否有函数符号。
2011-10-04 cs.AI cs.LO cs.PL
The Stable Model Semantics for Higher-Order Logic Programming
Vrije Universiteit Brussel(布鲁塞尔自由大学);Katholieke Universiteit Leuven(鲁汶大学);Harokopio University of Athens(雅典哈罗科皮奥大学);National and Kapodistrian University of Athens(雅典国立与卡波迪斯特里亚大学)
本文基于近似不动点理论,为高阶逻辑程序提出稳定模型语义,推广经典二值与三值语义,并定义分层程序类,证明其唯一稳定模型与良基语义一致,为新型ASP系统奠定基础。
2024-08-20 cs.AI cs.LO cs.PL
On the Generalizability of Neural Program Models with respect to Semantic-Preserving Program Transformations
University of Houston(休斯顿大学);Singapore Management University(新加坡管理大学);Visa Research(Visa研究院);The Open University(开放大学)
随着用于训练深度神经网络模型的公共可用源代码存储库的流行,神经程序模型可以在源代码分析任务中做得很好,例如预测给定程序中的方法名称,这是传统程序分析技术无法轻松完成的。虽然这种神经程序模型已经在各种现有的数据集上进行了测试,但它们在多大程度上推广到不可预见的源代码在很大程度上是未知的。由于在所有不可预见的程序上测试神经程序模型是非常具有挑战性的,因此在本文中,我们建议评估神经程序模型在语义保持转换方面的可推广性:可推广的神经程序模型应该在具有相同语义但具有不同词汇外观和语法结构的程序上同样表现良好。我们比较了各种神经程序模型在自动语义保持转换之前和之后的程序上的方法名称预测任务的结果。我们使用三个不同大小的Java数据集和三个最先进的神经网络代码模型,即code2vec,code2seq和GGNN,来构建九个这样的神经程序模型进行评估。我们的研究结果表明,即使对程序进行小的语义保留更改,这些神经程序模型通常也无法概括其性能。我们的研究结果还表明,基于程序中的数据和控制依赖关系的神经程序模型比仅基于抽象语法树的神经程序模型更好地泛化。从积极的方面来看,我们观察到,随着训练数据集的大小增加和多样化,神经程序模型产生的正确预测的泛化能力也可以提高。我们关于神经程序模型的可推广性的结果提供了衡量其局限性的见解,并为其改进提供了垫脚石。
2021-03-18 cs.LG cs.PL cs.SE
Searching for Programmatic Policies in Semantic Spaces
Universidade Federal de Viçosa(巴西联邦维索萨大学);University of Alberta(阿尔伯塔大学);Alberta Machine Intelligence Institute (Amii)(阿尔伯塔机器智能研究所)
本文提出在程序语义空间而非语法空间中进行策略合成搜索,通过学习行为多样的程序库并定义邻域函数实现,在MicroRTS中验证了该方法具有更高的样本效率。
2024-06-12 cs.AI cs.LG cs.PL
Computer-Assisted Program Reasoning Based on a Relational Semantics of Programs
我们提出了一种程序推理的方法,它在程序及其验证条件之间插入一个附加层,即以声明形式表示的程序的外延。首先将程序翻译成其表示,随后从该表示生成验证条件。然而,即使在任何验证尝试之前(并且独立于任何验证尝试),人们也可以调查指称本身以洞察程序的“语义本质”,特别是看看指称是否确实给出了相信程序具有预期行为的理由。因此,在实际执行形式化验证之前,可以检测并修复程序和元信息中的错误。更具体地说,程序语义的关系方法,我们建模的程序作为一个二元关系的程序状态的影响。一个正式的演算是从一个程序中推导出一个逻辑公式,描述这种关系,并进行检查和操作。我们已经实现了这一想法在RISC ProgramExplorer,一个新的程序推理环境的教育目的,其中包括以前开发的RISC ProofNavigator作为一个交互式的证明助理的全面形式。
2012-02-22 cs.LO cs.MS cs.PL
Compositional Semantics for Probabilistic Programs with Exact Conditioning
University of Oxford(牛津大学)
我们定义了一个概率程序设计语言的高斯随机变量与一流的精确条件构造。我们给这种语言的操作,指称和等式语义,建立方便的属性,如交换条件。连续随机变量相等的条件是非平凡的,因为精确的观察可能有概率为零;这是波莱尔悖论。使用条件概率的分类公式,我们表明,我们的语言的良好性能是不特定的高斯,但可以从普遍的属性,从而推广到更广泛的设置。我们定义的Cond建设,它内在的条件作为一个态射,提供一般的组合语义的概率编程与精确的条件。
2021-01-27 cs.AI cs.LO cs.PL