[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [tlaplus] About CHOOSE construct

The CHOOSE operator is deterministic: you want equality to be reflexive, so

  (CHOOSE x : P(x)) = (CHOOSE x : P(x))

has to be true. Use disjunction or existential quantification to express non-determinism in your specification. For example, an action such as

\E v \in {2,3} : x' = v /\ y' = y + 2*v

will explore both branches for v=2 and v=3.

For more information, look at section 6.6 of Specifying Systems.


> On 24 Jul 2018, at 09:56, myjul...@xxxxxxxxx wrote:
> Sir,
> I'm writing TLA+ specification and I use TLC.
> While I'm using TLC, I'm curious about CHOOSE construct.
> If the statement is as follows,
>  ....
>  CHOOSE v \in {2, 3} : TRUE
>  ....
> the selected value is almost always 2 while model checked it.
> But, the next state depends on which the value is chosen so I want to check all the cases.
> Is it possible to solve with model checking?
> Thanks,
> Juliet
> -- 
> 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+u...@xxxxxxxxxxxxxxxx.
> To post to this group, send email to tla...@xxxxxxxxxxxxxxxx.
> Visit this group at https://groups.google.com/group/tlaplus.
> For more options, visit https://groups.google.com/d/optout.