TLA+ 《Specifying Systems》翻译初稿——Section 14.7 The Fine Print(附录)

本节会详细描述在上文中概述的TLC的两个方面:配置文件的语法和TLC中数值的精确定义。

14.7.1 The Grammar of the Configuration File(配置文件的语法)

在下一页图14.6中,TLA + ConfigFileGrammar模块描述了TLC配置文件的语法。更准确地说,是定义了ConfigFileGrammar模块的语句集合 ConfigGrammar.File描述了配置文件(不带注释)的正确语法。

ConfigFileGrammar模块扩展了BNFGrammars模块(见11.1.4节,第179页)。下面是配置文件的其他一些限制,这些限制未在ConfigFileGrammar模块中提及:

  • 最多只可以有一个INIT和一个NEXT语句;
  • 最多只能有一个SPECIFICATION语句,但前提是没有INIT或NEXT语句。
    (有关何时必须出现这些语句的条件,请参阅第14.3.1节的第243页);
  • 最多可以有一个VIEW语句;
  • 最多一个SYMMETRY语句;
  • 允许其他语句的多个实例。 例如,如下这两个语句
    INVARIANT    I n v 1 INVARIANT    I n v 2 , I n v 3 \\\textrm{INVARIANT} \;Inv1\\ \textrm{INVARIANT} \;Inv2, Inv3
    指定TLC将检查三个不变式Inv1,Inv2和Inv3,等价于下面语句
    INVARIANT    I n v 1 , I n v 2 , I n v 3 \textrm{INVARIANT} \;Inv1,Inv2, Inv3

14.7.2 Comparable TLC Values(数值比较)

第14.2.1节(第230页)介绍了TLC值。该描述不完整,因为它没有确切定义何时值可比较。准确的定义是,当且仅当以下规则暗示它们是两个时,两个TLC值才是可比较的:

  1. 两个原始值是可以比较的 当且仅当它们具有相同的值类型,此规则意味着"abc"和"123"是可比较的,但"abc"和123不是可比较的;
  2. 模型值可与任何值比较(它仅等于其自身);
  3. 两个集合可以比较,当且仅当:两组元素数量不同,或者元素数量相同,并且一组中的所有元素与另一组中的所有元素具有可比性。该规则意味着{1}和{" a"," b"}是可比较的,而{1,2}和{2,3}是可比较的。但是,{1,2}和{“a”," b"}不可比较。
  4. 两个函数f和g可以比较,当且仅当(i)它们的定义域是可比;(ii)如果它们的定义域是相等的,则f[x]和g[x]对于它们域中的每个元素x都是可比较的。该规则意味着<1,2>和<“a”," b"," c">是可比较的,并且<1," a">和<2,“bc”>是可比较的。但是,<1、2>和<" a"," b">是不可比的。
发布了4 篇原创文章 · 获赞 1 · 访问量 5533

猜你喜欢

转载自blog.csdn.net/robinhzp/article/details/103523207