We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
It might be nice, especially for Vafeiadis-style linearisability proofs, to be able to distinguish between actual code and ghost code syntactically.
Something like (to use the CLH lock as an example):
shared Node tail; ghost Node head; // ... {| loose(mynode, true) |} <{ mypred = tail; tail = mynode; ghost(%{[|tail|].pred := [|mypred|]}); }>; {| queued(mynode, mypred) |}
Starling would statically check against the use of ghost variables in normal code, or ordinary variables as lvalues in ghost code.
The text was updated successfully, but these errors were encountered:
@septract suggests this wouldn't buy us much, if I recall correctly.
Sorry, something went wrong.
No branches or pull requests
It might be nice, especially for Vafeiadis-style linearisability proofs, to be able to distinguish between actual code and ghost code syntactically.
Something like (to use the CLH lock as an example):
Starling would statically check against the use of ghost variables in normal code, or ordinary variables as lvalues in ghost code.
The text was updated successfully, but these errors were encountered: