Change pHL to prevent negative probabilities - #1105
Conversation
|
Does this handle the few situations that allow the code to change the value of the bound? (Those are usually framed, and my assumption is that there is then a |
|
I believe so. There are some tactics where we should be able to get rid of the bound unconditionally (I'm aware of The For the record, I'm not certain that this is the right approach, but I thought it useful to at least see what the fallout would be. There's going to be a significant amount of breakage regardless AFAICT. |
|
Failures in external projects are where I would expect—developments that involve a lot of cross-logic reasoning (and therefore a lot of The main blocker is that I, personally, will likely not have the capacity to deal with any of them for about 2 weeks. |
This essentially changes the semantics of
phoare[M.f: pre ==> post] R xto beforall m arg, 0 <= x{m} /\ pre{m} => Pr[M.f(arg)@&m: post] R x{m}instead of
forall m arg, pre{m} => Pr[M.f(arg)@&m: post] R x{m}.This is one possible resolution to most of the issues we're having with negative probabilities.
The advantage of this approach is that we do not require proving bounds when using pHL
seqandcall. The disadvantage is that we need to prove bounds when changing them usingconseqand when proving phoare statements from statements not involving phoare, such as withexfalsoandbypr.