操作语义学

✍ dations ◷ 2024-11-05 16:34:20 #操作语义学
操作语义学是计算机科学中的一个概念,它是使得计算机程序在数学上更加严谨的一种手段。其它类似的手段包括提供形式语义学,包括公理语义学和指称语义。一个计算机语言的操作语义描述一段合理的程序是怎样被理解为一系列计算机步骤的。这些步骤就是这个程序的意义。在函数编程语言中一段终结性的序列在最后一步的返回程序的值。(由于一个程序可能是非非决定的,一般来说一个程序能够有许多不同的计算步骤和许多不同的返回值。)操作语义最早被用来定义Algol 68的语义。下面这句话引用修正的ALGOL 68报告:一个使用严格语言编写的程序的意义是通过一个假设的计算机来执行该程序的组成部分时完成的行动来解释的。(Algol68,第二章)丹纳·司科特是第一个在今天的这个定义下使用操作语义这个概念的(Plotkin04b)。以下是司科特关于形式语义学的讲稿,其中他提到了语义的“操作”观点。把目光注意使得语义在更‘抽象’和更‘清晰’可以,但是假如把操作方面完全忽略的话这个计划毫无用处。(Scott70)戈登·普罗特金(Gordon Plotkin)在(Plotkin04a)中引入了结构操作语义的概念作为一个定义操作语义的逻辑方式。其基本主意是使用程序组成部分的行为来定义一个程序的行为,由此来提供一个对操作语义结构性的,即按照句法和归纳性的,分析。结构操作语义对一个程序的行为的说明是通过一(组)变化关系来表示的。其形式是一系列推理规则,这些推理规则通过一组句法的转换来定义该组的合理转换。比如我们考虑一个简单计算机语言的部分语义,在Plotkin04a和Hennessy90以及其它教科书中有相应的图像。设 C 1 , C 2 {displaystyle C_{1},C_{2}} 为该语言的程序域, s {displaystyle s} 是状态域(即函数的存储地址及值)。假如我们有表述( E {displaystyle E} 的域)、值( V {displaystyle V} )和存储地址( L {displaystyle L} ),则一个存储更新指令的语义为: ⟨ E , s ⟩ ⇒ V ⟨ L := E , s ⟩ ⟶ ( s ⊎ ( L ↦ V ) ) {displaystyle {frac {langle E,srangle Rightarrow V}{langle L:=E,,,srangle longrightarrow (suplus (Lmapsto V))}}}使用普通语言,这个公式说假如在 s {displaystyle s} 状态的 E {displaystyle E} 的值为 V {displaystyle V} 则程序 L := E {displaystyle L:=E} 会通过 L = V {displaystyle L=V} 更新 s {displaystyle s} 的状态。系列的语义可以用下列规则来表达: ⟨ C 1 , s ⟩ ⟶ ⟨ C 1 ′ , s ′ ⟩ ⟨ C 1 ; C 2 , s ⟩ ⟶ ⟨ C 1 ′ ; C 2 , s ′ ⟩ ⟨ C 1 , s ⟩ ⟶ s ′ ⟨ C 1 ; C 2 , s ⟩ ⟶ ⟨ C 2 , s ′ ⟩ ⟨ s k i p , s ⟩ ⟶ s {displaystyle {frac {langle C_{1},srangle longrightarrow langle C_{1}',s'rangle }{langle C_{1};C_{2},,srangle longrightarrow langle C_{1}';C_{2},,s'rangle }}quad {frac {langle C_{1},srangle longrightarrow s'}{langle C_{1};C_{2},,srangle longrightarrow langle C_{2},s'rangle }}quad {frac {}{langle mathbf {skip} ,srangle longrightarrow s}}}第一个规则说假如处于状态 s {displaystyle s} 的程序 C 1 {displaystyle C_{1}} 可以被简化为处于状态 s ′ {displaystyle s'} 的程序 C 1 ′ {displaystyle C_{1}'} 的话则处于状态 s {displaystyle s} 的程序 C 1 ; C 2 {displaystyle C_{1};C_{2}} 能被简化为处于状态 s ′ {displaystyle s'} 的程序 C 1 ′ ; C 2 {displaystyle C_{1}';C_{2}} 。第二个规则说假如处于状态 s {displaystyle s} 的程序 C 1 {displaystyle C_{1}} 以状态 s ′ {displaystyle s'} 结束的话,则处于状态 s {displaystyle s} 的程序 C 1 ; C 2 {displaystyle C_{1};C_{2}} 可以简化为处于状态 s ′ {displaystyle s'} 的程序 C 2 {displaystyle C_{2}} 。这里的语义是结构化的,因为程序序列 C 1 ; C 2 {displaystyle C_{1};C_{2}} 的意义是由 C 1 {displaystyle C_{1}} 的意义和 C 2 {displaystyle C_{2}} 的意义定义的。假如我们还有状态的布尔函数表示 B {displaystyle B} 的话我们可以定义while指令的语义: ⟨ B , s ⟩ ⇒ t r u e ⟨ w h i l e   B   d o   C , s ⟩ ⟶ ⟨ C ; w h i l e   B   d o   C , s ⟩ ⟨ B , s ⟩ ⇒ f a l s e ⟨ w h i l e   B   d o   C , s ⟩ ⟶ s {displaystyle {frac {langle B,srangle Rightarrow mathbf {true} }{langle mathbf {while} B mathbf {do} C,srangle longrightarrow langle C;mathbf {while} B mathbf {do} C,srangle }}quad {frac {langle B,srangle Rightarrow mathbf {false} }{langle mathbf {while} B mathbf {do} C,srangle longrightarrow s}}}这样的定义允许对程序行为进行公式化的分析和研究程序间的关系。由于结构操作语义看上去非常易懂,结构简单,因此它获得了很大的欢迎,实际上成为定义操作语义的标准。结构操作语义最初的报告因此获得了约900次引用,成为计算机科学中被引用最多的技术报告之一。

