没有合适的资源?快使用搜索试试~ 我知道了~
FF理论计算机科学电子笔记40(2001)网址:http://www.elsevier.nl/locate/entcs/volume40.html14页软件维护的证明理论概念Reinhard Kahle莱因哈德·卡勒1,2德国图宾根大学信息学院Sand13,D-72076Tubingen,GermanyInstitutfurInformatik,慕尼黑路德维希-马克西米利安大学67,D-80538München,Germany摘要我们讨论证明理论的概念作为一个有用的工具来处理软件维护在一个正式的设置。1介绍本文件涉及以下问题:设给定一个程序P和一个形式系统,使得我们可以证明其中的某个性质π(P)。现在我们把P变成一个新的程序PJ。是否有可能使用证明的信息的证明的?我们给出一个大纲如何证明理论的概念可以帮助处理这个问题。一个关键的概念是在证明论环境中使用的概念我们给出了这样一个概念的正式定义的建议,这取决于底层的它允许我们显式地控制程序中对某个属性是必要的或足够的部分。特别是,它为我们提供了一种局部性的形式。这种局部性对于在程序改变时重用证明或部分证明的可能性是必不可少的这些定义通过一些(基本的)例子来说明,这些例子显示了我们的工作方法。这些例子取自逻辑编程,作为一个正式的框架,我们选择了希尔伯特式演算。然而,原则上1电子邮件地址:kahle@informatik.uni-tuebingen.de2主页:http://www-ls.informatik.uni-tuebingen.de/logik/kahle/2000年1月,出版社dbyElsevierScienceB。 V. 操作访问和C CB Y-NC-ND许可证。卡勒2直流稳压器DC A LC A电子邮件直流稳压器LC稳压器直流稳压器LC稳压器LCA{|一|}个字符。||}|}AADCA{|A}AA一该方法应该以相同的方式适用于其他编程语言和其他演算。因此,我们还简要介绍了不同编程语言的形式框架。最后讨论了该方法的局限性、应用及相关工作。2计算机程序为了我们的目的,我们认为计算机程序作为句法对象,即作为一段文本。当然,这与算法[24]或由程序实现的(数学)函数不同软件维护也可以理解为程序的更新,即程序文本的更改。在理论计算机科学中,有一个标准的程序形式分析过程。程序设计语言S与形式框架F相关联。 通过使用翻译T,我们可以在形式框架F中解释S的程序。通常F必须包含一个固定的部分A,它一般描述S的计算行为。然后将S的一个具体程序P的解释T(P)加到A上,我们证明-或反证-A的某些性质,如终止性或正确性。给定一个(可能无限的)公理集,一方面我们可以看看所有的公式,这些公式可以从集合():==另一方面,我们可以考虑的逻辑后果的集合,即。在所 有模型中 成立的公式集:():==: = M=M=.如果我们只考虑一阶理论,通常的完备性结果表明两个集合相等:()=()。(Here,我们只是勾勒出了标准的图景。 对于使用非标准可导性概念(如非单调概念或多值概念)模型。)由于这个原因,程序P的语义常常与以下理论相一致:(A(P))或(A (P)),让我们把这种观点称为程序作为理论的观点。但在这种观点中,我们放弃了很多结构(或信息), 在计算(A(P))或(A(P))时提供。最简单的例子是,一个公式在公理系统A(P)中可以有几个证明,但是,显然,在集合(A(P))中只包含一次。我们的目标是利用这种额外的结构,我们学习软件维护。很明显,一个程序会有一些变化,而这些变化并不影响已证明的性质。例如,可以删除“不相关的部分”或用“等效”的部分替换程序的一部分。我们将使用证明提供的附加结构来使卡勒3B电子邮件BTT电子邮件T TT一|优惠ATFT T很明显因此,主要的概念是使用的概念。如果我们有AT(P)我们可以问,集合A(P)的哪些公理真的被用在了证明A(P)的过程中。如上所述,可能有几个证据证明。因此,我们必须考虑具体的证据。但是对于给定的证明关于使用了哪些公理的问题,可以在一个精确的方式。在下一节中,我们将讨论这种定义的一些可能性。有了一个给定的使用概念,我们就可以处理软件维护。让我们对程序的形式化处理给出一个更详细的看法。首先,我们有编程语言S,并假设存在一个适当的框架F,其中S的计算行为由一组公理A公理化。现在考虑S的一个程序P。令C1,…,Cn是P的子句,即P的最短短语,可以由形式框架单独处理。子句的概念预示了我们将在下面的示例中使用的编程语言P ROLOG。然而,对于其他编程语言,显然可以将程序文本划分为可以单独处理的部分。对于将程序子句Ci 转 换成公式的任何转换T( C)我们有A(P)= A(C1). (Cn)作为关联公理系统。(In一个更严格的处理,我们将不得不处理多个集合,因为可能存在不同的子句Ci和Cj,它们导致相同的公理(Ci)=(Cj)。为了保持简单,我们不这样做。然而,有一些众所周知的形式框架处理多重集,例如子结构逻辑[27]或线性逻辑[10]。本文中定义的概念也可以很容易地用于这些框架。设A(P)是在A(P)中可证的性质。当我们把子句Ci替换为子句CiJ,把P变成Pj时,我们可以问,在A中是否仍然成立(PJ)。但如果(Ci)没有被用在对P的某个证明中,那么我们可以用A(PJ)中的同样的证明来证明P(PJ这一论点的基本概念将在下一节中得到精确的定义。我们将通过比较证明论和模型论观点中的一个有趣的观点来结束这一节假设完备性,证明理论的可推导性和模型理论的有效性是等价的:=。然而,在这个等价的背后有一个重要的对偶性:在模型论方面,我们证明了一个普适的陈述:“对于所有的. . ” while we havean . .“.另一方面,对于拒绝一个性质,我们在模型论框架中有一个存在性陈述:“存在一个(反)模型M使得。. . ” while we have on the proof-theoretic side a negated existential statement which is equivalent to a anuniversal one: “There is no proof “.卡勒4不∪T ∪T联系我们►一般来说,处理单个对象往往比处理一类对象更容易。在这里,这意味着,对于一个(正的)性质,处理一个证明B比处理一类模型更容易。如果你看看在上面的例子中,不使用(Ci)的证明是一个对象, 可以在程序PJ的上下文中立即转移。然而,A( P ) 的模型和A(PJ)的模型之间的关系可以任意复杂。(Of当然,这并不意味着找到一个证明比确定一类模型更容易。同样,作为一个对象,证明但是,有了一个给定的证明,我们常常可以更容易地处理,特别是关于所用公式的问题。)相比之下,如果我们想反驳一个性质,一般来说,而不是证明一个不可证明的陈述。当然,如果我们有语法上的完备性,即A因此,证明论的解释又有一些优点。然而,一般来说,我们不能期望语法完整性。此外,如果我们使用它,它会破坏我们使用公理的概念这个问题将在下面关于限制的章节中讨论3证明论概念在一般情况下,我们有一个给定的公理系统A,它包含一个特定的公理α,我们知道α是从A可证明的:A- 是的 现在我们改变A将α替换为αJ。问题是,是否也可以从AJ导出,如果可以,我们是否可以使用A中证明的一些信息,或者我们是否必须从头开始证明它。对于第二部分,我们可以提出以下三个更详细的问题:(i) α是否用于A中的一个给定的证明B中?(ii) α是证明A中的α是必要的吗?(iii) α在AJ中是可证明的吗?如果第三个问题的答案是肯定的,那么我们显然可以通过用A中的公理α的证明来替换公理α--如果它出现在证明中的话--而将A中的公理α的证明转化为Aj中的公理Α的证明。对于第一个问题,我们必须给出一个正式的解释概念,使用. 这将在下文中讨论。 然而,假设我们有我们已经可以给出一个精确的必要性的概念:定义3.1设一个公理系统A被给定。我们称A的一个公理为α必要时,如果(i) 在A中有一个证明:A。(ii) A中的每个证明都使用α。卡勒5B第一个条件是避免病理性病例。事实上,(在这里)我们对不可证明公式的必然性不感兴趣。但是,第二个条件应该抓住我们在可证明公式的情况下对必然性的非正式直觉。对于使用概念的定义,我们给出三个建议,基础微积分上的。定义3.2设B是希尔伯特式演算中的证明那么我们说α用于证明B如果只有一条线►α芽孢杆菌中定义3.3设是自然演绎演算中的一个证明。那么我们说如果α是B的开叶。α用于证明B我们还可以讨论更自由的概念,其中α也可以是闭合的叶子。由于我们在下文中将把自己限制在公理α上,所以所给的定义对于我们的目的是足够的。定义3.4设B是微积分中的证明那么我们说α用于证明B如果α是应用于B的规则的主公式。如果我们把自己限制在希尔伯特演算中的公理α上,很容易观察到这三个概念本质上是等价的。这一事实作为一个形式定理陈述起来会相当复杂。然而,一个使用公理α的给定证明,可以转化为一个同样使用α的其他演算中的“相同”最终公式的证明在下文中,我们将把自己限制在希尔伯特演算的情况下,参见。例如[29].在这里,我们不对这些定义的充分性进行(哲学上的)讨论,但我们呼吁直觉。在下面的部分中,我们给出一些例子,说明这些概念如何应用于回答问题(1)4示例我们的方法是非常普遍的,应该适用于几乎所有的编程语言。我们所需要的是对于给定的编程语言S,卡勒6∈FF框架F和翻译T,其允许一个人翻译S转化为F的公理。这样的框架基本上存在于所有的高级计算机语言中。对于一种特定的编程语言,甚至有不同的语言,它们在复杂性,表达性和实践处理方面相互竞争。它们甚至可以在意图上有所不同,侧重于指称语义或操作语义。但这些方面并不影响我们的方法。它适用于公理化指称语义的理论,就像操作语义一样。然而,通常操作语义学与证明论观点更密切相关,而指称语义学与模型论观点相关,参见。例如[25]。在本节的最后,我们简要讨论了文献中给出的正式框架对于具体的例子,一种有逻辑背景的编程语言更容易处理.因此,我们与PROLOG合作。此外,因为我们想给我们的证明理论概念的说明,我们限制自己的(几乎平凡)的情况下,命题PROLOG程序。但是,这种情况足以说明所定义的概念,并显示其基本特征,而不需要复杂的背景理论。命题PROLOG程序是以众所周知的方式构建的。我们有正式符号a,b,.,对于命题变量。 如果我们用a,b,。。作为命题变量的元变量,命题PROLOG程序由一系列子句a:-b1, . ,bn.其中n为在n= 0的情况下,我们说a是一个事实,否则这些子句就叫做规则。作为形式框架,我们选择了一个标准的希尔伯特演算的命题逻辑,特别是,我们有一个公理集A,它允许导出所有重言式。让我们假设我们有一个命题变量的枚举,使得我们的编程语言的每个形式符号a都与一个命题变量唯一关联。 因此,我们可以识别两者各种变量。 T是一个函数,它将一条规则a:-b1, . ,bn进入公理b1. . . bn→a。事实a可以用公理a来解释。例4.1设P1是由以下三个子句组成的程序b:- a.a.C.卡勒7LCP1的逻辑结果集是从开始的演绎闭包,a,b,c:LC(P1)=DC({a,b,c}).在PROLOG中,我们可以要求目标b:?- B.由于b∈ LC(P1),我们得到预期的答案是肯定的在证明理论方面,我们有T(P1)={a→b,a,c},我们得到b的以下证明:► 一► a →b► B如果我们选择定义3.2来表示使用的概念,那么很明显,在这个证明中使用了a,而不是c。甚至意识到所给的证明本质上是b的唯一证明也是微不足道的。(当然,在希尔伯特式的微积分中,我们通过添加包含可导出公式及其推导的额外行来削弱这个证明,从而得到无限多的其他证明。然而,没有证据不包含-使用-两个给定的行)。因此,在P1中,a对于b甚至是必要的。当我们考虑P1的变化时,将使用这些信息.例4.2设P2是P1通过收缩c:b:-a而得到的程序.a.显然b是LC(P2)的一个元素. 如果我们回顾b∈ LC(P1)的证明,我们会发现c在这个证明中没有使用因此,它可以从字面上转移到P2的情况.这个例子的目的是这样一个事实,即当P2由P1通过收缩c而产生时,我们不需要(新的)计算LC(P2)来得出b ∈LC(P2)。然而,a的收缩将改变b的可导性:例4.3设P3是由P1通过收缩a:b:-a得到的程序.C.b不再在(P3)中,但这已经是从a对于b是必要的这一事实得出的。当然,这种论点只有在我们收回一些东西的情况下才有效。当我们添加新子句时,可能会有新的可能性导出b。现在让我们考虑以下方案:例4.4设P4是由以下四个子句组成的程序b:- a.a.卡勒8不C.b:-c.如果我们将这个程序与P1进行比较,就会发现逻辑结果集是相同的:LC(P4)=LC(P1)=DC({a,b,c})。但相应的公理系统是不同的:T(P4) ={a→b,a,c,c→b}.正是这种差异对软件维护分析至关重要。至于P1,我们可以问b是否由P4得出,显然是这样的。但在证明理论方面,这次我们有两个(本质上不同的)证明:► 一► a →b► B► C► c →b► B我们可以再看看a的回缩的后果:例4.5设P5是P4通过收回a:b:-a而得到的程序.C.b:-c.现在,B仍然跟随。但这一事实绝不能仅从LC(P4)中推导出来,因为这个集合等于LC(P1)。 对于P1,aa影响b的可导性。但是看一下(P4),特别是b的证明,我们得到b是可导的。可导性已经从a对于b不是必要的这一事实中得出,因为存在一个不使用a的b的证明。在最后一个例子中,让我们通过用a:-c替换a来改变P1:例4.6设P6是由P1通过用a:-c替换a得到的程序:b:-a.a:- c.C.在这种情况下,不能直接使用a对于b是必要的这一知识。特别是,不是以a的收回使b的导出失效的方式。事实上,添加a:-c节省了b的可导性。要看到这一点,我们不需要计算LC(P6)作为一个整体.这足以表明,被收回的必要公理a可以在新的上下文 这是从推导得出的:► C► c →a► 一卡勒9因此,例4.6可以作为我们在第3节开始时提出的第三类问题的一个5正式框架我们将讨论不同编程语言的简单形式化框架。在所有这些框架中,我们可以直接使用我们的使用和必要性概念。作为一般参考,我们推荐《理论计算机科学手册》第二卷[36]。众所周知,编程语言的先驱Cousot [6]包含了400多个参考文献的令人印象深刻的列表对于命令式语言,动态逻辑框架变得流行,因为它允许我们以更自然的方式表达变量的变化[13,20]。当然,这种逻辑的动态处理程序的运行而不是改变一个程序。但是,这里讨论的问题的主要问题是缺乏局部性。程序的改变通常会导致一个全新的证明。至少,研究动态逻辑中给定证明的变化的后果需要对证明对象进行更深入的分析。从逻辑的角度来看,声明式编程语言特别有趣。有几种特殊的逻辑形式来处理这样的编程语言。对于函数式编程语言,如SCHEME,LISP或ML,它们基于λ-演算[3],我们将其称为Feferman [8,9,14,32,33]引入的显式数学框架的一个例子Studer甚至使用这个框架来处理编程语言JAVA的函数核心[35]。在逻辑编程是基于决议,比照。 除[2]外,Hallnaüs和 Schr oeder-Heister[12]、Jüager和Staürk[17]或Elbl[7]等也提出了一些有趣的方法。Mitchell [23]从类型论的角度讨论了任意编程语言的函数目前,Java编程语言非常流行。处理这一问题的正式系统的开发工作仍在进行中。作为第一个参考,我们建议收集编辑阿尔维斯福斯[1]。最近的一种详细的方法可以在Staürk、Schmid和Büorger的书中找到。6限制我们的主要任务是展示证明理论的概念如何帮助处理软件维护中出现的问题。在本节中,我们讨论我们的方法的一些局限性。主要是地域性的要求。如果公式的可导性依赖于整个系统,我们的方法卡勒10并没有什么帮助如果我们考虑非单调系统,情况就是这样。在这样的系统中,程序改变的后果更难控制。在逻辑编程中,如果我们将封闭世界假设或否定作为失败来处理,我们就会面临这个问题。更一般地说,每一种形式的元推理都会影响我们的方法:公式的使用不仅可以根据给定的证明来定义,而且可以这个观察的一个(微不足道的)后果是,我们不允许处理所考虑的派生中的派生规则。我们必须存储在导出规则的推导中使用此外,如上所述,使用语法完整性从正属性的不可导性导出否定属性也是一个非常有问题的论点,因为仍然不清楚在不可导性的(Meta)证明中使 用 了 哪 些 公 式 。7应用所定义的概念是非常普遍的,只要我们有适当的正式框架,它们就应该适用于任何上下文。然而,对于许多计算机程序来说,计算和使用公式的簿记可能太耗费空间和时间。然而,除了我们的方法给出的概念澄清之外,还有几个领域应该直接适用。首先,我们必须提到数据库和数据库更新[19]。在数据库理论中,证明理论账户已经建立。特别是,演绎数据库可以被看作是数据库的证明理论观点的实现。为了控制更新的后果,我们定义的使用概念显然是相关的。我们的概念有用的另一个领域是面向对象编程。在其纯粹的形式是基于这样的想法,一个对象是一个黑盒子的程序员谁是使用它。这意味着,实现的变化不应该是一个更大的程序使用该对象的影响。事实上,一个对象应该只由它的具体化来确定在实践中,程序员没有真正的机会来检查规范是否以及如何得到满足。特别是,他不能检查对象实现中的更改是否真的不会影响更大的程序。同样,我们的方法可以帮助控制这些变化。作为最后一个,但可能是最重要的主题,我们提到携带代码的证明。这个非常新的领域源于互联网编程引起的问题。如果允许浏览器从其他服务器下载程序,它必须确保该程序不能在本地计算机上做令人讨厌的事情。例如,内存的使用必须限制在一个定义的区域,程序不允许离开。例如,所谓的字节码验证器卡勒11应该为JAVA小程序做这件事众所周知,一般来说,证明搜索比校对要“昂贵”得多因此,我们的想法是,一个JAVA程序的正确性证明,通过网络。 然而,整个证明可能已经太大了。所以这是一个平衡的问题,证明的哪些部分应该打包在程序中,以获得传输代码的大小和本地验证时间之间的最佳关系。为了研究这类问题,对证据的使用和必要部分的分析显然是高度相关的。8相关工作有很多工作与我们的方法有关,无论是从概念上还是从实践的角度来看。将描述程序的公理分成编程语言的固定部分和具体程序的所谓可变部分,可以通过使用模态逻辑进行模型理论处理。在那里,固定的轴将由必要的公理来模拟。但除了数据库理论,cf。[21,22],我们不知道一个模态方法的编程语言,使用这个框架的软件维护或其他可能的应用上述。Hallnäs和Schr oeder-Heister[12,26]提出的程序设计作为演绎系统的观点 ,也被Jäger和Stärk[16,17,30,31]采用,用于逻辑程序设计的分析,也是从证明论的角度开始的。主要强调了规则在逻辑程序设计扩展建模中的作用和重要性。作为某种程度上的补充方法,我们可以将证明方法视为程序。在这里,我们从所需规格的证明中提取程序因此,提取程序的验证是免费的。作为实现这种方法的一个例子,我们参考Schwichtenberg在那里,我们有一个很强的对应关系之间使用的证明策略和由此产生的程序。 特别是,证明可以导致不同的程序,并且提取过程给出某种控制。 这方面的一个关键例子是使用归纳法,在算法方面导致递归的证明方面在这个框架内,修剪的想法实现了我们目标的某些方面[11]。让我们假设我们已经从一个给定的证明中提取了一个程序,该程序使用了大小写区分。新的信息可以减少可能的病例。通过系统地使用这些信息,人们可以修剪这些区别,最终得到一个更好的,即。更有效的,程序。最后,在逻辑和语言的语境中,已经有了对这里介绍的证明论概念的讨论[18]。卡勒12引用[1] Alves-Foss,J.,编辑,“Java 的 形 式 语 言 和 语 义 学 ” , 计 算 机 科 学 讲 义1523,Springer,1999年。[2] Apt,K.,逻辑程序设计,在:J. van Leeuwen,编辑,TCS手册。VolumeB,Elsevier and MIT Press,1990 pp. 493-574.[3] Barendregt,H.,函数式编程和lambda演算,在:J. van Leeuwen,编辑,TCS手册。Volume B,Elsevier and MIT Press,1990 pp. 323-363[4] Benl,H.,联合Berger,H.Schwichtenberg,M.Seisenberger和W.工作中的证明理论:Minlog系统中的程序开发。Bibel和P.施密特,编辑,自动演绎-应用的基础。第二卷,Kluwer,1998年,pp. 41比71[5] 伯 杰 大 学 , H. Schwichtenberg 和 M. Seisenberger , Warshall 算 法 和Dickson205-221[6] Cousot,P.,证明程序的方法和逻辑,在:J. van Leeuwen,编辑,TCS手册 Volume B,Elsevier and MIT Press,1990 pp. 841-993[7] Elbl,B.,A declarative semantics for depth-first logic programs,Journal ofLogic Programming41(1999),pp. 27比66[8] Feferman,S.,逻辑的终止和正确性的功能程序,在:Y. Moschovakis,editor,Logic from Computer Sciences(1991),pp. 95比127[9] Feferman,S.,函数程序的终止性和正确性逻辑II:强度逻辑PRA,见:P.Aczel,H. Simmons和S. S. Wainer,editors,Proof Theory,CambridgeUniversity Press,1992 pp. 195-225[10] Girard,J.-是的,Linear logic,Theoretical Computer Science50(1987),pp.1-102[11] Goad,C.,计算使用的操纵形式证明,技术报告,斯坦福大学计算机科学系(1980年),报告编号。STAN- CS-80-819.[12] 霍 尔 湖和 P.S c hr oeder-Heister , Ap roof-theoreticapproroachtologicprogramming. I. Clauses as rules , Journal of Logic and Computation 1(1990),pp. 261-283。[13] Harel,D.,动态逻辑,in:D.Gabbay和F.Guenthner,编辑,哲学逻辑手册。第二卷,Kluwer,1984 pp. 497-604.[14] 林山和H. Nakano,“PX-A计算逻辑”,麻省理工学院出版社,马萨诸塞州剑桥,一九八八年[15] Hoare,C.,计算机程序设计的公理基础,Communications ACM12(1969),pp. 576-583.卡勒13[16] Jüager,G.,本文介绍了一种逻辑规划的归纳方法,即H. Schwichenberg,editor,Proof and Computation,Springer,1994 pp.133-172。[17] Jüager,G. 和R.Staürk,《逻辑编程的一种逻辑算法框架》,载于:S. Buss,编辑,Handbook of Proof Theory,Elsevier,1998 pp.639-682.[18] Kahle河,A proof-theoretic view of intensionality,in:P. Dekker,editor,Proceedings of the 12th Amsterdam Colloquium,Amsterdam University,1999pp. 163比168[19]Kanellakis,P.,关系数据库理论的基础,在:J。van Leeuwen,编辑,TCS手册Volume B,Elsevier and MIT Press,1990 pp. 1073-1156。[20]Kozen,D.和j.Tiuryn,程序逻辑,在:J。van Leeuwen,编辑,TCS手册 Volume B,Elsevier and MIT Press,1990 pp. 789-840[21] Lipski,W.,关于与不完整信息数据库有关的语义问题,ACM Transactionson Database Systems4(1979),pp.262-296。[22] Lipski,W.,关于不完整信息的数据库,J. ACM28(1981),pp. 41比70[23] Mitchell,J.,编程语言的类型系统,在:J. van Leeuwen,编辑,TCS手册。 Volume B,Elsevier and MIT Press,1990 pp. 365-458[24] Moschovakis,Y.,什么是算法?,在:B. Engquist和W. Schmid,编辑,Mathematics unlimited - 2001 and beyond,Springer,2001 pp. 929- 936[25] Mosses,P.,指称语义学,在:J. van Leeuwen,编辑,TCS手册。VolumeB,Elsevier and MIT Press,1990 pp. 575-631[26] Schroeder-Heister,P.,逻辑程序设计中的假设推理和定义反射,在:P.Schroeder-Heister , 编 辑 , 逻 辑 程 序 设 计 的 扩 展 , Arti fiscalIntelligence475讲义,Springer,1991页。327-339.[27] S c hr oeder-Heister, P. 和K. D.O.B.森, 编辑,[28] Schwichtenberg,H.,Proofs as programs, in:P.Aczel,H. Simmons和S.Wainer , editors , Proof Theory , Cambridge University Press , 1992pp.79比113[29] Shoen Field,J.,“Mathematical Logic,” Addison-Wesley, Reading, MA,[30] Stark,R.,Acompleteaxiomatizationofthethre-valuedcompletionoflogicprogramming,Journal of Logic and Computation1(1991),pp.811-834[31] Stark,R.,《计算机科学基础国际期刊》第5期(1994年),第100 - 101页。129-164。[32] Stark, R.,按 值调用、按名称调用和值 s 的 逻辑, 在: D中。vanDalen和M.Bezem,编辑,计算机科学逻辑431-445卡勒14[33] Stark,R., 为什么总是“under fine d”? 严格和非严格函数式编程语言的部分术语的逻辑,函数式编程杂志8(1998),pp. 97比129[34] Stark,R.,J.S c hmid和E. [1]Bo?rger,http://www.inf.ethz.ch/~jbook/.[35] Studer,T.,轻量级Java的建设性基础,在:R。卡尔R. Stark和P. Sc hroeder-Heister,编辑,计算机科学理论教授,计算机科学讲义2183,Springer,2001页。202-283[36] van Leeuwen,J.,编辑,Volume B:Formal Models and Semantics,
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 5
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 新型智能电加热器:触摸感应与自动温控技术
- 社区物流信息管理系统的毕业设计实现
- VB门诊管理系统设计与实现(附论文与源代码)
- 剪叉式高空作业平台稳定性研究与创新设计
- DAMA CDGA考试必备:真题模拟及章节重点解析
- TaskExplorer:全新升级的系统监控与任务管理工具
- 新型碎纸机进纸间隙调整技术解析
- 有腿移动机器人动作教学与技术存储介质的研究
- 基于遗传算法优化的RBF神经网络分析工具
- Visual Basic入门教程完整版PDF下载
- 海洋岸滩保洁与垃圾清运服务招标文件公示
- 触摸屏测量仪器与粘度测定方法
- PSO多目标优化问题求解代码详解
- 有机硅组合物及差异剥离纸或膜技术分析
- Win10快速关机技巧:去除关机阻止功能
- 创新打印机设计:速释打印头与压纸辊安装拆卸便捷性
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功