Open BookWood7th opened 7 months ago
Interesting observation! Thanks for reporting.
However, the problem is not SMT-related, but has to do with the fact that a local program variable length
is created in the proof obligation while there is already a symbol length
used in KeY (for array length). If you do a cut with length(a) = 0
you get a very similar error message.
I suppose a similar issue also occurs in the example "Lists with Loop Contracts" in the contract "mapIncrement_loopContract() normal behavior operation contract 0". Here there are two different variables present for "self". They are differentiated only by their hashcodes. Is this intended? It seems like this is still present on the main branch at time of writing.