2017-11-22 2 views
0

Ich versuche ein Hashset zu verifizieren, aber ich habe ein Problem mit meiner Einfügemethode bekommen.Dafny "Call kann die Modifizierungsklausel des Kontextes verletzen"

Ich verstehe nicht, warum ich die "Modify-Klausel" Call "Conflict Conflict Conflict" -Fehler bekomme, wenn ich die Einfügungen in main auskommentiere. Ich glaube, dass es etwas mit dem Gebrauch von frischem zu tun hat, aber ich weiß nicht, wie und wo ich das machen soll.

-Code finden Sie unter: https://rise4fun.com/Dafny/9UDG

Antwort

2

Das Problem ist, dass Einsatz behauptet this und a, zu modifizieren, was die Möglichkeit offen lässt, dass der erste Aufruf von insert ändert das a Feld etwas willkürlich, zu zeigen und dann der zweite Aufruf an insert modifiziert diese beliebige Sache. Eine einfache Lösung ist ensures a == old(a) zu insert hinzuzufügen.

Verwandte Themen