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

Incorrect satisfiability POs #215

Closed
nickbattle opened this issue Nov 22, 2013 · 7 comments
Closed

Incorrect satisfiability POs #215

nickbattle opened this issue Nov 22, 2013 · 7 comments
Assignees
Milestone

Comments

@nickbattle
Copy link
Contributor

If an implicit operation does not have a return value, then an incorrect satisfiability PO is generated. For example:

state S of
    s : nat
end

operations
    op(n:nat)
    pre s < 10
    post s < s~

op: operation satifiability obligation in 'DEFAULT' (test.vdm) at line 6:5
(forall n:nat, oldstate:S &
  pre_op(n, oldstate) =>
  post_op(n, oldstate, newstate))

Notice there is no binding for the newstate value. After the fix, the proof obligation is:

op: operation satifiability obligation in 'DEFAULT' (test.vdm) at line 6:5
(forall n:nat, oldstate:S &
  pre_op(n, oldstate) =>
  exists newstate:S & post_op(n, oldstate, newstate))
@ghost ghost self-assigned this Nov 22, 2013
@ghost
Copy link

ghost commented Dec 4, 2013

I think I talked to @ldcouto about this recently and he told me that he "was on it"? Maybe I am wrong?

@ghost ghost assigned ldcouto Dec 4, 2013
@ldcouto
Copy link
Member

ldcouto commented Dec 4, 2013

If this is the one that was brought up in the core list a while back, then yeah.

It was already working correctly in the newpog (/flex).

String-based has the error though. Do we fix it even though it's being phased out?

Also, @peter-wvj, you should @ people if you want them to pay attention on GitHub ;)

@ghost
Copy link

ghost commented Dec 4, 2013

Sorry about that Luis - I @ed you just now :)

I made this issue a duplicate and added a new issue for it... mainly because I wanted the issues to have the same title as that of the commit message and to have the chronological order being consistent with that of the branch log.

For this issue I think we should make the change in the new POG only and leave it in the string based one as it will go away soon and inspecting the new test results would probably take a lot of time. But I will leave it up to you to decide.

@ldcouto
Copy link
Member

ldcouto commented Dec 4, 2013

The new pog already has this fix. I am against maintaining the string pog further. Why write code that is gonna die?

I believe the next release of the tool will have the newpog anyway.

So, we should close both issues.

@nickbattle
Copy link
Contributor Author

String POG will die in time. This fix came in from FJ's VDMJ (which is only string-based). It's trivial to apply, so we might as well do it. But I won't be doing any larger scale changes to String POG (like backporting the LPF changes, for example).

@ldcouto
Copy link
Member

ldcouto commented Dec 5, 2013

Ok then. It it's just the extra condition in the if that you mentioned, might as well do it.

@ldcouto
Copy link
Member

ldcouto commented Dec 5, 2013

So, it turns out there are some problems with the string pog tests. No need to go into detail but it means that we can no longer fix bugs in the string pog.

So the plan for pog bugs is now the following:

  1. bug gets reported
  2. fix the bug in the newpog
  3. tag the bug as oldpog and close it
  4. when we release the new pog we go through all the tagged bugs and make sure they are still fixed.

This goes for both user reported bugs and vdmj ports (be sure to create an issue for every vdmj fix).
For the most part, I will be the one maintaining this. And as my first act, I'm closing this issue and its twin.

@ldcouto ldcouto closed this as completed Dec 5, 2013
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