Conversation
|
Perhaps it's worth pushing this encoding trick into Why3's encoder instead of counting on our collective memory? |
|
This is again the termination checker of Why3 complaining? |
|
in order for |
|
And anyway, the definition should then be opaque, the 2 definitional lemmas reproven and added as a hint simplify. |
|
@fdupress Perhaps. I can't tell right now whether doing so would be a patchwork hack or a proper fix. |
maybe |
|
I think you want That way |
|
My proofs check again. |
|
That's what I get for touching such an old theory I suppose. I've changed the recursively defined operator to be opaque and smt_opaque, re-proven definitional equalities and added them as rewrite hints like before. I've also kept my hack around on the opaque definition just in case, while using the non-hacked definition for the lemmas. |
Did this accidentally root-cause #918? This would be due to why3's SMT encoding behaving differently on the context and on goals, and specifically so on inductive operators whose definition uses a higher-order op. |
I think so. But all is good now. |
#918 is due to goal being simplified before being sent to SMT, not the context, nor the general facts. IMO, #918 is not a bug. We could make the behavior configurable if needed. |
Ref #972
@alleystoughton Does this work for your proofs?