申し訳ありませんが、タイトルは少しわかりません。私は1つの要求を追加する労働者のセット、および別のセットや労働者にそれらを満たすとOutcomes
への書き込みを持ってどのように特定の状態をアサートすると、TLA +に変数を持つ別の状態になりますか?
variables Requests = {}, Outcomes = {};
:私は2つのセットを定義してTLA +スペックを持っています。各リクエストには固有のId
があり、一致するOutcome
エントリにも含まれます。
Requests
セットに追加されたリクエストは、最終的にOutcomes
セットの同じId
の構造と一致することを保証したいと思います。私は、 "リードする"、~>
、演算子を使ってこれをしようとしていましたが、Id
の一致部分を解決する方法を見つけることができません。
私は単純に何かしようとしました:
RequestsAreFulfilled == \E req \in Requests: TRUE
~> \E outcome \in Outcomes : outcome.id = req.id
をしかし、これは明らかにreq
以来、第二の式で定義されていません破ります。私は、2番目の表現の行に沿って何かを考えました。「次に、すべてのリクエストアイテムが結果アイテムと一致する状態がありますが、システムは決して終了しないので動作しません。 Requests
が設定されているので、は常に追いついています。
リクエストが最終的に同じIDの結果と一致すると主張する方法は何ですか?
So;私はこれをあまりにも早くマークしたと思います。 TLCは私に怒っています。「TLCは、Ids:requested [i]〜> processed [i] 'の式の\ A id \である一時的な式の行42を処理できません。 私が使用している正確なTLA +仕様は次のとおりです。https://gist.github.com/jakewins/b431d83d8833953ea73a5d02d6724189 数式を間違って使用していますか? – jakewins
@jakewins Idsは定数または演算子でなければなりません。仕様では変数として使用します。 – Hovercouch