理论计算机科学电子笔记36(2000)网址:http://www.elsevier.nl/locate/entcs/volume36.html22页Real-Time Maude:一个模拟和分析实时和混合系统的工具1彼得·萨巴·奥勒·韦茨基和乔·塞·梅塞格尔计算机科学实验室Menlo Park,CA 94025,美国S. A.电子邮件:{peter,meseguer}@ csl.sri.com摘要重写逻辑可用于在各种时间模型(包括离散和密集时间模型)下指定广泛的实时和混合系统。 实时Maude工具建立在Maude重写逻辑语言之上,支持在定时模块和定时面向对象模块中指定实时和混合系统,这些模块被转换为等效的Maude模块。 然后,该工具支持在几种重写模式下执行这些规范,对应于不同的提前时间标准。除了在给定的重写模式下默认执行的系统模拟之外,该工具还具有执行策略和命令库,可以在给定的重写模式和搜索范围内从初始状态搜索所有可能的计算,以部分地模型检查所需的属性,包括在一类线性时间定时时序逻辑公式中可表达的属性。本文讨论了该工具的理论基础,它的专用语言,以及它的评估和搜索策略库。用户可以添加新的正式分析策略库,如调度案例研究所示。我们还总结了我们的应用经验和未来计划。1介绍在许多反应式和分布式系统中,实时性对其设计和正确性至关重要因此,如何在重写逻辑的语义框架中最好地指定、分析和证明具有实时特性的系统是一个重要的问题。这个问题已经由几位作者从两个角度进行了研究一方面,1 由DARPA通过罗马实验室合同F30602-C-0312提供支持,由O.海军研究合同N 00014 -99-C-0198和国家科学基金会资助CCR-9900334。2000年由ElsevierScienceB出版。 诉 操作访问和C CB Y-NC-ND许可证。OÜLVECZKY和MESEGUER2重写逻辑的一个扩展称为定时重写逻辑已被研究,并已被应用到一些例子和specification语言[?、、怎么样?、、怎么样?].另一方面,我们一直在研究如何直接在重写逻辑中表达实时和混合系统规范。、、怎么样?].除了能够证明广泛的已知实时系统模型,以及离散或密集的时间值,可以在重写逻辑中以直接的方式自然地表达之外,我们的方法的一个重要优点是可以使用重写逻辑的现有实现来执行和分析实时规范。由于一些技术上的微妙之处,这似乎很难为定时重写逻辑的替代,虽然映射到我们的框架确实存在[?].Real-TimeMaude工具通过使用Maude引擎作为其底层执行机制来利用此可执行性属性。该工具的规范语言直接支持实时方面,在定时模块和定时面向对象模块中具有特殊的语法特征。在理论层面上,这些句法特征支持实时重写理论的具体化。这些都是重写理论,其中一些规则提前了全局系统的时间,每个都有一个相关的持续时间表达式。有趣的是,通过一个简单的理论转换,每个实时重写理论可以转换为一个普通的重写理论,然后可以在Maude中执行。此转换由Real-Time Maude在内部执行。实时规范的可执行性和分析提出了该工具必须解决的新首先,时间的推进通常是不确定的。这反映在时间推进重写规则本身中,这些规则通常在其右侧和/或其条件中具有一个或多个新变量。第二种通常发生的情况是,一些时间关键的规则是急切的,并且必须立即且无延迟地执行,而其他规则是惰性的,并且应当仅在没有启用急切规则时执行 Real-Time Maude工具通过为用户提供不同形式的默认执行和形式分析的执行策略库来支持实时规范的执行和分析,直接解决刚才提到的非确定性和渴望/懒惰需求,并支持时态逻辑属性的模型检查。此外,由于在Maude中可以通过反射轻松定义新策略,因此该工具可以由用户轻松扩展,用户可以定义新的特定于应用程序的策略来执行其他形式的分析。2实时重写理论本节回顾了[?]中给出的实时重写理论的定义。].实时重写理论用于描述重写逻辑中的实时和混合规则分为计时规则(模拟系统上的时间流逝)和OÜLVECZKY和MESEGUER3≤−R{}→{}−→瞬时规则,即对瞬时变化进行建模,并假设其时间为零。为了确保时间在状态的所有部分均匀地前进,我们引入了一个新的排序系统,没有子排序,以及一个免费的编译器:状态系统的预期含义是,不表示所述整个系统处于状态T。然后,通过全局状态总是具有形式{t}来确保均匀的时间流逝,并且每个滴答规则具有形式{t}−→{tJ}。我们在[?尽管通过使用实时重写理论使持续时间信息显式化来突出系统的实时方面是有用的,但是通过以保留所有预期属性的方式向全局状态添加显式时钟,可以将这种理论简化为普通重写理论。时间被抽象地建模为一个交换幺半群(Time,+,0),带有额外的运算符,如<,和。(根据Maude理论,时间[?]. 这个理论可以用更多的公理来扩展,以公理化线性时域和/或向时域添加无限元素。定义2.1([?])实时重写理论Rφ,τ是元组(R,φ,τ),其中R=(R,E,L,R)是重写理论,使得:• φ是一个方程理论态射φ:TIME→(E,E),• 时域是泛函的;也就是说,只要α:r rJ是中的重写证明,并且r是φ(Time)类的项,则r=rJ并且α等价于恒等式证明r,• (E,E)包含一个我们通常称为State的指定排序和一个没有子排序或子排序且只有一个算子{}的特定排序System:State → System,它不满足非平凡方程;此外,对于任何f:s1. . 如果sn→sin,则排序系统不会在s1, . ,sn;• τ是项τ1(x1,...,x n)到R中的每个重写规则,(t) l:u(x1, . ,xn)−→u J(x1, . ,xn),如果C(x1, . . ,xn)其中u和uJ是排序系统的项。 当τ1(x1,...,x n)/= φ(0),上述规则(†)写成l:u(x,.,X)τ1(x1,.,x n)uJ(x,.,X)如果C(x,.,x)。1n−→ 1n否则,规则(†)保持未修饰。我们将分别为φ(Time)、φ(0)和φ(+)写Time我们称形式为(†)的规则为全局规则。如果全局规则l的持续时间τl(x1,.,x n)对于其变量的某些实例不同于0,并且在其他情况下是瞬时规则。不具有(†)形式的规则称为OÜLVECZKY和MESEGUER4−→R{ }−→{ }⟨⟩φ,τR⟨ ⟩→−→−→R⟨ ⟩ −→ ⟨⟩局部规则,因为它们不作用于整个系统,而仅作用于某些系统组件。局部规则总是被看作是零时间的瞬时规则重写证明α的总时间消耗τ(α):ttJof sort系统定义在[?]作为在α中的每个报价规则应用中经过的时间的总和。给定一个实时重写理论R,计算要么是一个不可扩展的序列t0−→t1−→··−→tn(也就是说,t n不能被进一步重写),要么是一个无限序列t0−→ t1−→···的一步R-重写t it i+1,所有t i基项,从给定的初始项t0开始,sort系统应该注意的是,由于我们明确地(通过重写规则)对时间流逝进行建模,因此不需要通常要求计算时间的流逝完全取决于指定的时间--我们允许终止计算和总时间有限的无限计算。通过在状态中加入一个时钟,实时理论(,φ,τ)可以转化为普通的重写理论,而不会丢失定时信息。在这样的时钟系统中的状态具有t,r的形式,其中t是全局状态 的值,而r是一个排序时间的值,直观地说,如果在初始状态下时钟的值为0,那么它应该表示计算中经过的总时间从实时重写理论(R,φ,τ)到它的时钟版本RC如下:• 我们添加一个新的排序ClockedSystem和一个新的操作符:SystemTimeClockedSystem;• 瞬时(0次)重写规则保持不变;• eaC h规则l:u(x1, . ,xn)u J(x1, . ,xn),如果C(x1, . . ,xn)in ofsort制度被规则所l C:Xu(x1,.,x n),x r− →u(x1,.,x n),x r+ τl(x1,...,x n)如果C(x1,.,其中xr是排序时间的新鲜变量。它显示在[?]如果α:tt J是实时重写证明重写理论(,φ,τ),具有t,t J排序系统的基项,则对于时域中的每个值r,存在α到重写证明α J的唯一提升:t,rtJ,rJ在变换理论中,RJ=r+τ(α),并且变换理论中的任何αJ都是α的提升.2.1懒惰的规则在实时系统中,一些动作是时间关键的,这意味着当对应于这样的动作的规则被启用时,时间不应该流逝。与显式计算每个时间关键规则的使能条件不同,使用内部重写策略的重写逻辑概念[?] 、、怎么样?],其执行是很好的支持莫德OÜLVECZKY和MESEGUER5→→→∗相关特征,以使用简单的策略来处理这些使能性和优先级方面其思想是将实时重写理论中的规则分为渴望规则和懒惰规则,并通过要求渴望规则的应用优先于懒惰规则的应用来限制可能的重写。也就是说,容许重写的集合是那些重写α:t−→tJ其中顺序地应用惰性规则,并且此外,仅当没有启用急切规则时才应用惰性规则2.2重写逻辑在[?],我们已经展示了各种著名的实时和混合系统模型如何自然地被视为实时重写的特殊情况处理的模型包括定时[?]和混合自动机[?],定时和相变系统[?[1],timed Petri nets(见e. G. [怎么样?、、怎么样?])和面向对象的实时系统。此外,Kosiuczenko和Wirsing的定时重写逻辑可以映射到我们的框架[?].我们简要地总结了一些技术,这些技术将在5.1节的案例研究中使用,用于指定面向对象的实时系统,其中对象只有功能属性;这样的规范有一个排序配置,其元素是消息和对象的多集。在这样的系统中,无限数量的对象可以由时间的流逝来确定,和/或可以由在滴答步骤中流逝的最大时间因此,使用函数δ:配置时间配置和mte:配置时间分别定义对象和消息的配置上的时间提前效应以及配置的最大然而,我们在[?],函数δ的引入很容易导致缺乏连贯性[?、、怎么样?、、怎么样?在重写理论中,这直观地对应于具有“不合时宜”重写的可能性此外,排序项Configuration连同函数mte:ConfigurationTime的重写可能在时域中引入不期望的非平凡重写解决这些潜在问题的一种方法是只重写排序系统但是,这种解决方案会丢失并发性。在[?[1]的方法是使用特殊的Tokens形式的Tokens,并使扩展的配置 成 为 Tokens 和 Configuration 的 supersort TokenConf 中 的 一 个项,由原始配置的多集并集和tokens的多集并集组成。tick规则的形式如下() tick:{Tt}−→r{Tδ(t,r)}如果C和r≤mte(t),对于T,一个排序令牌的变量,和t排序配置的术语。每个局部规则都有形式l:t−→· · ·tJ,如果C。OÜLVECZKY和MESEGUER6→R/一致性w.r.t.符号δ现在是毫无问题的,因为局部规则左侧的每个实例都具有最小排序TokenConf,因此不能是δ的参数。这也适用于运算符mte:ConfigurationTime,因此不会在时域中引入非平凡重写。3实时Maude质量标准Real-Time Maude工具是Full Maude的扩展,支持实时重写理论的规范,执行和形式化分析实时重写理论由定时模块和面向对象的定时模块具体化。 该工具将定时模块转换为一对,由一个(非定时)Maude模块和模块中惰性规则的一组标签组成。如图1所示,该工具可用于以三种不同的方式执行和分析实时重写理论,即:(i)通过在底层Maude解释器中执行规范;(ii)通过使用特定于工具的策略库;以及(iii)使用特定于应用程序的用户定义策略。Maude的默认解释器的第一次使用(i)对于大多数实时规范来说是不令人满意的因此,Real-Time Maude提供了一个专门为执行和分析实时规范而设计的重写策略在这样一个库中的策略是以响应的方式执行的,作为Maude的META-LEVEL模块的扩展此外,Real-Time Maude工具的用户可以在扩展META-LEVEL(或TIMED-META-LEVEL,它扩展了META-LEVEL,具有用于实时规范的有用功能)的其他模块中编写自己的应用程序特定策略,并可以在工具库中输入策略3.1实时模型在该工具中,实时重写理论(,φ,τ)被指定为用户级的定时模块,对于定时系统模块,将模块体封装在关键字tmod和endtm之间,对于面向对象的定时模块,将模块体封装在关键字tomod和endtom之间 为了说明不可执行的属性,实时Maude还允许用户通过分别使用关键字tth和endtth以及toth和endtoth来指定抽象的Full Maude理论和面向对象理论的实时扩展。一个时间规则l:t−→tJ,如果C,其中t,tJ项为sortSystem且τl= 0,则用语法crl[l]:t => tJin timeτlifC.对于无条件规则的情况,使用类似的语法 我们还可以通过在rl或crl前面放置关键字lazy来指定(瞬时或tick)规则为lazy。没有给出来自理论TIME的方程理论态射φOÜLVECZKY和MESEGUER7≤实时重写理论实时Maude符号模拟全莫德注释重写逻辑理论执行结果、痕迹形式化分析实时系统针对具体应用的战略执行结果、跟踪错误和分析结果错误和分析结果Fig. 1. 实时Maude工具的架构。明确在规范层面。相反,默认情况下,任何定时模块都会自动导入功能模块TIMED-PRELUDE,其中包括以下声明:操作零:->时间。op _plus_:时间时间->时间[assumption prec 33 gather(E e)]。op _monus_:时间时间->时间[prec 33 gather(E e)]。ops _le_ _lt__ge__gt_:时间时间->布尔值[prec 37]。var RR':时间。等式R+零= R。等式RleR' = R lt R'或R == R'。等式Rge R' = R' le R.等式R>R' = R' lt R.态射φ然后隐式地将Time映射到Time,0映射到zero,+映射到_plus_,映射到_le_,等等。事实上,用户可以完全自由地指定时间值的数据类型-可以是离散的或密集的-通过:(i) 导入满足TIME理论的时间值的特定数据类型,并进行排序,比如这些值的TimeValues(ii) 声明一个包含TimeValues