You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
automatically encoding into into (assuming we have conjunctive predicate support):
constraint flagDown(me) -> flag[me] == false && (me >= 0 && me <= 1);
constraint flagUp(me) -> flag[me] == true && (me >= 0 && me <= 1);
constraint waiting(me) -> flag[me] == true && (me >= 0 && me <= 1);
constraint holdLock(me) -> flag[me] == true && (me >= 0 && me <= 1);
disjoint flagUp, flagUp;
disjoint flagUp, flagDown;
disjoint flagUp, waiting;
// and so on...
constraint holdLock(me) * holdLock(you) -> me != you && false;
My main feeling here is that doing this would A) save a lot of space in the paper for these sorts of examples, and B) have a nice story of showing that high-level patterns similar to those in iCAP etc. map into Starling's small proof core quite nicely.
The text was updated successfully, but these errors were encountered:
This again becomes an interesting idea in the case of modularity: anything that uses a mutex generally needs to be a thread FSM with an attached ID.
The syntax here is probably not what we need, though. First, some FSM views can be parametric on things other than thread IDs. Second, we don't always want to bound the thread IDs.
I think it'd be nice (not necessary, but nice!) to have a more concise and high-level syntax for encoding
n
-thread state machines in Starling.My immediate syntax thought was eg.
For example, in Peterson's algorithm you might have:
automatically encoding into into (assuming we have conjunctive predicate support):
My main feeling here is that doing this would A) save a lot of space in the paper for these sorts of examples, and B) have a nice story of showing that high-level patterns similar to those in iCAP etc. map into Starling's small proof core quite nicely.
The text was updated successfully, but these errors were encountered: