-
Notifications
You must be signed in to change notification settings - Fork 50
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
Inline struct accessors to avoid Why3 polymorphism #1042
base: master
Are you sure you want to change the base?
Conversation
This is currently failing the |
Could you try regenerating the session in the editor? It should be achievable through auto level 3 |
7d7d2b5
to
09a5e44
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Lgtm, once ci passes go ahead and merge
09a5e44
to
a3f91b1
Compare
Sorry I'm struggling to fix the sessions, @xldenis do you want to try? |
3dcbf97
to
a385c0a
Compare
@dewert99, something really weird is going on with that proof, at this point it is hinting to me that this |
I'm guessing the issue is with the |
Hmm that would be possible, do you think you could experiment with it? I think it should be possible confirm this to be the case without too much effort |
In that case should we just revisit #903 |
Are we still relying on why3 positivity check for the soundness of |
a385c0a
to
258368a
Compare
258368a
to
bf2f414
Compare
I'm trying to use prover modifiers to get Why3 to use Z3 sequences, but despite the multitude of |
Well, I don't see why you would need to disable polymorphism encoding to use Z3 sequences. SMT theories like algebraic types are being used even in the presence of polymorphism. The main problem is that one need to rewrite Why3's library of sequences to make it compatible with SMT sequences. |
I'm trying to use Z3 sequences to disable the polymorphism encoding not the other way around. I've found that the polymorphism encoding sometimes creates matching loops, and the way Why3 encodes algebraic types in the presence of polymorphism sometimes creates unnecessary quantifiers. |
Agreed, and I would like to see this encoding eliminated in practice.
How's that supposed to work? |
I was hoping similar encoding Why3 |
Unfortunately I couldn't get it to work, one guess I had is that I couldn't use |
I don't really see the link between the two? I think that we can eliminate the polymorphism encoding via your monomorphic sequence module (forgoing smt sequences, at least for now). Or we can ensure that the polymorphism encoding doesn't kick in just because we monomorphically used a polymorphic type (ie: fixing the encoding). I don't see how using the SMT sequences would cause why3 to stop encoding polymorphism though? The causality seems the wrong way around? |
@jhjourdan doesn't seem to want us to use a monomorphic seq library, so I was hoping translate Why3's polymorphic sequence functions into Z3's polymorphic sequence functions without triggering the polymorphism encoding. Z3 supports builtin polymorphic functions. |
I'm not really against using a monomorphic seq library. I think adapting the polymorphic library from Why3 is better, because then Why3 users can benefit from it, but if someone does the work of writing a monomorphic library which is based on the SMT native support, thn of course we will use it. Now, both approaches have their own difficulties:
Nothing is really a blocker, but this requires time and work... |
No description provided.