Description
This is more of a clarification (and support) thread, rather than an actual issue, apologies for that.
In the Common Restrictions section of the manual, two of the common restrictions explained are Unique and OnlyOnceV.
However, these two seem identical to me (modulo renaming). Q1: Am I correct?
Q2: Is it also correct to say that both these restriction could be called AtMostOnce
? (given that the rules carrying these facts may appear either 0 or 1 time within a trace).
Also (here comes the support request), to enforce a given rule X to be instantiated ExactlyOnce
within every trace, I'm using the following restriction:
restriction exactlyOnceX:
" Ex #i . ExactlyOnceX()@i
& All #i #j . ExactlyOnceX()@i & ExactlyOnceX()@j ==> #i=#j "
However, I was unable to write a more general version that is parameterized by a specific instantiation of a variable, as that seems to introduce an invalid formula (universal quantifier without toplevel implication).
// Not allowed
restriction exactlyOnce:
" All v . ( Ex #i . ExactlyOnce(v)@i ) & ( All #i #j . ExactlyOnce(v)@i & ExactlyOnce(v)@j ==> #i=#j ) "
Q3: Would you confirm that the only way to enforce a rule to appear exactly once in a trace is by my first restriction?
(And there is no way to have a more general version like my second restriction?)
Thanks!
Activity