It could just be inexperience. I can't go through the whole spec for you, but one thing that I notice is you have IsValidData(d) == d /= NULL /\ d.id \in Nat /\ d.value \in
Nat /\ d.version <= MaxVersion Assuming you have no additional keys in your structs, this can be
shorted to: ValidData == [id: Nat, value: Nat,
version: 1..MaxVersion]
TypeInvariant ==
/\ UpdateRequestQueue \in
Seq([client: Clients, data: ValidData])
/\ DeleteRequestQueue \in
Seq([client: Clients, data: ValidData])
Which is less than half the length and
much clearer. I'd guess there are similar places you can clean up
the spec.
H
On 7/1/19 2:10 PM, zll zbw wrote:
-- You received this message because you are subscribed to the Google Groups "tlaplus" group. To unsubscribe from this group and stop receiving emails from it, send an email to tlaplus+unsubscribe@xxxxxxxxxxxxxxxx. To post to this group, send email to tlaplus@xxxxxxxxxxxxxxxx. Visit this group at https://groups.google.com/group/tlaplus. To view this discussion on the web visit https://groups.google.com/d/msgid/tlaplus/0a59e189-36a2-b727-3cf3-226c27df4f70%40gmail.com. For more options, visit https://groups.google.com/d/optout. |