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

[FEATURE] Implement precise deadlock detection #712

Open
konnov opened this issue Apr 4, 2021 · 2 comments
Open

[FEATURE] Implement precise deadlock detection #712

konnov opened this issue Apr 4, 2021 · 2 comments
Assignees
Labels
Fsymb-exec Feature: symbolic execution product-owner-triage This should be triaged by the product owner

Comments

@konnov
Copy link
Collaborator

konnov commented Apr 4, 2021

Following the bug reports #711 and #110, we should implement precise deadlock detection.

We should implement an additional deadlock detection mode that encodes the following query: Is there a state, in which all transitions are disabled. The current version implements a simpler query: Is there k such that all transitions are disabled in all states that are produced by k steps.

The more precise version requires us to deal with ENABLED, see #800. This is not a trivial extension.

@konnov konnov added Fsymb-exec Feature: symbolic execution Alpha Centauri The first public alpha release labels Apr 4, 2021
@konnov konnov self-assigned this Apr 4, 2021
konnov added a commit that referenced this issue Apr 6, 2021
* a simple test demonstrating #712
@danwt
Copy link
Contributor

danwt commented Jul 21, 2021

I was wondering, if a state S_E is found with no out-edges then is there an easy way to check if the state is reachable from S_0 (assuming it's not k reachable)?

I can't think of one and would be interested to know. My naive idea is to bfs in parallel from both S_0 and S_E and check if the reachable sets ever overlap. But this is still ultimately bounded by some k.

@konnov
Copy link
Collaborator Author

konnov commented Jul 26, 2021

I was wondering, if a state S_E is found with no out-edges then is there an easy way to check if the state is reachable from S_0 (assuming it's not k reachable)?

I can't think of one and would be interested to know. My naive idea is to bfs in parallel from both S_0 and S_E and check if the reachable sets ever overlap. But this is still ultimately bounded by some k.

Are you considering explicit-state model checking (TLC) or bounded model checking (Apalache)? In the explicit-state world, it's all easy: Just run BFS as you are saying. When we are using a solver (SAT or SMT), we have to somehow summarize sets of states. There are algorithms for doing that like IC3 or PDR, but we don't know yet how to apply them in the context of TLA+.

@konnov konnov added product-owner-triage This should be triaged by the product owner and removed Alpha Centauri The first public alpha release labels Jul 13, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Fsymb-exec Feature: symbolic execution product-owner-triage This should be triaged by the product owner
Projects
None yet
Development

No branches or pull requests

3 participants