I' not sure I understand what is says in the LRM, because I don't think
constraint a_b { (a == 0) -> b == 0; }
constrains a to be 0 if b is 0. If I add this constraint, too:
constraint b_a { (b == 0) -> a == 0; }
then
never occurs. I will ask my colleagues to see if they can shed any light on it. But, I think you need both constraints.