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

Improve identification of Type 1 consistency violation #1308

Open
danilovesky opened this issue Dec 15, 2021 · 0 comments
Open

Improve identification of Type 1 consistency violation #1308

danilovesky opened this issue Dec 15, 2021 · 0 comments

Comments

@danilovesky
Copy link
Member

danilovesky commented Dec 15, 2021

Sometimes MPSat reports Type 1 consistency violations as Type 2 (following classification in #1176 (comment))

For example, consider this STG: inconsistent.stg.work.zip

image

Its consistency violation is reported as Type 2:

Error: the STG is inconsistent, signal out; its initial value cannot be assigned due to traces:
in1~, out+/2
in2~, out+, in1~, out+/2

Ideally this should be reported as Type 1:

Error: the STG is inconsistent, signal out; its rising and falling edges do not alternate in trace:
in2~, out+, in1~, out+/2

The reason for the mix up:

MPSAT checks consistency by exploring the events in the depth-first order. In this case it first finds the event corresponding to out+/2 (1st trace) and records that the initial value of out must be 0, and it stores the first trace as a proof. Then it finds the out+ event (2nd trace) and checks that it does not conflict with the initial value. Then it finds a different out+/2 event (2nd trace) in the prefix, determines that it conflicts with the initial value, and reports an error giving two traces as a proof of inconsistency.

@danilovesky danilovesky changed the title Improve identification of Type 1 consistency violation report Improve identification of Type 1 consistency violation Dec 15, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants