q)|y<$Pr(X<$y)>q(P1<$P2)|y P1|y P2|y(P1至P2)|y P1|y P2|y358R. Rand,S.Zdancewic/电子笔记理论计算机科学319(2015)351p∗2 2 21222P→D{P[y|}c{P}{D[y|}c{D([y|[|D是非概率的,{P([y|[|)}whileydoc{P<$[<$y|}图五. while规则对于子分布的推理,我们采取将两个子分布都缩放到完全分布的方法,允许我们正常地推理而不必限制我们的逻辑。我们通过缩放算子实现这一点1将前置条件和后置条件中的所有概率按比例放大p或11−p其中p是守卫的概率既然我们子分布(不仅仅是子断言),我们需要以下引理:引理6.2对于任何Θ 1,Θ 2,其中Pr θ1(y)= 1且Pr θ2(y)= 0,[P1|y](Θ 1<$p Θ 2)当且仅当[1<$P](Θ1)引理6.3对于任何Θ 1,Θ 2,其中PrΘ1(y)= 1且PrΘ2(y)= 0,[P2|<$y](Θ 1p当且仅当[P](Θ)(1−p)我们证明,如果P |y保持完全分布,则p P保持其中y为真的子分布。然后我们就可以分别推理c1和c2对这些分布 为了组合这两个后置条件,我们将|y和|是的。(That是,我们将保护y的值与所有概率表达式结合,确保它们不重叠)。为了防止形式为P(yy)=p的陈述出现在组合后置条件中,我们限制y在c1或c2中被重新赋值。读者可以观察到VPHL的规则是标度不变的这表明,我们可以简单地对P1进行推理,而不是对P1和P2进行缩放|y和P 2|分开。事实上,如果有一些小的限制,这样一个如果规则将是合理的,我们将在扩展文件中讨论这个规则7while规则为了解释和证明我们的While规则的形式(见图5),让我们考虑经典的霍尔逻辑While规则,以及为什么它对概率程序失败{Py}c{P}{P}whileydoc{P<$y}考虑以下霍尔三元组:{Pr(yJ)= 1<$[y→ yJ|}whileydo(yJ:= toss(1);y:=(yJ<$i5);i++){Pr(yJ)= 1<$[y→yJ|[|}R. Rand,S.Zdancewic/电子笔记理论计算机科学319(2015)3513592232j1J3有两个主要问题与推导这个三元组。第一个是在前提条件Pr(yJ)=1<$[y→yJ]中出现矛盾|[y|则Pr(y)= 且Pr(y)= 1。此外,后置条件为假- 如 果 初 始 i = 1 , 我 们 运行 循 环 5 次 , y j 为 真 的 概 率 为 2 − 5 = 1 。这说明,如果分布的不同分支遍历循环不同的次数,则不能保证概率不变量保持不变。因此,我们引入限制(图5),即y的值必须保持非概率性(即,[y|或[<$y|)在每个迭代循环完成时,确保如果循环终止,所有分支同时终止。或者更确切地说,所有分支都应该同时终止,但我们遇到了一些困难:虽然P可能对给定的分布Θ1<$p Θ2成立,并且足以在运行c时保持P和y的确定性,但然而,我们有一个很好的非概率断言子集(也就是说,每个概率为零或一的断言)确实满足这个属性。引理7.1对于任何非概率断言P,P(Θ1<$p Θ2)蕴涵P(Θ1)且P(Θ 2)对任意p ∈(0,1)。因此,我们的While规则需要一个非概率不变量,它保留了与概率不变量一起展示的守卫的确定性。在实践中(与一般情况相反),这被证明是相当简单的,而且往往相当方便。例如,我们可能只需要证明我们的计数器确定性地在{0,1,.,n},并且y仅取决于i,例如当分析n顶点图上的随机游动时。我们分别推理主要的不变量,其中可能包括概率命题。8概率终止程序的推理再考虑一下第4节中的以下简单程序。y:= toss(2);ifythenx:=4else whiletdoskip我们称这个程序为cpartial。根据PrImp的操作语义,这个程序不会终止,因此{ P } c partial { Q }对于任何断言P和Q都是有效的然而,如果我们考虑对应于cpartial的真正概率程序(一个具有随机数和概率步骤的种子),我们知道Pr(x=4y)= 1在成功终止时。更一般地说,对于一个不重新分配y的任意else分支360R. Rand,S.Zdancewic/电子笔记理论计算机科学319(2015)351323如果else分支以概率1终止如果其他branch以概率y0终止我们知道:n∈(2,1) 否则这表明,如果我们有关于每个分支终止的概率的信息,我们可以将其与对每个分支的直接分析相结合,以得出结果的精确概率。这要求(1)每个分支以概率0或1终止,以及(2)每个分支独立分析,并具有自己的后置条件。现在我们注意到我们的逻辑的三个重要特征。(i) if语句的每个分支都有自己独立的派生(ii) if语句的后置条件显式地提到了保护的值(iii) While规则要求循环以概率0或1终止因此,有了简单的限制,如果语句上的守卫在程序中没有重新分配或通过霍尔逻辑推导中的后果规则消除5,我们可以将我们的逻辑与终止分析相结合,以精确地描述概率终止程序。考虑下面的例子,其中c1到c4是不修改y1,y2或y3并且不保证终止的程序:y1:= toss(p);y2:= toss(q);y3:=toss(r);如果y1,则ify2thenc1;x:=1elsec2;x:= 2其他ify3thenc3;x:= 3elsec4;x:= 4假设c1、c2、c3和c4容易被VPHL分析(即它们的while循环确定性地终止或循环),我们应该能够推导出以下后置条件:Pr(x = 1y1y2)= pqPr(x = 2 y2)= p(1 − q)∧Pr(x= 3y1y3)=(1−p)ry1y3)=(1−p)(1−r)现在想象一下,我们知道只有C3永远不会停止。则x取1、2和4的先验概率分别为pq、p(1−q)和(1−p)(1−r),对应于我们的后置条件中的值的先验概率[5]这种限制要求我们谨慎地管理推理的范围,以避免矛盾的断言。例如,如果一个分支是非终止的,我们可以使用While规则来导出false,从而得出关于程序的另一个分支的不正确断言。在我们可以将所有后续命令移动到If语句中的情况下,If规则的形式为我们确保了这种作用域。然而,在循环的一般情况下,作用域更难实施,并且留给逻辑的用户Pr(x= 4πy)=R. Rand,S.Zdancewic/电子笔记理论计算机科学319(2015)351361N11N程序循环是(1-p)r。在程序成功终止后x= 1,概率为pq1−(1−p)r 对于其他终止结果也是如此。另一方面,如果我们无法对结果的可能性得出任何结论。这在一般情况下,任何命题在程序终止时的概率直接取决于确实终止的分支的权重,从而减少了直接将概率分配给停机问题的问题。9扩展VPHL在我们使用VPHL验证一些示例程序之前,我们将介绍一些符号,这些符号将使我们的任务更容易。第一个是从均匀分布中提取。我们将“语法糖”定义为一系列投掷的语法糖:x:= ORM(1)x:=1x:=int n(n);ifuthenx:=Nelsex:= ORM(N−1)其中u是一个保留的布尔变量。我们可以证明相关的霍尔规则6x游离Px制服其中Px{P}x:= ORM(N){PN}是Py的类似物,其中[P(b)=p]xP(bNpNNP(b x = N)= 1。VPHL规范中缺少的另一个有用功能是在概率断言的右侧包含标识符的能力。这有一个明显的原因:概率断言指的是一个分布,该分布中的不同状态可以将给定的标识符映射到不同的值。 同时,一些标识符将在我们的程序中确定性地设置,我们可能会引用它们。我们可以将所需的断言表示如下:nk< N,Pr(i = k)= 1 →Pr(b)= f(k),其中b是任何布尔表达式,i是我们希望包含在概率中的标识符,f是我们希望依赖于i的实值函数。这里的泛量化器代表一系列的合取。类似地,我们希望能够说,标识符i确定性地取{1,2,.中的某个值。n}。我们把它写成i∈ {1,2,. n}是[i = 1]的简写|[i = 2|···|.上述两个结构都要求我们对i的可能值有一个上限,但这是经常发生的情况,就像我们分析的例子一样[6]这是为了说明我们原则上可以在逻辑中证明什么,尽管这个规则和给出的例子在Coq中没有得到验证362R. Rand,S.Zdancewic/电子笔记理论计算机科学319(2015)351N10模拟均匀分布作为我们的逻辑的一个简单证明,让我们尝试证明上面的霍尔逻辑规则。在一般情况下证明该规则需要在前提条件上的归纳和在N上的归纳。相反,让为了使用If规则,我们将u替换为u1和u2。(3)算法1return(1/3);如果u1,则x:=3其他u2:= toss(1/2)如果u2,则x:=2其他x:=1结束如果结束如果现在我们将尝试证明,对于形式为Pr(b)=p的原子命题P,{P}x:= P(N){Px}。在整个程序中,我们将隐式地使用结果规则将Pr(b)=p转换为Pr(b<$2= 2)=p或Pr(b)=p<$Pr(t 我们偶尔会通过箭头符号(→)来明确这一点。我们将子导子缩进并内联,这在霍尔逻辑分析中很常见:R. Rand,S.Zdancewic/电子笔记理论计算机科学319(2015)351363333算法2均匀推导{Pr(b)=p}return(1/3);{Pr(u1)=1/3<$Pr(b<$u1)=p/3<$Pr(b<$u1)=2p/3}如果u1,则{3/1 <$[Pr(b)= p/3]<$[u1|} → {P r(b 3 =3)= p}x:= 3{Pr(bx= 3)=p}其他{3/2 <$[Pr(b)= 2 p/3]<$[<$u1|} → {Pr(b)= p}intn(1/2);{Pr(u2)=1/2<$Pr(b<$u2)=p/2<$Pr(b<$u2)=p/2}如果u2,则{Pr(b)=p}x:= 2{Pr(b<$x= 2)=p}其他{Pr(b)=p}x:= 1{Pr(b<$x= 1)=p}end if{Pr(b<$x= 2<$u2)=p/2<$Pr(b<$x= 1<$u2)=p/2}end if{Pr(bx=3u1)=p/3Pr(b注意ui我们原则上只能得出结论,Pr(b<$x = 1)=1<$Pr(b<$x = 2)=1<$Pr(b<$x = 3)=1,将P(b)=p一直带到后置条件,然后注意到三个合取项加起来就是b本身的概率,但通常我们希望保持警卫的值,我们在本文的扩展版本中,我们展示了如何通过一个不需要缩放的替代If规则来简化这个证明我们通过分析随机游走进一步说明While规则的使用11相关工作在Coq中表示分布的最重要的工作是由ALEA项目[18]基于[1]的工作。ALEA为单位区间和分布的多个概念引入了自己的公理库。ALEA被设计为直接推理概率程序,并形成了Certicrypt加密工具的基础[4]。在本文中,我们的目标比ALEA的目标要有限得多,我们的目标是表示,即具有有限支持的离散分布。对于这些,一个简单的基于树的对象结构被证明是足够的,并且(非常)容易推理。我们的单位区间是基于Coq实数库,限制为[0, 1]。确定性程序的霍尔逻辑是在C.A. R.霍尔[12]。第一次尝试将这种推理方式扩展到364R. Rand,S.Zdancewic/电子笔记理论计算机科学319(2015)3512344244概率程序出现在Ramshaw的论文[ 20 ]中{P|b} c1{Q1}{P| <$b}c2{Q2}{P}ifbthenc1elsec2{Q1+Q2}其中|b(发音为“A restricted to b“)将谓词分解为“频率”(或子分布),其中b为真,b为假。结论中的加运算符意味着分布的一部分满足Q1,另一部分满足Q2。关于子分布的推理带来了许多我们试图避免的困难,包括Pr(t)= 1在任何严格子分布中都不成立的限制。Den Hartog和De Vink操作员:{b?P}c1{Q1}{<$b?P}c2{Q2}{P}ifbthenc1elsec2{Q1+Q2}有趣的是,?它主要定义在状态分布上,而不是断言。修改他们的例子(使用多集符号),如果Θ ={(θ1,1),(θ2,1),(θ3,1)},其中θ1和θ3满足b,则b?Θ ={(θ1,1),(θ3,1)}和<$b?Θ ={(θ2,1)}。然后B?P(Θ)断言存在状态ΘJ使得b?ΘJ = Θ和P(Θ)。如何将这一点与其他逻辑结合起来还不清楚,但这需要涉及削弱。同样,后置条件涉及两个子分布。应用pH While规则有两个充分的条件:要么循环是“终止的”(保证在所有状态上终止),要么是“闭合的”,这意味着每次迭代终止的概率有一个下限。虽然第一个条件似乎难以保证,但后者允许我们对PrImp范围之外的一系列程序进行推理。另一方面,它有一个重要的局限性,即它不能推理潜在的非终止程序。Chadha等人。[6]采用了一种类似于我们的方法来处理没有While循环的语言,并证明了它们逻辑的完整性。他们对Toss规则采取了一种有趣的方法,就像赋值规则一样,Toss规则要求我们以后置条件的形式重写前置条件。例如,我们使用以下三元组来获得抛硬币时的后置条件P(y)=1,偏置三分之一:121 1 1{3P(t)+3P(f)=3}y:= toss(3){Pr(y)=3}。考虑到标识符也不能出现在这里的前提条件中(不像赋值,我们可以赋值x:=x+1),这它们的If规则采用以下形式:{P1}c1{Pr(X)=p1}{P2}c2{Pr(X)=p2}{P1/b<$P2/<$b}ifbthenc1elsec2{Pr(X)=p1+p2}R. Rand,S.Zdancewic/电子笔记理论计算机科学319(2015)351365P/B类似于我们的P|y,在断言中的所有概率项中插入Rbb。然而,子断言没有缩放,相反,我们再次在子概率空间中对它们进行推理 为了允许我们合并后置条件,它包括了一个重要的限制,即两个分支的后置条件必须引用相同的概率-通常这需要显著的弱化。为了推导出一个复杂的后置条件,我们需要反复应用If规则,并通过合取和析取规则连接结果有趣的是,这个限制该版本使用了一个替代的If命令,该命令接受一个免费的布尔标识符,并根据哪个分支将其设置为t或f。这允许形式P1/y<$P2/<$y(其中y是新的标识符)的后置条件,代价是非标准的If规则和新标识符的扩散在相关的形式系统中也做了大量的工作,包括概率保护命令语言[17](在HOL 4[13]和Isabelle/HOL [8]中形式化),动态逻辑[11,15]和带有测试的Kleene代数[16]。我们建议读者参考Vasquez et al.[22]对概率霍尔逻辑和pGCL进行了比较,并与Chadha等人的相关工作部分进行了比较。[6]对概率验证方法进行最后,与上面提到的Certicrypt项目相关[4],EasyCrypt加密工具[2]基于两个逻辑系统:pRHL,用于同时推理两个程序的概率关系Hoare逻辑和pHL,用于推理单个程序的概率Hoare逻辑。在Barthe等人[3]中介绍,pRHL基于BentonpHL(在Easy- crypt教程[2]和其他地方简要讨论过)从概率方面解释了从一个状态到另一个状态的转换Easycrypt演示了概率Hoare逻辑在密码设置中的实用性。12今后工作PrImp和VPHL都受到设计的限制。PrImp表达式仅限于布尔和自然数;为了便于分析,我们VPHL同样受到潜在的量化器将允许我们表达关键的想法,如独立性:A和B在Θ i中独立阿尔普,qs.t. Pr(A)=p<$Pr(B)=q<$Pr(A<$B)=pq.VPHL的目的是为概率Hoare逻辑的进一步研究及其应用提供基础。它是可扩展的,这意味着我们可以在不影响语言的情况下添加新规则。新的霍尔规则将分为两类:核心规则和派生规则。核心规则是指在霍尔逻辑中是合理的,但在现有规则的上下文中不是多余的。任何新的核心规则在形式上都可能是类似的366R. Rand,S.Zdancewic/电子笔记理论计算机科学319(2015)351在[6]中的规则。他们会强调完整性而不是可用性,并创建一组可用于推导任何有效Hoare三元组的规则派生规则是可以使用来自逻辑的现有规则派生的规则。尽管从严格意义上讲,这些规则是多余的,但它们使我们能够有效地、直观地推理程序。将这些规则添加到我们的逻辑中可能会对其可用性产生重大影响。在本文中,我们我们设想了一系列用于各种概率结构的规则,扩展了我们对上面的CNORM规则所做的工作。有许多领域,包括密码学,隐私,机器学习和随机算法,这需要正式的分析方法,以及相应的领域特定逻辑,可以针对这些问题进行定制。VPHL应该为今后的工作提供一个坚实的基础引用[1] Audebaud,P.和C. Paulin-Mohring,Proofs of Randomized Algorithms in Coq,Science of ComputerProgramming74(2009),pp. 568-589。[2] Barthe,G.,F. 迪普雷苏瓦湾格雷瓜尔角昆茨湾S. chlobin和P.- Y. Strub,Easycrypt:Atutorial,in:Foundations of Security Analysis and Design VII,Springer,2014 pp. 146比166[3] Barthe,G.,B. G r'egoire,S. Heraud和S. Z. B'eguelin,计算机辅助加密程序的安全性,在:密码学进展-密码学PTO 2011年,施普林格,2011年71比90[4] Barthe,G.,B. G r′egoire和S. ZanellaB'eguelin,Code-bas edcrypt ographicproofs的F ormal certification,in:Proceedings of the 36th Annual ACM SIGPLAN-SIGACT Symposium on Principles of ProgrammingLanguages,POPL '09(2009),pp. 90比101[5] 本顿,N., 用于静态分析和程序转换的简单关系正确性证明,第31届ACM SIGPLAN-SIGACT Symposiumon Principles of Programming Languages,POPL14-25[6] 查达河,L. Cruz-Filipe,P. Mateus和A. Sernadas,Reasoning about probabilistic sequentialprograms,Theoretical Computer Science379(2007),pp.142-165[7] 查达河,P. Mateus和A. Sernadas,Reasoning about states of probabilistic sequential programs,in:Computer Science Logic,Springer,2006,pp.240-255[8] Cock,D.,在Isabelle中使用pGCL验证概率正确性,在:第7次系统软件验证会议,悉尼,澳大利亚,2012年,第100页。1比10[9] Coq开发团队,http://coq.inria.fr/doc网站。[10] Den Hartog,J.和E.P. de Vink,《使用Hoare类逻辑的概率程序》,国际计算机科学基础杂志13(2002),pp.315-340[11] Feldman , Y. A.和 D. Harel, 概 率 动 态 逻 辑 , 在 : 第 十 四 届 ACM 计 算 理 论 研 讨 会 论 文 集 , STOC'82(1982),pp. 181-195.[12]霍尔角A. R.,计算机程序设计的公理基础,ACM通信12(1969),pp. 576-580。[13] Hurd,J.,A. McIver和C. Morgan,Probably guarded commands mechanically in HOL,TheoreticalComputer Science346(2005),pp.96比112[14] Kozen,D.,Semantics of probabilistic programs,Journal of Computer and System Sciences22(1981),pp. 328-350[15] Kozen,D.,A probabilistic pdl,Journal of Computer and System Sciences30(1985),pp.162-178。R. Rand,S.Zdancewic/电子笔记理论计算机科学319(2015)351
下载后可阅读完整内容,剩余1页未读,立即下载
- 粉丝: 5
- 资源: 2万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Aspose资源包:转PDF无水印学习工具
- Go语言控制台输入输出操作教程
- 红外遥控报警器原理及应用详解下载
- 控制卷筒纸侧面位置的先进装置技术解析
- 易语言加解密例程源码详解与实践
- SpringMVC客户管理系统:Hibernate与Bootstrap集成实践
- 深入理解JavaScript Set与WeakSet的使用
- 深入解析接收存储及发送装置的广播技术方法
- zyString模块1.0源码公开-易语言编程利器
- Android记分板UI设计:SimpleScoreboard的简洁与高效
- 量子网格列设置存储组件:开源解决方案
- 全面技术源码合集:CcVita Php Check v1.1
- 中军创易语言抢购软件:付款功能解析
- Python手动实现图像滤波教程
- MATLAB源代码实现基于DFT的量子传输分析
- 开源程序Hukoch.exe:简化食谱管理与导入功能