jyoo980 / silver

Definition of the Viper intermediate verification language.
Mozilla Public License 2.0
0 stars 0 forks source link

Check for recursive predicates using /all/ existing predicates. #42

Closed ionathanch closed 3 years ago

ionathanch commented 3 years ago

This now passes instead of failing (lifted from silicon/0196.vpr:

predicate P(r: Ref) {forall e : Ref :: e in refs(r) ==> acc(Q(e), wildcard)}
predicate P2(r: Ref) {forall e : Ref :: e in refs(r) ==> acc(Q(e), 1/2)}
predicate R(r: Ref) {forall e : Ref :: e in refs(r) ==> acc(e.q, wildcard)}
predicate R2(r: Ref) {forall e : Ref :: e in refs(r) ==> acc(e.q, 1/2)}
predicate Q(r: Ref)
field q: Ref
function refs(r: Ref) : Set[Ref]

(See comment in #38)

jyoo980 commented 3 years ago

Oops, should have told you I was working on this....

jyoo980 commented 3 years ago

I'm running my local change and the error in #38 is gone, as we suspected.

ionathanch commented 3 years ago

Oops, should have told you I was working on this....

I probably should've asked lmao Did you have anything different?

jyoo980 commented 3 years ago

Nope, I have the exact same diff.