TLA+ 《Specifying Systems》翻译初稿——Section 6.5 Using Functions(函数使用)

本节要点
定义函数最好用 f = [ i N a t i + 1 ] f'=[i \in Nat \mapsto i+1] 这种方式

考虑如下两个公式:
(6.6) f = [ i N a t i + 1 ] f'=[i \in Nat \mapsto i+1]
(6.7) i N a t : f [ i ] = i + 1 \forall i \in Nat: f'[i]=i+1
两者对于每一个自然数 i i ,都有 f [ i ] = i + 1 f'[i]=i+1 ,但他们是不等价的。公式(6.6)唯一确定了 f f' , 声明了它是一个定义域为 N a t Nat 的函数,但对公式(6.7),则有很多不同的 f f' 满足条件,例如下面这个函数: [ i R e a l IF  i N a t  THEN  i + 1  ELSE  i 2 ] [i \in Real \mapsto \text{IF } i \in Nat \text{ THEN } i + 1 \text{ ELSE } i^2] 事实上,从公式(6.7),我们甚至不能推导出 f f' 是一个函数。公式(6.6)蕴含公式(6.7),反之则不然。
写规约时,我们通常喜欢给变量 f f 简单赋值一次就行,而不是对集合的所有元素 i i 都赋一遍 f [ i ] f[i] 的值。因此,我们通常推荐写公式(6.6)而不是(6.7)。

发布了4 篇原创文章 · 获赞 1 · 访问量 5526

猜你喜欢

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