pragma experimental SMTChecker; contract C { enum D { Left, Right } D d; function f(D _a) public { require(_a == D.Left); d = D.Right; assert(d != _a); } }