Multi-Language Probabilistic Programming
本文提出MultiPPL,一种概率多语言,实现两种概率编程语言的互操作,结合精确离散推理与近似重要性采样,支持异构概率程序的推理,并证明其可靠性。
2025-02-26 cs.PL
Lexicographic Ranking Supermartingales: An Efficient Approach to Termination of Probabilistic Programs
概率程序用实值随机变量和随机分支扩展了经典的命令式程序。这类程序最基本的活性属性是终止属性。定性(也称为几乎肯定)终止问题给出了一个概率程序,询问程序是否以概率1终止。虽然排序函数为非概率规划提供了一个合理而完整的方法,但将其扩展到概率规划是通过排序上鞅(RSM)实现的。虽然已经建立了深入的理论成果,他们的应用程序与非确定性的概率程序仅限于学术的例子。对于非概率程序,字典排序函数提供了一个组成和实际的方法,终止分析现实世界的程序。在这项工作中,我们介绍字典的RSM,并表明他们提出了一个健全的方法几乎肯定终止的概率程序与非确定性。我们表明,字典的RSM提供了一个工具,组合推理几乎肯定终止,和线性算术的概率程序,他们可以有效地合成(在多项式时间)。我们还表明,与其他限制,甚至可以通过字典的RSM得到预期的终止时间的渐近界。最后,我们提出的实验结果抽象的真实世界的程序来证明我们的方法的有效性。
2017-09-12 cs.PL
Automatic Alignment of Sequential Monte Carlo Inference in Higher-Order Probabilistic Programs
概率编程是一种用于表达灵活的概率模型的编程范式。概率程序设计语言的实现采用各种推理算法,其中通常使用顺序蒙特卡罗方法。使用顺序蒙特卡罗推断的当前最先进的实现的问题是程序同步点的对齐。提出了一种基于0-CFA算法的高阶概率程序自动对齐的静态分析方法。我们评估了系统发育模型上的自动比对,显示出运行时间的显着减少和准确性的增加。
2018-12-18 cs.PL
Concept of the abstract program
本文的目的是改变抽象定义的理论编程模型,已开发多年的Eotvos罗兰大学的程序,以调查的方法,支持设计正确的程序。这种修改的动机是程序的动态特性出现在模型中。这个新的定义的程序给了一只手,扩展模型的概念,子程序,而早期的结果,原来的编程模型被保留。
2012-07-26 cs.PL
Inductive Program Synthesis via Iterative Forward-Backward Abstract Interpretation
针对示例驱动程序综合的庞大搜索空间问题,提出迭代交替的前向与后向抽象解释方法,用于剪枝部分程序并应用于SyGuS,实验表明其显著优于现有方法。
2023-04-21 cs.PL
Probabilistic Output Analyses for Deterministic Programs --- Reusing Existing Non-probabilistic Analyses
我们考虑重用已建立的非概率输出分析(向前或向后),这些分析产生程序的前像或图像关系的过度近似,例如,区间分析我们假设一个概率措施的程序输入,并提出了两种技术(一个向前和向后分析),都得出输出事件的概率上限和下限。我们展示了最涉及的技术,即前向技术,两个例子,并比较他们的结果,一个尖端的概率输出分析。
2020-01-20 cs.PL
Program Synthesis using Abstraction Refinement
提出了一种基于反例引导的抽象求精的示例引导程序合成方法。我们的方法使用的抽象语义的底层DSL找到一个程序$P$的抽象行为满足的例子。然而,由于程序$P$可能是虚假的具体语义,我们的方法迭代地细化抽象,直到我们找到一个程序,满足的例子或证明没有这样的DSL程序存在。由于许多程序在其抽象语义方面具有相同的输入-输出行为,因此与使用纯具体语义的现有技术相比,这种合成方法显著地减小了搜索空间。虽然合成使用抽象细化(SYNGAR)可以在不同的设置中实现,我们提出了一个基于细化的合成算法,使用抽象有限树自动机(AFTA)。我们的技术使用一个粗略的初始程序抽象来构建一个初始的AFTA,这是迭代完善,通过构建任何虚假程序的不正确性证明。除了排除以前的AFTA所接受的虚假程序外,不正确性的证明也有助于排除许多其他虚假程序。我们在一个名为\tool的框架中实现了这些想法。我们使用BLAZE框架来构建字符串和矩阵变换的合成器,并将BLAZE与现有技术进行比较。我们对字符串域的研究结果表明,BLAZE与FlashFill(一种现在部署在Microsoft PowerShell中的特定于域的合成器)相比毫不逊色。在矩阵操作的背景下,我们比较BLAZE对散文,一个国家的最先进的通用VSA为基础的合成器,并表明BLAZE结果在一个90倍的速度超过散文。
2017-10-21 cs.PL
Scaling Exact Inference for Discrete Probabilistic Programs
概率程序设计语言(Probabilistic programming language,PPL)是一种表示和推理概率模型的表达手段。概率推理的计算挑战仍然是PPL在实践中应用的主要障碍。推理从根本上说是困难的,所以没有一个放之四海而皆准的解决方案。在这项工作中,我们的目标可扩展推理的一类重要的概率程序:那些概率分布是离散的。离散分布在许多领域都很常见,包括文本分析,网络验证,人工智能和图形分析,但它们被证明是具有挑战性的现有PPL。我们开发了一个特定于域的概率程序设计语言称为骰子,其特点是一种新的方法来精确的离散概率程序推理。Dice利用程序结构来分解推理,使我们能够对具有数十万随机变量的概率程序进行精确推理。我们的主要技术贡献是一个新的减少从离散概率程序加权模型计数(WMC)。这种简化将分布的结构与其参数分离,使逻辑推理工具能够利用该结构进行概率推理。我们(1)展示了如何将Dice推理组合地减少到WMC,(2)证明这种编译相对于指称语义是正确的,(3)经验性地证明了与先前方法相比的性能优势,以及(4)分析了允许Dice扩展到大型概率程序的结构类型。
2020-10-16 cs.PL
Symbolic Exact Inference for Discrete Probabilistic Programs
概率推理的计算负担仍然是将概率程序设计语言应用于感兴趣的实际问题的障碍。在这项工作中,我们提供了一个有效的精确推理的语义和算法的基础上离散值有限域强制概率程序。我们利用和推广高效的推理过程贝叶斯网络,利用网络的结构分解推理任务,从而避免了完整的路径枚举。要做到这一点,我们首先编译概率程序的符号表示。然后,我们适应技术的概率逻辑编程和人工智能社区,以执行推理的符号表示。我们形式化我们的方法,证明它的声音,并对现有的精确和近似推理技术进行实验验证。我们表明,我们的推理方法是有竞争力的推理过程专门为贝叶斯网络,从而扩大类的概率程序,可以实际分析。
2019-06-30 cs.PL
Causal Probabilistic Programming via Magmadic Do-Notation
提出基于非结合幺半群magmads的do-notation元语言,推导因果概率编程构造,实现因果概率编程的新途径。
2026-09-03 cs.LO cs.PL
Bounded Model Checking for Probabilistic Programs
在本文中,我们研究的适用性标准模型检验方法来验证属性的概率规划。由于标准概率程序的操作模型是一个潜在的无限参数马尔可夫决策过程,因此不可能直接适应现有技术。因此,我们提出了一个在飞行的方法,操作模型是连续创建和验证通过一步一步的执行程序。这种方法能够考虑许多概率程序的关键特征:非确定性和条件作用。我们讨论的限制,并证明了几个基准的可扩展性。
2016-07-26 cs.PL
Bit Blasting Probabilistic Programs
针对现有概率编程语言对混合概率程序支持不足的问题,提出基于bit blasting的离散化近似推理算法,构建HyBit系统,在精度无损的前提下实现高效推理,性能优于现有采样与符号推理方法。
2024-04-30 cs.PL
Abstract Interpretation as a Programming Language
在David Schmidt的博士论文中,他探索了指称语义作为程序设计语言的使用。这是一项努力的一部分,不仅将形式语义视为规范,而且还将其视为编译器生成器的解释器和输入。语义本身可以被看作是一个程序,人们可以检查不同的编程风格和表示状态的方法。抽象解释主要是一种用于推导和规范程序分析的技术。与指称语义一样,我们也可以将抽象解释视为程序并检查其实现。本文的主要重点是表明,高阶严格性分析的结果可以更普遍地用作格上高阶函数的不动点算子,从而提供了一种立即实现一大类抽象解释的技术。此外,它可以被视为一种编程范式,并用于以循环风格编写程序。
2013-09-20 cs.PL
Running Probabilistic Programs Backwards
许多概率程序设计语言允许程序在约束条件下运行,以便执行贝叶斯推理。在约束条件下运行程序可以实现其他用途,如罕见事件模拟和概率验证-除了所有这些概率语言都必须受到限制,因为它们是根据贫乏的概率理论定义或实现的。测度论概率提供了一个更一般的基础,但它的一般性使得寻找计算内容变得困难。我们开发了一个测量理论的语义一阶概率语言与递归,解释程序作为功能,计算原像。原像函数通常是不可计算的,因此我们推导出一个抽象的语义。我们实现了抽象语义,并使用该实现进行贝叶斯推理,随机光线追踪(一种罕见的事件模拟),和概率验证的浮点误差范围。
2015-01-16 cs.PL
Stochastic Probabilistic Programs
Ben-Gurion University of the Negev(内盖夫本-古里安大学)
我们介绍了一个随机概率程序的概念,并提出了一个参考实现的概率编程设施,支持规范的随机概率程序和推理。随机概率程序允许直接规范和有效的推理模型与滋扰参数,噪声和不确定性。我们给出了几个随机概率程序的例子,并在模型说明和推理方面将这些程序与相应的确定性概率程序进行了比较。最后,我们讨论了开放的研究课题和相关工作。
2020-01-22 cs.LG cs.PL stat.ML
Conditioning in Probabilistic Programming
我们调查的语义复杂性的条件,概率规划的一个主要特点。我们提供了一个最弱的(自由)前置条件(w(l)p)的基本概率程序设计语言pGCL扩展条件的语义。我们证明了定量最弱(自由)的先决条件与条件(自由)期望回报的马尔可夫链,并表明语义条件是一个真正的保守扩展。我们提出了两个程序转换,完全消除任何程序的条件,并证明其正确性使用的w(l)p-语义。最后,我们展示了如何的w(l)p-语义可以用来确定条件概率的参数匿名协议,并表明,一个归纳的w(l)p-语义的条件在非确定性的概率程序不存在。
2015-04-01 cs.PL
Modular Runtime Complexity Analysis of Probabilistic While Programs
我们关心的是平均情况下运行时的复杂性分析的一个原型的命令式语言赋予原语的采样和概率选择。从非概率程序的模块化资源分析的已知方法的启发,我们研究如何获得概率程序的模块化运行时分析。
2019-08-23 cs.LO cs.PL
Bounded Expectations: Resource Analysis for Probabilistic Programs
本文提出了一种新的静态分析,用于推导概率程序的期望资源消耗上界。分析是全自动的,并得出符号界限,是多元多项式的输入。新技术结合了手动状态的最先进的推理技术的概率程序与一个有效的方法,自动资源约束分析的确定性程序。它可以被看作是自动摊销资源分析(AARA)到概率程序的扩展,以及基于最弱前提条件的概率程序的手动推理的自动化。因此,在许多情况下,边界推断可以减少到现成的LP求解,并且如果自动化失败,则自动导出的边界可以与标准程序逻辑交互地扩展。在现有工作的基础上,证明了分析的合理性相对于一个操作语义,是基于马尔可夫决策过程。该技术的有效性证明了原型实现,用于自动分析39个具有挑战性的概率程序和随机算法。实验结果表明,所得到的边界中的常数因子是非常精确的,甚至对许多程序是最优的。
2017-11-24 cs.PL
Program Analysis of Probabilistic Programs
University of Edinburgh(爱丁堡大学)
概率编程是一个不断发展的领域,它通过将概率建模与概率推理分离,努力使统计分析更容易获得。在实践中,这种脱钩是困难的。没有一种推理算法可以用作同时可靠、高效、黑盒和通用的概率编程后端。可能的程序设计语言通常选择一个算法来应用于给定的问题,从而继承其局限性。虽然已经做了大量的工作,以形式化的概率编程和提高推理效率,很少有工作,利用现有的程序结构,通过正式分析,以更好地利用底层推理算法。本文提出了三种新的技术(静态和动态),旨在提高概率规划使用程序分析。这些技术分析一个概率程序,并对其进行调整,以使推理更有效,有时是以一种单调乏味或不可能手工完成的方式进行的。
2022-04-14 cs.LG cs.PL stat.ML
Expected-Cost Analysis for Probabilistic Programs and Semantics-Level Adaption of Optional Stopping Theorems
在这篇文章中,我们提出了一个语义级的可选停止定理的适应,素描的预期成本分析作为其应用,并调查不同的变种的可选停止定理,已被用于概率程序的静态分析。
2021-03-30 cs.PL
On Propositional Program Equivalence (extended abstract)
本文从带保护的Kleene代数与测试的视角,讨论命题程序等价性的最新进展,该等价性在抽象语句语义后可判定且实践可行。
2025-07-10 cs.PL
Proving Expected Sensitivity of Probabilistic Programs with Randomized Variable-Dependent Termination Time
程序敏感性(也称为Lipschitz连续性)的概念规定程序输入的变化会导致程序输出成比例的变化。对于概率程序,这个概念自然地扩展到期望灵敏度。以前的方法开发了一个关系程序逻辑框架,用于证明概率while循环的预期灵敏度,其中迭代次数是固定的和有界的。在这项工作中,我们考虑概率while循环的迭代次数不是固定的,而是随机的,并取决于初始输入值。我们提出了一个合理的方法来证明预期的敏感性,这样的程序。我们的声音方法是基于鞅的,可以通过现有的鞅合成算法自动化。此外,我们的方法是组合的,而循环的顺序组成下一个温和的侧条件。我们证明了我们的方法的有效性,从赌徒的破产,随机混合动力系统和随机梯度下降几个经典的例子。我们还提出了实验结果表明,我们的自动化方法可以处理各种概率的程序在文献中。
2019-10-28 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
Automating Abstract Interpretation of Abstract Machines
静态程序分析对于人们编写程序所使用的任何程序设计语言来说都是一种有价值的工具。脚本语言在世界上的流行表明,程序设计语言解释器相对容易编写。这些语言的用户抱怨他们没有能力分析他们的代码,因此程序设计语言分析器并不容易编写。本文研究了一种从传统解释器生成抽象解释器的系统方法,称为抽象抽象机。由于技术、理论和语用问题,抽象口译员很难发展。技术问题包括工程数据结构和算法。我表明,适度和简单的变化,抽象机器的数学表示的结果,在1000倍更好的运行时间-只是几秒钟的中等大小的程序。在理论领域,抽象会使正确性难以确定。我提供了证明技术,通过将计算能力留给外部因素:分配来证明抽象计算的常规、下推和堆栈检查下推模型的正确性。即使我们不信任证明,我们也可以针对测试套件具体地运行模型,以更好地信任它们。在务实的领域,我表明,抽象的抽象机器的系统过程是自动化的。我开发了一种类似于其他语义工程语言的用于表达抽象机器的元语言。该语言的特殊之处在于它提供了一个抽象分配的接口。语义保证,如果分配是有限的,那么语义是一个可靠的和可计算的近似的具体语义。
2015-04-29 cs.PL
A Fixed Point Iteration Technique for Proving Correctness of Slicing for Probabilistic Programs
本文提出并探究一种用于证明程序转换正确性的非标准起始点不动点迭代技术,阐述其所需引理并说明在概率程序切片中的应用方式。
2024-12-10 cs.PL
Sound Interval-Based Synthesis for Probabilistic Programs
针对概率程序自动选择难题,提出类型系统与类型导向合成算法,结合启发式搜索,在文献程序上优于随机搜索和DaPPer,尤其复杂程序。
2025-07-09 cs.PL
Abstracting Runtime Heaps for Program Understanding
现代编程环境提供了广泛的支持,检查,分析和测试程序的基础上的算法结构的程序。不幸的是,对在执行期间检查和理解运行时数据结构的支持通常受到更多限制。本文提供了一种通用的技术来抽象和总结整个运行时堆。我们描述了抽象堆模型和相关的算法,用于将具体堆转储转换为相应的抽象模型,以及用于合并,比较和计算抽象模型之间的变化的算法。抽象模型旨在强调有关基于堆的数据结构的高级概念,如形状和大小,以及堆结构之间的关系,如共享和连接。我们通过构建一个内存分析器来展示抽象堆模型的实用性和计算易处理性。然后,我们使用这个工具来检查,查明和纠正来自DaCapo的一套程序的内存膨胀的来源。
2012-01-06 cs.PL cs.SE
Modular Verification for Almost-Sure Termination of Probabilistic Programs
在这项工作中,我们考虑几乎肯定终止问题的概率程序,询问是否一个给定的概率程序终止概率为1。可伸缩的程序分析方法通常依赖于模块化作为其理论基础。在非概率程序中,Floyd-霍尔逻辑的经典变式规则(V-规则)为模块化分析提供了基础。将该规则扩展到概率程序的几乎确定终止是相当棘手的,并且在[Fioriti and Hermanns 2015]中提出了一个概率变体。虽然所提出的概率变量谨慎地解决了可积性的关键问题,我们表明,所提出的模块化规则仍然是不健全的几乎肯定终止的概率程序。除了建立以前的规则的不健全,我们的贡献如下:首先,我们提出了一个健全的模块规则几乎确定终止的概率程序。我们的方法是基于一个新的概念下降上鞅。其次,对于算法方法,我们考虑下降上鞅是线性的,并表明它们可以在多项式时间合成。最后,我们提出了各种基准测试和几个自然的例子,模拟各种类型的嵌套而循环的概率程序的实验结果,并证明我们的方法是能够有效地证明其几乎肯定的终止属性。
2019-08-12 cs.LO cs.PL
Static Analysis for Probabilistic Programs
概率编程是统计机器学习的一个强大的抽象。将静态分析方法应用于概率程序,可以优化学习过程,自动验证模型的性质,改善用户编程界面。这个领域的静态分析的概率规划(SAPP)是年轻的和无组织的,由一个星座的技术与各种目标和限制。这项工作的主要目的是在一个组织结构和背景下综合SAPP领域的主要贡献。我们提供了技术背景的静态分析和概率编程,建议概率程序设计语言的功能分类法,并分析在SAPP领域的主要思想的适用性。我们的结论是,虽然目前的概率程序的静态分析技术有实际的局限性,有一些未来的方向具有很大的潜力,以改善统计机器学习的状态。
2019-09-10 cs.LG cs.PL stat.ML
Concentration-Bound Analysis for Probabilistic Programs and Probabilistic Recurrence Relations
分析概率程序和随机算法是计算机科学中的经典问题。在随机过程分析中的第一个基本问题是考虑期望或平均值,另一个基本问题是考虑浓度界限,即表明偏离平均值的大概率很小。同样,在概率程序和随机算法中,期望终止时间/运行时间及其集中度的分析也是基本问题,本文主要研究概率程序的集中度和随机算法的概率递归性.对于概率规划,获得浓度界的基本技术是考虑鞅并应用经典的Azuma不等式。对于随机算法的概率递归,卡普的经典“食谱”方法,这是类似于递归的主定理,是标准的方法来获得浓度界。在这项工作中,我们提出了一种新的方法,通过合成指数上鞅的概率规划和概率递归关系的浓度界。对于概率程序,我们提出了在几种情况下合成这种上鞅的算法。我们还表明,我们的方法可以得到更好的浓度范围比简单地应用经典的Azuma不等式在文献中考虑的各种概率程序。对于概率递归,我们的方法可以得到更严格的界限比卡普的成熟的方法对经典算法。此外,我们表明,我们的方法可以得到的界限可比的最佳界快速排序,由McDiarmid和海沃德提出。我们还提出了一个原型实现,可以自动推断这些界限
2020-08-12 cs.DS cs.PL
Translating Recursive Probabilistic Programs to Factor Graph Grammars
University of Notre Dame(圣母大学);Indiana University(印第安纳大学)
对于概率程序来说,使用条件句来表达模型中的替代子结构,使用循环(递归)来表达模型中的重复子结构是很自然的。因此,概率程序与条件和递归激发了人们对有效和一般推理的兴趣。因子图语法(FGG)生成一组因子图,这些因子图不需要全部被枚举以执行推理。我们提供了从具有条件和递归的一阶概率程序到FGG的保留语义的翻译。
2020-10-22 cs.LG cs.PL
Multi-Model Probabilistic Programming
Columbia University(哥伦比亚大学)
概率编程使得将概率模型表示为程序变得容易。然而,建立个体模型只是概率建模的一个步骤。概率建模更广泛的挑战是理解和导航替代模型的空间。目前还没有好的方法来表示这些替代模型的空间,尽管它们发挥着核心作用。我们提出了一个扩展的概率规划,让每个程序表示一个网络的相互关联的概率模型。我们给出了这些多模型的概率程序,收集有效的算法网络的模型操作,并建立在流行的概率程序设计语言斯坦顶部的一个例子实现的正式语义。这种模型网络表示打开了许多门,包括模型空间中的搜索和自动化,模型开发的跟踪和通信,以及显式建模器自由度以减轻p-hacking等问题。我们演示了自动模型搜索和模型开发跟踪使用我们的斯坦实现,我们提出了许多可能的应用。
2022-08-12 cs.LG cs.PL stat.ME
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
A Compilation Target for Probabilistic Programming Languages
University of Oxford(牛津大学)
通过创造性地使用标准化的操作系统功能,包括进程、分叉、互斥和共享存储器,可以用任何程序设计语言来实现诸如用于概率编程的顺序蒙特卡罗和粒子马尔可夫链蒙特卡罗的前向推理技术。利用这一点,我们已经定义,开发和测试的概率程序设计语言中间表示语言,我们称之为概率C,它本身可以被编译成机器码的标准编译器和链接到操作系统库产生一个有效的,可扩展的,便携式的概率编程编译目标。这为优化概率编程系统开辟了一条新的硬件和系统研究路径。
2014-07-10 cs.AI cs.PL stat.ML
Computing Abstract Distances in Logic Programs
抽象解释是执行逻辑程序的静态分析的一种成熟的技术。然而,选择提供最佳精度-成本权衡的抽象域、加宽、固定点等仍然是一个悬而未决的问题。这在很大程度上是因为在测量和比较不同分析的精度方面存在挑战。我们提出了一种新的方法来测量这样的精度,定义在抽象域的距离,并将它们扩展到一个给定的程序的整个分析之间的距离,从而允许在不同的分析精度进行比较。我们调查和扩展现有的建议,在格或抽象域的距离和度量,我们提出了一些常见的域中使用的逻辑程序分析的度量,以及扩展这些度量的空间,整个程序分析。我们在CiaoPP框架内实现这些指标,并将它们应用于衡量基准和现实程序上不同分析的精度。
2019-07-30 cs.LO cs.PL
Generating Functions for Probabilistic Programs
本文研究了离散概率规划推理中生成函数(GF)在程序变量上的编码度量的使用。为此,我们定义了一个指称的GF-Transformer语义的概率while程序,并表明它实例化Kozen的种子分布Transformer语义。然后我们研究了GF在程序分析中的有效使用。我们表明,可表达的GF使检查超不变量的计算机代数工具,它们可以用来确定终止概率。最后,本文描述了一类-可能是无限状态-程序的语义是一个合理的GF编码离散相位型分布。
2020-07-13 cs.LO cs.PL
Collecting Graphical Abstract Views of Mercury Program Executions
程序执行监视器是收集和抽象有关程序执行的信息的程序。“collect”操作符是一个高级的通用原语,它允许用户实现自己的监视器。“收集”建立在水星轨迹之上。在以前的工作中,我们已经演示了如何使用该操作符来有效地收集有关Mercury程序执行的各种统计信息。在本文中,我们通过提供更多的监视器示例,进一步展示了“collect”的表达能力和有效性。特别是,我们将展示如何实现监视器,生成图形抽象的程序执行,如证明树,控制流图和动态调用图。我们展示了这些抽象如何可以很容易地修改和适应,因为这些监视器只需要几十行代码。这些抽象旨在作为软件可视化工具的前端。虽然“collect”目前是在Mercury跟踪之上实现的,但它的基本概念都不依赖于Mercury,它可以在任何程序设计语言的任何跟踪程序之上实现。
2000-10-31 cs.PL cs.SE
TWAM: A Certifying Abstract Machine for Logic Programs
类型保持(或类型化)编译使用类型化派生来证明编译的正确性。我们为Prolog的简单类型方言设计并实现了一个类型保留编译器,我们称之为T-Prolog。我们的方法的关键是一个新的认证抽象机,我们称之为类型沃伦抽象机(TWAM)。TWAM有一个足够强的依赖类型系统来指定逻辑框架LF中的逻辑程序的语义。我们提出了一个合理性元定理,它构成了部分正确性保证:良好类型的程序实现的逻辑程序指定的类型。这个元定理证明了我们的设计和实现的证明编译器从T-Prolog到TWAM。
2018-01-01 cs.LO cs.PL
Probabilistic Programming Meets Automata Theory: Exact Inference using Weighted Automata
RWTH Aachen University(亚琛工业大学)
本文提出利用加权自动机实现有限概率程序的精确推断,通过将变量分布编码为自动机来计算后验分布。
2025-12-15 cs.FL cs.PL
Transforming Probabilistic Programs for Model Checking
Columbia University(哥伦比亚大学);Utrecht University(乌得勒支大学)
概率编程非常适合可靠和透明的数据科学,因为它允许用户用高级语言指定他们的模型,而不必担心如何拟合模型的复杂性。概率程序的静态分析通过自动化耗时且易出错的任务,为实现高级风格的编程提供了更进一步的机会。我们将静态分析应用于概率程序,以自动化两个关键模型检验方法的大部分:先验预测检验和基于仿真的校准。我们的方法将指定密度函数的概率程序转换为高效的前向采样形式。为了实现这种转换,我们提取一个因素图从概率程序使用静态分析,生成一组建议有向无环图使用SAT求解器,选择一个图形,这将产生可证明正确的采样代码,然后生成一个或多个采样程序。我们允许最少的用户交互,以扩大应用范围,超出单独使用静态分析的可能范围。我们提出了一个实现针对流行的斯坦概率程序设计语言,自动化大部分的强大的贝叶斯工作流程的概率编程用户广泛的社区。
2020-08-21 cs.AI cs.LG cs.PL
Oblivious Probabilistic Outcome Logic: Verifying Probabilistic Programs with an Oblivious Adversary
Cornell University(康奈尔大学);New York University(纽约大学)
研究概率程序中由遗忘对手控制不确定性的推理问题,引入opOL逻辑,基于结果逻辑和概率分离逻辑建模,为随机和非确定性结果分析及证明终止性提供规则,经案例研究测试表现力并在Lean 4中实现机械化。
2026-07-21 cs.LO cs.PL
The Program Logic of Abstract Interpretation
Department of Mathematics, University of Padua(帕多瓦大学数学系);Department of Computer Science, University of Pisa(比萨大学计算机系)
本文提出APPL逻辑,统一了Hoare逻辑、错误逻辑和超Hoare逻辑变体,提供抽象程序逻辑的理论基础,支持多种抽象域。
2026-11-09 cs.LO cs.PL
Refuting Equivalence in Probabilistic Programs with Conditioning
针对带 observe 与 score 的概率程序,本文提出基于 weighted restarting 变换的等价性反驳方法,可全自动给出可证明正确的不等价判定。
2025-01-11 cs.FL cs.PL
Weakest Precondition Reasoning for Expected Run-Times of Probabilistic Programs
本文提出了一个wp风格的演算获得的概率程序的期望运行时间的界限。它的应用包括确定(可能无限)的期望终止时间的概率程序和证明积极的几乎必然终止-一个程序终止概率1在有限的期望时间?我们提供了几个证明规则的运行时间的循环,并证明了一个简单的操作模型的方法的可靠性。我们表明,我们的方法是一个保守的扩展Nielson的方法推理确定性程序的运行时。我们分析了一些示例程序的预期运行时间,包括一维随机游走和优惠券收集器问题。
2017-11-28 cs.LO cs.PL
Automatic Modular Abstractions for Linear Constraints
提出了一种通过抽象解释自动生成用于静态分析的抽象Transformers的方法。该方法的重点是对程序的线性约束,操作合理的,真正的或浮点变量,并包含线性分配和测试。除了无循环代码,同样的方法也适用于获得最小不动点作为前提条件的函数,这允许分析循环和递归函数。我们的算法是基于新的量词消去和符号操作技术。给定一个抽象域的规范和一个程序块,我们的方法自动输出相应的抽象Transformer的实现。因此,它是程序转换的一种形式。我们工作的动机是数据流同步程序设计语言,用于构建控制命令嵌入式系统,但它也适用于命令式和函数式编程。
2008-11-02 cs.LO cs.PL
Exact Probabilistic Inference Using Generating Functions
概率程序通常是描述后验概率分布的正态程序。它们本质上编码了随机算法,长期以来一直是现代机器学习和近似计算的核心。我们探索了生成函数的理论[19],并研究了它在概率程序的精确定量推理中的用途。重要的主题包括程序语义的精确表示[13],证明精确的程序等价性[5],以及--作为我们在这个扩展摘要中的主要焦点--精确的概率推理。在概率编程中,推理的目的是导出程序的后验分布。与近似推断相反,推断精确分布有几个好处[8],例如,不损失精度,对符号参数的自然支持,以及对具有某些结构的模型的效率。然而,精确的概率推理是一项众所周知的艰巨任务[6,12,17,18]。挑战主要来自三个程序结构:(1)无界while循环和/或递归,(2)无限支持分布,(3)条件反射(通过后验观测)。我们提出了我们正在进行的研究,在解决这些挑战(重点是空调)利用生成函数,并显示其潜力,促进精确的概率推理离散概率程序。
2023-02-12 cs.DM cs.LO cs.PL
Verifying Asynchronous Event-Driven Programs Using Partial Abstract Transformers (Extended Manuscript)
我们解决的问题,分析异步事件驱动的程序,并发代理通过无界消息队列进行通信。这类程序的安全验证问题是不可判定的。在本文中,我们提出了一种技术,结合了有界探索的收敛性测试:如果序列的某些抽象的可达状态,增加队列界限k,收敛,我们可以证明任何属性的程序,是由抽象保存。如果抽象状态空间是有限的,则收敛是有保证的;挑战在于捕捉它发生的点k_max。我们进一步证明了如何简单的不变量制定的具体域可以用来消除虚假的抽象状态,否则会阻止序列收敛。我们已经实现了我们的技术的P程序设计语言的事件驱动程序。我们的实验表明,序列的抽象往往完全自动收敛,在困难的情况下,最小的设计师支持的形式顺序可证明的不变量,这发生在一个值的k_max足够小,让该方法在实践中取得成功。
2019-05-24 cs.FL cs.LO cs.PL
Particle Gibbs with Ancestor Sampling for Probabilistic Programs
Columbia University(哥伦比亚大学);University of Oxford(牛津大学)
粒子马尔可夫链蒙特卡罗技术是目前最先进的概率程序推理方法之一。这些技术的一个缺点是,它们依赖于重要性恢复,这导致退化的粒子轨迹和低有效的样本量的变量在程序中早期采样。我们在这里开发了一种形式主义,以适应祖先rescue,一种技术,减轻粒子退化,概率编程设置。我们提出的实证结果表明,非平凡的性能增益。
2015-02-09 cs.AI cs.PL stat.ML
An asymptotic analysis of probabilistic logic programming, with implications for expressing projective families of distributions
LMU München(慕尼黑大学)
概率逻辑编程是统计关系型人工智能的重要组成部分,其中将逻辑和概率方法结合在一起,在不确定性环境中推理和学习关系域。然而,跨可变域大小的统计关系表示的行为是复杂的,并且将推理和学习扩展到大型域仍然是一个重大挑战。近年来,域大小依赖、提升推理和从抽样子群体中学习之间出现了联系。统计关系表示的渐近行为已经受到审查,和投影被调查的最强形式的域大小的依赖,其中查询边际是完全独立的域大小。在这篇文章中,我们证明了每一个概率逻辑程序下的分布语义是渐近等价于一个非循环的概率逻辑程序只包括确定条款的概率事实。我们的结论是,每一个概率逻辑程序诱导一个投影族的分布,实际上是处处等价于一个程序从这个片段,我们调查的后果,为投影族的分布概率逻辑程序表示。为了方便应用的经典结果从有限模型理论,我们引入了抽象的分布语义,定义为一个任意的逻辑理论概率事实。这弥合了与概率逻辑编程基础的分布语义之间的差距。在这种表示中,确定性逻辑程序对应于无量词理论,使得渐近量词消去结果可用于概率逻辑编程的设置。本文件正在考虑被TPLP接受。
2021-08-18 cs.AI cs.LO cs.PL
Bayesian Synthesis of Probabilistic Programs for Automatic Data Modeling
Massachusetts Institute of Technology(麻省理工学院)
我们提出了新的技术,自动构建数据分析,解释和预测的概率程序。这些技术与概率领域特定的数据建模语言一起工作,这些语言捕获广泛类别的数据生成过程的关键属性,使用贝叶斯推理在给定观察数据的情况下在这些建模语言中合成概率程序。我们提供了一个精确的配方贝叶斯合成自动数据建模,确定了充分的条件所产生的合成过程是健全的。我们还推导出一般类的合成算法指定的概率上下文无关文法的特定领域的语言,并建立健全的方法,这些语言。我们应用的技术,自动合成的概率程序的时间序列数据和多元表格数据。我们展示了如何分析合成程序的结构,以计算感兴趣的关键定性属性,潜在的数据生成过程表现出这些属性的概率。其次,我们翻译概率程序在特定领域的语言概率程序的风险投资,一个通用的概率编程系统。然后执行翻译后的Venture程序,以获得新的时间序列数据和新的多变量数据记录的预测。实验结果表明,我们的技术可以准确地推断多个真实世界的数据集的定性结构,并在预测和预测新数据的标准数据分析方法。
2019-07-14 cs.AI cs.LG cs.PL
An Introduction to Probabilistic Programming
University of Amsterdam(阿姆斯特丹大学);University College London(伦敦大学学院);Alan Turing Institute(艾伦·图灵研究所);KAIST(韩国科学技术院);University of British Columbia(不列颠哥伦比亚大学)
这本书是概率编程的研究生水平介绍。它不仅为任何希望使用概率编程系统的人提供了一个全面的背景,而且还介绍了设计和构建这些系统所需的技术。它针对的是那些对概率机器学习和编程语言有本科水平理解的人,或者理想情况下,对概率机器学习和编程语言都有理解的人。我们从基于模型的推理的讨论开始,并解释为什么条件作用是概率机器学习和人工智能领域的核心基础计算。然后,我们介绍了一阶概率编程语言(PPL),其程序对应于图形模型与一个已知的,有限的,一组随机变量。在这方面的PPL,我们介绍了基本的推理算法,并描述了它们是如何实现的。然后,我们转向高阶概率编程语言。在这种语言中的程序可以定义具有动态计算图的模型,其可以不在每次执行中实例化相同的随机变量集合。推理需要通过反复评估程序来生成样本的方法。这种语言的基础算法进行了讨论的上下文中的程序执行和推理控制器之间的接口。最后,我们考虑概率和可微规划的交集。我们首先讨论自动微分,以及如何使用它来实现基于哈密顿蒙特卡罗的高效推理方法。然后,我们讨论了基于梯度的极大似然估计在使用神经网络参数化的程序中,如何通过学习神经近似来摊销推理到程序后验,以及语言特征如何影响深度概率编程系统的设计。
2021-10-19 cs.AI cs.LG cs.PL