Skip to content
New issue

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

[Civl] small fixes to Treiber stack example #883

Merged
merged 1 commit into from
May 5, 2024
Merged

Conversation

shazqadeer
Copy link
Contributor

@shazqadeer shazqadeer commented May 5, 2024

This PR updates the primitive atomic actions in treiber stack so that they uniformly follow the pattern of Map_Get, Map_Put, Cell_Unpack, Cell_Pack, etc.

The outstanding problems are as follows:

  • Most primitive atomic actions do Map_Get on ts at the beginning and Map_Put on ts at the end. The proof would be better if each primitive atomic action did at most one Map_Get or Map_Put.
  • There is a problematic assume in AtomicLoadNode#0 without which the proof does not succeed. The issue seems related to the first point. To clean up the proof, it seems that we need to maintain and prove an invariant at the lowest level---either top is nil or top is a member of stack.

@shazqadeer shazqadeer merged commit ed4339c into master May 5, 2024
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant