我正在为一个工作项目尝试 TLA+。我想证明尽管数据内部发生了一些变化,但使用相同的键获取数据将返回相同的数据。为此,我想将外部系统建模为一个黑匣子,其响应具有某些属性。例如:
CONSTANT ValidKeys
CONSTANT DataPoints
CONSTANT FETCH(_)
\* Incorrect use of ASSUME, but for illustrative purposes.
ASSUME ValidKeys \in SUBSET DOMAIN FETCH(ValidKeys)
ASSUME \forall key in ValidKeys:
LET fetched == Fetch(ValidKeys)[key]
IN fetched \in Seq(DataPoints)
然后我想编写自己的系统,TLA+ 将根据指定的假设推断行为。那可能吗?