官方网站:The TLA+ Home Page by Leslie Lamport
Terminology
TLA:时序逻辑行为(Temporal Logic of Actions)
TLC:遍历 TLA+ 抽象出来的系统的每一个可能路径,并在每条可能的路径上对一些条件(称为“不变式”)进行检验。
Demos
SimpleProgram
对以下 C 语言代码进行验证:
1 | |
DieHard
TCommit
两阶段提交
TwoPhase
Arrays in TLA+
Syntax
The TLA+ syntax for an array expression:
$$ [variable \in set \mapsto expression] $$
For example:
$$ sqr = [i \in 1..42 \mapsto i^2] $$
Defines $sqr$ to be an array with index set $1..42$ such that $sqr[i] = i^2$ for all $i$ in $1..42$.
Terminology
| Programming | Math | TLA+ |
|---|---|---|
| array | function | function |
| index set | domain | domain |
| $f[e]$ | $f(e)$ | $f[e]$ |
Math and TLA+ allows a function to have any set as its domain — for exxample, the set of all integers.
Abbreviation
$$ rmState' = [s \in RM \mapsto \textup{IF} ; s = r ; \textup{THEN} ; \mathrm{"prepared"}; \textup{ELSE} ; rmState[s]] $$
Signal
| Math | Code |
|---|---|
| $\wedge$ | /\, \land |
| $\vee$ | \/, \lor |
| $\exists$ | \E |
| $\forall$ | \A |
| $\in$ | \in |
| $\mapsto$ | ` |
| $\rightarrow$ | -> |
| $\ge$ | >= |
| $\le$ | =< |
| $\triangleq$ | == |
| $\ne$ | /=, # |
| $\neg$ | ~ |
| $\cup$ | \cap, \union |
| $\langle$ | << |