This is not a very informative error message:
ampl: var b, binary;
maximize obj: b;
e: b=0 <==> h>=0;
option solver cplex;
Error executing "solve" command:
unexpected type 0x920c in lsimplify()
I believe error messages are the “user interface” when it really matters: when the user is confused. The value of good error messages is often underestimated. Of course we can assume the developer never thought this message would be issued.
I tried the implication based on information in http://www.ampl.com/INFORMS06.pdf. I assume this has to be written as
e: b=0 ==> h>=0 else h<=-0.0001;
e: b=0 ==> h>=0 else h<=0;
if the ambiguity about h=0 is no problem.