QCP: A Practical Separation Logic-based C Program Verification Tool
Shanghai Jiao Tong University(上海交通大学);Peking University(北京大学)
QCP结合注解自动验证与 Rocq 交互证明,通过符号执行和分离逻辑推导求解器自动处理验证任务,同时支持 VS Code 扩展提升证明效率。
2026-04-24 cs.PL cs.SE
Verifying Array Manipulating Programs with Full-Program Induction
我们提出了一个完整的程序归纳技术证明(的子类)量化以及量化的程序操纵参数大小N的数组的属性。我们的技术不是在单个循环上进行归纳,而是直接通过程序参数N在整个程序(可能包含多个循环)上进行归纳。值得注意的是,这不需要生成或使用特定于循环的不变量。我们已经开发了一个原型工具金刚来评估我们的技术的有效性。我们展示了性能的金刚相对于几个国家的最先进的工具,一组数组操作基准。
2020-02-23 cs.PL cs.SE
Reflection and Hyper-Programming in Persistent Programming Systems
在这篇论文中提出的工作旨在提高程序员的生产力在以下几个方面:-通过减少的代码量,必须编写构建一个应用程序; -通过增加编写的代码的可靠性;和-通过提高程序员的理解的持久环境中,应用程序的构造。在持久化环境中实现这些目标的两种编程技术是类型安全的语言反射和超编程。第一个提供了一种机制,程序员可以通过它编写生成器,当执行时,生成新的程序表示。这允许高度通用的程序规范,但以非平凡的方式依赖于它们所操作的数据类型。泛型促进了软件重用,这反过来又减少了必须编写的新代码的数量。超编程允许源程序包含指向持久存储中的数据项的链接。这通过允许某些程序检查比其他可能的更早地执行来提高程序可靠性。它还通过允许直接链接到数据而不是文本描述来减少编写的代码量。这两种技术通过支持存储浏览工具的实现和允许源表示与持久存储中的所有可执行程序相关联,有助于理解持久环境。本文详细介绍了类型安全语言反射和超编程的结构,它们在持久化上下文中的优点,以及一套支持反射编程和超编程的编程工具。这些工具可以结合使用以允许超程序表示上的反射。工具的实施进行了说明。
2010-06-17 cs.PL cs.SE
Lupa: A Framework for Large Scale Analysis of the Programming Language Usage
在本文中,我们提出了Lupa -一个大规模分析的程序设计语言的使用框架。Lupa是一个命令行工具,它使用了IntelliJ平台的强大功能,这使它能够访问现代IDE中使用的强大静态分析工具。该工具支持自定义分析器,可以处理代码的丰富具体语法树,并可以计算其各种功能:实体的存在,它们的依赖关系,定义使用链等。我们解释了该工具的内部原理,展示了如何扩展和自定义它,并描述了我们在它的帮助下进行的示例分析:分析Kotlin中范围的语法。
2022-03-28 cs.PL cs.SE
QChecker: Detecting Bugs in Quantum Programs via Static Analysis
本文提出了一种名为QChecker的静态分析工具,通过基于AST提取程序信息和基于模式检测错误的两个模块,有效检测Qiskit量子程序中的错误。
2023-04-10 cs.PL cs.SE
From Traces To Proofs: Proving Concurrent Program Safe
调度的不确定性是并发程序正确性证明困难的主要原因。最近提出了一个强大的证明策略[6]来证明这些程序的正确性。该方法捕获数据流之间的依赖关系的指令的交错和无错误的线程执行。这些数据流依赖由归纳数据流图(iDFG)表示,简而言之,它表示引起所发现的数据流依赖的并发程序的一组执行。iDFG被进一步转化为替代有限自动机(AFA),以利用有效的自动机理论工具来解决这个问题。在本文中,我们给出了一个新颖的和有效的算法来直接构建AFA捕获的数据流依赖在并发程序执行。我们在ProofTraPar工具中实现了该算法,证明了有限状态循环程序在顺序一致内存模型下的正确性。我们的结果是encouranging和比较有利的现有国家的最先进的工具。
2016-04-28 cs.PL cs.SE
Program Understanding: A Reengineering Case for the Transformation Tool Contest
在软件再工程中,核心工件之一是遗留系统的源代码。事实上,在大多数情况下,它是唯一确定的工件,因为随着时间的推移,代码已经偏离了原始的架构和设计文档。任何再工程项目的第一个任务是收集对系统架构的理解。因此,一种常见的方法是使用解析器将源代码翻译成符合实现系统的程序设计语言的抽象语法的模型,然后可以对其进行查询。除了查询之外,转换还可以用于生成系统架构上更抽象的视图。这个转换案例处理从Java语法图创建状态机模型。它是从一个真正的再工程项目中的一个任务衍生出来的。
2011-11-21 cs.PL cs.SE
Invariant Detection with Program Verification Tools
编译器可以专门化具有不变量的程序,以提高性能。然而,对于编译器来说,检测跨越大而复杂的代码的程序不变量是困难的。传统的编译器不执行非常昂贵的分析,因此只能识别有限的不变量,这限制了后续优化的潜力。我们希望通过更复杂的分析,使用程序验证工具来解决不变检测问题。在本文中,我们揭示了选择程序验证工具的不变量检测的陷阱,确定使用这些工具之一-CVC 4建模程序行为的挑战,并提出了一些想法如何解决的挑战。
2019-06-27 cs.PL
A Survey of Quantum Programming Languages: History, Methods, and Tools
量子计算机编程是从量子计算、计算机科学、数学(特别是量子逻辑、lambda演算和线性逻辑)的多学科研究中出现的一个新的学科领域,并且工程试图构建第一台非平凡的量子计算机。本文简要回顾了大约在2007年底为量子计算机编程的历史、方法和提出的工具。它的目的是提供一个广泛的,但非详尽的工作,导致目前的最先进的量子计算机编程。此外,它试图分析量子程序员所需的编程工具,使用这种分析来预测该领域的发展方向,并为量子程序设计语言工具的进一步发展提出建议。
2008-04-07 cs.PL
Semantics of Programming Languages: A Tool-Oriented Approach
通过更加关注基于语义的工具生成,程序设计语言语义可以显著增加其影响。最终,这可能会导致“语言设计助手”包含大量的语义知识。
1999-11-26 cs.PL
Relations, Constraints and Abstractions: Using the Tools of Logic Programming in the Security Industry
逻辑编程有时被描述为关系编程:程序员使用约束系统指定和组合n元关系的范式。高级逻辑编程环境将提供抽象这些关系的工具,以转换、优化甚至验证逻辑程序的正确性。本次演讲将表明,这些概念,即关系,约束和抽象,原来也是重要的反向工程过程中,支持安全行业内的错误发现。
2009-03-13 cs.PL
A Broad Comparative Evaluation of Software Debloating Tools
本文调研10年文献并在20个基准上以12项指标比较10款软件去臃肿工具,发现其成功率、健全健壮性及安全性能收益均有限。
2024-06-12 cs.CR cs.PL cs.SE
A Tool for Describing and Checking Natural Semantics Definitions of Programming Languages
许多大学在计算机科学的学位课程中都有围绕编译器或解释器实现的课程和项目。在这样的教学活动中,工具支持可以是非常有益的。虽然已经有几个工具可以帮助开发编译器的前端,但工具支持会逐渐减少到后端,或者需要比本科生更多的背景经验。结构操作语义是一个有用的和数学上简单的形式主义,用于指定程序的行为和规范本身很好地实现;特别是大步或自然语义往往是一个有用的和简单的方法。然而,许多学生在学习符号时遇到了困难,并且经常在定义结构操作语义时提出定义不清和无意义的尝试。一项调查显示,从事程序设计语言项目的学生认为缺乏工具支持,而且工具支持会很有用。在开发语义定义时遇到的许多问题与编程中遇到的问题相似,特别是那些本质上是类型错误导致的问题。我们提出了一个教学元语言的基础上自然语义,及其实施,试图结婚两个概念:语法类似于教科书的自然语义符号一方面,和自动验证的一些正确性属性的其他手段,一个强大的类型纪律。元语言和工具为编写和执行规范提供了便利,作为编程的一种形式。用户可以检查规范是否无意义,如果规范有意义,则执行程序。
2022-09-20 cs.PL
Bound Analysis of Imperative Programs with the Size-change Abstraction (extended version)
大小变化抽象(SCA)是一种重要的程序可终止性分析抽象,已在许多函数程序和逻辑程序的工具中得到成功实现。在本文中,我们证明了SCA也是一个非常有效的抽象域的约束分析的命令式程序。我们已经实现了一个基于SCA的命令式程序绑定分析工具。我们抽象程序的路径和上下文相关的方式,这使得我们的工具,以有效地分析现实世界的程序。我们的工作表明,SCA捕获了许多以前的终止和绑定分析的基本思想,并超越了概念上更简单的框架。
2012-03-23 cs.PL
Analysis of MiniJava Programs via Translation to ML
MiniJava是面向对象的程序设计语言Java的一个子集。标准ML是函数式程序设计语言ML家族的规范代表,包括F#和OCaml。已经为类Java和类ML语言开发了不同的程序分析和验证工具和技术。当然,为特定语言开发的工具强调准确处理该语言中常用的语言特征。在Java中,这意味着对象具有可变属性和动态方法分派。在ML中,这意味着具有模式匹配的高阶函数和代数数据集。我们建议将程序从一种语言翻译成另一种语言,并使用目标语言的工具进行分析和验证。通过这样做,我们希望确定目标语言的工具中需要改进的地方,并提出可能指导其改进的技术,这些技术可能与源语言的工具中使用的技术一样。更一般地说,我们希望开发用于推理程序的工具,这些工具对代码风格和数据表示的变化更具弹性。我们首先概述了从MiniJava到ML的转换,该转换仅使用ML的核心功能;特别是,它避免了使用ML的可变引用。
2020-12-30 cs.PL
Verifying Semantic Conflict-Freedom in Three-Way Program Merges
尽管许多程序员依赖于三向合并工具来集成来自不同分支的更改,但此类工具可能会在集成过程中引入细微的错误。本文旨在通过定义冲突自由的语义概念来缓解这个问题,这确保了合并后的程序不会引入新的不必要的行为。我们还展示了如何使用一种新颖的组合算法来验证此属性,该算法结合了对共享程序片段的轻量级依赖分析和对修改的精确关系推理。我们评估了我们的工具SafeMerge从Github获得的52个真实世界的合并场景,并将结果与文本合并工具进行比较。实验结果表明,我们的方法的好处,语法冲突自由,并表明SafeMerge是精确和实用的。
2018-02-19 cs.PL
Live Multi-language Development and Runtime Environments
内容:软件开发工具应该在不同的程序设计语言之间保持一致的工作和行为,这样开发人员就不必熟悉新语言的新工具。此外,能够在程序中组合多种程序设计语言增加了可重用性,因为开发人员不必以他们开发的语言重新创建软件框架和库,而是可以重用现有软件。询问:然而,开发人员通常有广泛的工具选择,其中一些工具仅为一种特定的程序设计语言设计。各种集成开发环境支持多种语言,但由于不同的语言特定的运行时功能,通常无法提供一致的编程体验。关于语言集成,通用机制通常使用抽象层,例如操作系统或网络连接,这些抽象层通常是工具的边界,因此对编程体验产生负面影响。方法:在本文中,我们提出了一种新的工具重用方法,旨在提高与多个高层次的动态,面向对象的程序设计语言的工作经验。作为其中的一部分,我们构建了一个多语言虚拟执行环境,并将Smalltalk的实时编程工具重用于其他语言。知识:我们的方法的一个重要部分是为不同的语言改造和调整运行时功能,因为这是提供一致的工具的要求。此外,它提供了方便的手段来重用甚至混合用不同语言编写的软件库和框架,而不破坏工具支持。接地:原型系统Squimera是我们的方法的实现,并表明,它是可以重用的开发工具,从一个活的编程系统,以改善开发经验,以及从不同的语言,以提高生产力的软件工件。重要性:在多语言编程系统领域,大多数研究都集中在不同语言的集成和相应的性能优化。另一方面,我们的工作侧重于工具和…
2018-03-27 cs.PL
Using human-in-the-loop synthesis to author functional reactive programs
响应异步事件的程序编写起来很有挑战性;它们很难推理,测试和调试也很棘手。因为这些程序可能有一个巨大的输入时间和交错空间,程序员可能很容易错过角落的情况。我们建议应用合成,以帮助程序员更容易地创建程序,并在其正确性有更高的信心。我们已经写了一个有效的编码的功能反应式编程(FRP)语义的基础上的功能编程在玫瑰解除列表。我们证明,这种技术是最先进的,首先比较其性能对现有的两个合成工具,产生列表操作程序,然后通过合成一套基准完整的规格。我们还提出了一个交互式工具,在该工具中,程序员以输入/输出示例或不变量的形式提供一些初始部分规范;该工具通过合成两个候选程序来发现规范中的歧义,并给用户一个区分它们的输入;用户更新规范并继续迭代直到找到正确的程序。作为评估,我们展示了使用该工具的一套基准测试,从网络编程和物联网领域,走查一个现实的网络基准测试的样本交互,表明我们可以收敛到目标程序与易处理的互动数量。作为未来的工作,我们讨论对其他FRP语言进行编码,以探索元语言特征、允许合成更大程序的分解策略以及改进的程序员工具(例如GUI),以更容易地得出规范。
2019-09-24 cs.PL
Symbolic Computation via Program Transformation
符号计算是自动化程序分析的一种重要方法。大多数最先进的工具作为解释器执行符号计算,并直接维护符号数据。在本文中,我们表明,它是可行的,实际上是实用的,而不是使用基于编译器的策略。使用编译器工具,我们提出并实现了一个转换,需要一个标准的程序,并输出一个程序,执行语义等价,但部分符号,计算。转换后的程序在内部维护符号值,并直接对它们进行操作,因此程序可以由工具处理,而不支持符号操作。转换的主要动机是符号验证,但也有许多其他可能的用例,包括测试生成和concolic测试。此外,由于符号计算由程序直接处理,因此使用变换简化了工具。我们已经在LLVM位代码级别实现了转换。本文包括一个实验评估,基于显式状态的软件模型检查器作为验证后端。
2018-05-31 cs.PL
A Web-based Tool Combining Different Type Analyses
逻辑程序的类型分析方法多种多样。这些包括例如描述程序的成功集的过度近似的类型的推断、良好类型的推断以及基于给定类型的抽象。分析可以是描述性的或规定性的,也可以是两者的混合,它们可以是目标相关的或目标无关的。我们描述了一个原型工具,可以从Web浏览器访问,允许运行各种类型的分析。该工具的第一个目标是通过点击原始程序子句中的点来方便地检查分析结果,并突出显示不良类型的程序构造、空类型或其他类型异常。其次,该工具允许各种分析风格的组合。例如,可以针对给定程序自动推断描述性规则类型,然后该类型可以用于生成程序相对于对应的预解释的最小“领域模型“,其可以给出比原始描述性类型更精确的信息。
2007-01-17 cs.PL
Combining Tools for Optimization and Analysis of Floating-Point Computations
最近,对优化和分析浮点程序的兴趣重新燃起,导致了一系列用于数值程序的新工具。这些工具通常是互补的,每一个都专注于数值编程的一个不同方面。构建可靠的浮点应用程序通常需要解决其中的几个方面,这使得简单的组合变得至关重要。本文介绍了两个最近的浮点工具的组成:Herbie,它执行精度优化,和Daisy,它执行精度验证。我们发现,这种组合为用户提供了许多好处,例如能够使用Daisy来检查Herbie的不合理优化是否改善了最坏情况下的舍入误差,以及对工具作者的好处,包括发现两个工具中的一些错误。这种结合也使我们能够第一次比较这些工具实现的不同程序重写技术。本文为结合其他浮点工具和克服常见挑战提供了路线图。
2018-05-07 cs.PL
Constraint-Based Type-Directed Program Synthesis
我们探讨了一种基于约束的类型推断技术的类型导向的程序合成方法。通过这样做,我们的目标是更有效地合成多态代码,同时也解决了高级类型功能,如基于多态性的GADT。一路上,我们还提出了一个实现这些技术的镰刀,原型活,类型导向的编程工具的Haskell程序设计语言,并反映了我们的初步经验的工具。
2019-07-06 cs.PL
Foundational VeriFast: Pragmatic Certification of Verification Tool Results through Hinted Mirroring
KU Leuven(荷语天主教鲁汶大学)
通过提示镜像技术,VeriFast扩展为生成Rocq证明脚本,以验证Rust程序的正确性,提升其在安全关键领域的应用
2026-01-20 cs.PL
Multi-Lingual Development & Programming Languages Interoperability: An Empirical Study
本研究基于GitHub和Stack Overflow大规模数据集,实证分析了多语言开发实践与进程内编程语言互操作性,发现C语言是互操作核心支柱,并提出了简单互操作性指南,为未来工具开发奠定基础。
2024-11-13 cs.PL
Source-Level Bitwise Branching for Temporal Verification
将验证工具应用于具有位向量操作的程序的兴趣越来越大。SMT求解器作为这些工具的基础,因此通过位爆破和线性算术近似增加了对位向量推理的支持。然而,验证工具在位向量程序的终止和LTL验证方面仍然受到限制。在这项工作中,我们表明,类似的线性算术近似位向量操作可以在源代码级别通过转换。具体来说,我们引入了新的路径,这些路径通过线性条件/约束过度近似位向量操作,增加了分支,但使我们能够更好地利用成熟的整数推理和验证工具的插值。我们提出了两套规则,即重写规则和弱化规则,可以实现为程序转换的按位分支,分支路径可以帮助验证工具扩展验证任务的位向量程序。我们的实验表明,这种利用整数推理和插值,使竞争终止验证的位向量程序,并导致第一个有效的技术LTL验证的位向量程序。
2021-11-04 cs.PL
Interpreted Programming Language Extension for 3D Render on the Web
有一些工具可以简化程序员的2D/3D图形开发。有时,这些并不是所有需要商业许可证或基于试用的用户都可以直接访问,或者在使用它们之前需要很长的学习时间。在现代社会,发布最终程序的时间对于公司的成功至关重要,也是为了节省资金。然后,如果程序员能够使用已知的程序设计语言来处理工具以最大限度地缩短开发时间,那么他们就可以以最少的努力按时交付最终程序。这个概念是本文的目标,提供一个工具来创建3D渲染在一个熟悉的程序设计语言,以加快Web开发时间的过程。我们提出了一个扩展的解释程序设计语言与一个简单的语法在Web上显示3D图形生成一个模板,在一个众所周知的Web程序设计语言,它可以被定制和扩展。我们的建议是基于Lua程序设计语言作为程序员的输入语言,提供一个Web编辑器,解释其语法和导出模板在WebGL超过JavaScript,也得到即时输出在Web浏览器中。测试表明,我们的方法的有效性专注于编写的代码行,也得到了预期的输出使用一些计算资源。
2020-04-03 cs.PL
C Analyzer : A Static Program Analysis Tool for C Programs
INDIAN INSTITUTE OF TECHNOLOGY, BOMBAY(印度理工学院孟买分校)
本文提出C Analyzer,一个基于抽象解释技术的C程序静态分析工具,利用LLVM Clang API和CIL转换,支持多种抽象域以检测除零、溢出等运行时错误。
2024-01-28 cs.CL cs.PL
JCoffee: Using Compiler Feedback to Make Partial Code Snippets Compilable
静态程序分析工具通常只需要处理程序源代码的一小部分,这要么是由于整个程序不可用,要么是由于不需要分析完整的代码。这使得使用需要完整和类型化的中间表示(IR)的静态分析工具具有挑战性。我们提出了JCoffee,一个工具,利用编译器的反馈转换部分Java程序到他们的可编译的同行通过模拟缺少周围的代码的存在。它可以处理任何类型良好的代码片段(类、函数,甚至是一组未封闭的语句),同时对输入代码片段进行最小的更改。该工具的演示可在此处获得:https://youtu.be/O4h2g_n2Qls
2020-09-10 cs.PL
Proving LTL Properties of Bitvector Programs and Decompiled Binaries (Extended)
人们越来越感兴趣的是将验证工具应用于具有位向量操作的程序(例如,二进制文件)。SMT求解器作为这些工具的基础,因此通过位爆破和线性算术近似增加了对位向量推理的支持。在本文中,我们表明,类似的线性算术近似位向量操作可以在源代码级别通过转换。具体来说,我们引入了新的路径,这些路径通过线性条件/约束过度近似位向量操作,增加了分支,但使我们能够更好地利用成熟的整数推理和验证工具的插值。我们发现,对于位向量程序的可达性,增加分支会产生微不足道的开销,但与整数插值优化相结合时,使更多的程序进行验证。我们进一步表明,这种利用整数插值在常见的情况下,也使竞争终止验证的位向量程序,并导致第一个有效的技术LTL验证的位向量程序。最后,我们提供了一个深入的案例研究反编译(“提升”)二进制程序,模拟X86执行通过频繁使用的位向量操作。我们提出了一个新的工具DarkSea,第一个工具能够验证可达性,终止和LTL的解除二进制文件。
2021-08-28 cs.FL cs.PL cs.SE
Kleene Algebra with Tests and Coq Tools for While Programs
我们提出了一个Coq库Kleene代数与测试,包括证明他们的完整性在适当的概念的语言,他们的方程理论的决策程序,并利用在这样的理论的一个特定形状的假设的工具。带有测试的Kleene代数使得在大多数命令式程序设计语言中表示if-then-else语句和while循环成为可能。它们实际上是由Kozen引入的,作为命题霍尔逻辑的替代。我们展示了如何利用相应的Coq工具的程序验证的上下文中证明等价的,而程序,正确的一些标准的编译器优化,霍尔规则的部分正确性,以及一个特别具有挑战性的等价流程图计划。
2013-02-07 cs.LO cs.MS cs.PL
Autoencoders as Tools for Program Synthesis
Eindhoven University of Technology(埃因霍温理工大学)
近年来,源代码语言建模的研究取得了许多进展。应用范围从代码建议和完成到代码摘要。然而,工业级程序设计语言的完全程序合成仍然是一个悬而未决的问题。在这项工作中,我们介绍和实验验证变分自编码器模型的程序合成的工业级程序设计语言。该模型利用了代码固有的树结构,并可与无梯度优化技术(如进化方法)结合使用,以生成最大化给定适应度函数的程序,例如,通过一组测试用例。可在https://tree2tree.app上获得演示
2021-09-05 cs.AI cs.PL
Tools and Methodologies for Verifying Answer Set Programs
University of Nebraska Omaha(内布拉斯加大学奥马哈分校)
答案集编程(ASP)是一种强大的声明式编程范式,通常用于解决具有挑战性的搜索和优化问题。ASP的建模语言由复杂的求解算法(求解器)支持,使解决方案搜索效率高,同时使程序员能够在高抽象级别上对问题进行建模。作为一种知识表示和推理的方法,ASP具有简单、简洁和严格定义语义的优点。这些特性使ASP成为开发形式可验证程序的一种简单方法。在人工智能(AI)的背景下,ASP程序的清晰度有助于构建可解释,可信赖的AI。在支持这些目标,我的研究是关注扩展的理论和工具支持验证的ASP脚本。
2022-08-05 cs.AI cs.LO cs.PL
pymwp: A Tool for Guaranteeing Complexity Bounds for C Programs
复杂性分析提供了程序运行时行为的保证,但现有的自动化技术仍然无法分析大类程序,mwp流分析避开了现有方法的许多困难,并提供了有趣的特征,如组合性,多变量边界,适用于非终止程序。它分析资源使用情况,并确定程序的变量增长率是否仅与其输入大小多项式相关。这听起来然而,微积分是计算昂贵的操作,并提供没有反馈,如果程序没有多项式bounds.That两个默认值在以前的工作中解决,并准备为我们在这里介绍的工具:pymwp,一个静态复杂性分析器为C程序的基础上,我们改进的mwp流分析。
2023-03-20 cs.CC cs.LO cs.PL
Profiling parallel Mercury programs with ThreadScope
并行程序的行为比顺序程序的行为更难理解。并行程序可能会受到影响顺序程序的任何性能问题的影响,也可能会受到并行系统特有的几个问题的影响。如果没有专业工具的帮助,这些问题中的许多都很难(甚至几乎不可能)诊断。我们提出了一个建议,一个工具,分析并行执行的水星计划,建议的实施,我们已经开始。这个工具是ThreadScope分析器的一个改编和扩展,ThreadScope分析器最初是用来帮助程序员可视化并行Haskell程序的执行的。
2011-09-07 cs.DC cs.PF cs.PL
lpopt: A Rule Optimization Tool for Answer Set Programming
TU Wien(维也纳工业大学)
最先进的答案集编程(ASP)求解器依赖于一个名为grounder的程序,将包含变量的非基础程序转换为无变量的命题程序。这种接地的大小很大程度上取决于非接地规则的大小,因此,减少这样的规则的大小是一个有前途的方法来提高求解性能。为此,在本文中,我们宣布lpopt,一个工具,它可以将大型逻辑编程规则分解为更小的规则,更容易处理当前的求解器。该工具是专门为处理ASP语言(ASP-Core)的标准语法而定制的,使用户更容易编写高效和直观的ASP程序,否则通常需要专家ASP工程师进行大量的手工调整。它基于Morak和Woltran(2012)提出的一个想法,我们对其进行了显著扩展,以处理完整的ASP语法,包括聚合,弱约束和算术表达式等复杂结构。我们提出的算法,如何对待这些结构的理论基础,以及实验评估显示我们的方法的可行性。
2016-08-23 cs.AI cs.LO cs.PL
Genetic Algorithm for Program Synthesis
一种演绎程序合成工具将规范作为输入并导出满足该规范的程序。这种方法的缺点是,这种正确程序的搜索空间往往是巨大的,使得难以在实际超时内导出正确的程序。为了加快这样的程序推导,我们改进了搜索策略的演绎程序合成工具,SuSLik,使用演化计算。我们的交叉验证表明,改进所带来的演化计算概括到不可预见的问题。
2023-01-19 cs.AI cs.NE cs.PL
Methodic of joint using the tools of automation of lexical and parsing analysis in the process of teaching the programming theory of future informatics teachers
确定了句法分析在未来信息学教师专业信息学能力形成中的地位和作用。独立的自动化工具,用于词法(lex)和语法(yacc)分析,对所使用的程序设计语言保持不变。在程序设计原理课程中,使用函数式程序设计语言Scheme和SML进行编译程序开发是十分方便的。MosML方言的例子说明了联合使用词法和句法分析自动化工具的方法的主要组成部分,在未来的信息学教师的程序设计理论的教学过程中。本文的主要结论和建议:(1)扩展计算器的例子可以通过改变语法来改进,特别是-对于条件句和循环句的引入; 2)该方案可以用任意类型化方法实现任何形式语言的解释器。适当的研究示例将是过程语言Basic和C以及函数语言Scheme和SML的子集:如果增加了机器码生成阶段,这就提供了一个展示程序设计语言编译器的完整开发周期的机会。
2018-07-04 cs.CY cs.FL cs.PL
From Tool Calling to Symbolic Thinking: LLMs in a Persistent Lisp Metaprogramming Loop
Ph.D. in Computer Science and Mathematics of Security Barcelona, ES(巴塞罗那安全计算机科学与数学博士)
本研究提出将大语言模型与持久交互式Lisp环境集成的新型架构,通过实时REPL交互实现动态工具创建等能力,并给出设计框架指导相关交互式AI系统构建。
2025-06-08 cs.AI cs.PL
Automating the Diagram Method to Prove Correctness of Program Transformations
我们报告的自动化技术,以证明程序转换的正确性,在高阶程序演算,这可能允许递归让绑定,因为它们发生在功能程序设计语言。如果程序转换保持了程序的观察语义,那么它就是正确的。在我们的LRSX工具中,所谓的图方法是通过结合高阶元语言上的α重命名的统一、匹配和推理来自动化的,并且通过编码来自动化归纳证明到术语重写系统的终止问题中。我们解释的技术,我们说明了使用的工具,我们报告的实验。
2019-02-22 cs.LO cs.PL