contract A { int x = 0; function f() virtual internal { x = 2; } function proxy() public { f(); } } contract C is A { function f() internal virtual override { super.f(); assert(x == 2); assert(x == 3); // should fail } } contract D is C { function f() internal override { super.f(); assert(x == 2); assert(x == 3); // should fail } } // ==== // SMTEngine: all // ---- // Warning 6328: (205-219): CHC: Assertion violation happens here. // Warning 6328: (328-342): CHC: Assertion violation happens here. // Info 1391: CHC: 2 verification condition(s) proved safe! Enable the model checker option "show proved safe" to see all of them.