Closed jprider63 closed 4 years ago
Interesting.
I will have to investigate.
Are you using the new PLE? If no, can you pull LH from master and try it both normally and with the oldple
flag? Maybe I introduced a bug in the new ple implementation.
It was the old PLE. 2d3c4009b80a714247648c2234cc34910b855643
is from develop on Feb 24. I'll try the new one.
I'd be surprised if it's related to PLE since LH wasn't type checking the refinement.
oh, you mean the refinement does not typecheck because x
is not in scope, correct?
I just saw that
Right, and the order of arguments is wrong too.
ok, I know what is happening: because your refinement is trivially identity, it never reaches the internals of LH: it is treated as true
. Could you please make an issue, whenever you can?
Ah because the LHS and RHS are equal? I'll make an issue now.
yes! also, if you change ==
to /=
, LH will see apply op2 (apply op1 x) /= apply op2 (apply op1 x)
as false
.
The idea is that for such trivial statements, you do not need to call the SMT to decide.
Closing this since we've opened it upstream.
In commit
81a148a
,liquid MultiSet.hs
returns safe even though the refinement forlawCommutativity
doesn't type check. Any idea why this might be @nikivazou?