相关

  • 司美匹韦司美匹韦(英语:Simeprevir),是一种抗病毒药物,常与其他药物并用治疗丙型肝炎。本品主要用于治疗丙型肝炎第一及四型基因型,常见的市售药名为奥利西奥(英语:Olysio)。可并用的药物有索
  • 性类固醇性类固醇(英语:Sex steroid,亦称为性甾体)是指一类与脊椎动物雄激素或雌激素受体相互作用的类固醇激素。他们的效应是由两种方式进行的:第一种是经核受体进行的慢性染色体组机制,
  • 血液循环循环系统(英语:circulatory system),也称为心血管系统(英语:cardiovascular system)或血管系统(英语:vascular system)是负责血液循环,在细胞间传送养分(如氨基酸及电解质)、氧气、二氧化
  • 猪流感猪流感(英语:Swine influenza),亦称食用猪流感,是指那些通常感染猪的流感病毒(称为猪流感病毒或SIV)的毒株引起的流感。猪流感常见于美国的中西部(偶而也发生在其他州)、墨西哥、加拿
  • 室内室内空气质量(IAQ)是指建筑物及建筑物内以及附近的空气质量,这会影响在建筑物内生活人们的健康及舒适。室内空气质量会受气体(特别是一氧化碳、氡、挥发性有机物)、悬浮粒子、微
  • 近邻同盟近邻同盟 (古希腊语: Ἀμφικτίων或 Ἀμφικτύων,英语:Amphictyonic League)--是一个由雅典、色萨利等十二个相互毗邻的城邦构成的宗教性组织。近邻同盟是以神庙
  • 苏丹二号苏丹二号(Sudan II,C18H16N2O)是一种脂肪偶氮染色剂,常用于冻结切片的甘油三酯的染色。正常状况下是红色粉状物。工业上常用于油、蜡等非极性物质的染色。铁及含铁血黄素(英语:Hem
  • 荷兰莱顿大学莱顿大学(荷兰语:Universiteit Leiden)座落在荷兰的莱顿市,是目前荷兰持续运作中最古老的大学。莱顿大学是科英布拉集团、Europaeum以及欧洲研究型大学联盟等大学联盟的一员,享有
  • 丙酰辅酶A丙酰辅酶A 是由辅酶A与丙酸通过硫酯键结合成的重要代谢中间产物。有几种不同的丙酰辅酶A形成方式。在动物中,丙酰辅酶A通过丙酰辅酶A羧化酶转化为(S)-甲基丙二酰辅酶A(同时还
  • 偏正短语偏正短语是短语的结构分类之一,它由两个成分以“修饰—受修饰”的关系(修饰关系)组成的。偏正短语又可以分为定中短语和状中短语两类。偏正短语由一个“偏”的修饰成分和一个“