Use $x\ge 0 \implies y = 1$ and $x<0 \implies y = 0$ into a linear programming solver For a binary variable $y$ and another decision variable $x$, $x$ being integer, I want to be able to use the following two non-linear constraints into a linear solver:
\begin{align}
        x\ge 0 \implies y = 1\\
        x< 0 \implies y = 0
   \end{align} 
What I've tried so far is:
$$\dfrac{x}{M} + \varepsilon \le y$$
$$\dfrac{x}{M}+1\ge y$$
With $M$ being a large constant and $\varepsilon$ a very small constant.
I then wanted to use those constraints in a linear programming solver and my problem is that whatever value of $M$ and $\varepsilon$, when $x = 0$, $y$ is always $0$ instead of $1$. All other cases are working. What mistake could have made? Is there another way without constants $M$ and $\varepsilon$?
 A: $$
\begin{align}
       x\ge 0 \implies y = 1\\
        x< 0 \implies y = 0
\end{align}
$$
I assume your variable $y\in \{0,1\}$ because there is no another possibility. Let $M$ be a big positive number.
$$
\begin{align}
       x \geq (y-1)M\\
       x < yM\\
       -M \leq x < M
\end{align}
$$
Using the intervals $[-M, 0), [0, M)$ this set of constraints guarantees the asked properties. OK, this is exactly what you do, but when $x=0$ the second constraint $0<yM$ then $y\neq 0$.
You can rewrite as follow ($\epsilon > 0$) :
$$
\begin{align}
       x \geq (y-1)M\\
       x + \epsilon \leq yM\\
       -M \leq x < M
\end{align}
$$
Note that $x + \epsilon \leq yM$ and $\frac{x}{M}+\epsilon \leq y$ are the same thing. It is correct. Probably, you make a mistake in your code because when $(x,y)=(0,0)$ the second constraint becomes $\epsilon \leq 0$. It is false for all $\epsilon >0$.
UPDATE
I think you proof these constraints using the following idea. Let $M>0$ be a big number and $\epsilon>0$ a small number. Assume $-M \leq x \leq M-\epsilon$.
$$y=\left\lfloor\frac{x}{M}\right\rfloor+1$$
Note that $0 \leq x \leq M-\epsilon \implies y=1$ and $-M \leq x < 0 \implies \lfloor\frac{x}{M}\rfloor = -1 \implies y=0$
$$y-1=\left\lfloor\frac{x}{M}\right\rfloor$$
$$y-1\leq \frac{x}{M} < y $$
$$y-1\leq \frac{x}{M} \leq y -\frac{\epsilon}{M}$$
$$
\left\{\begin{align}
       & x \geq (y-1)M\\
       & x \leq yM -\epsilon
\end{align}\right.
$$
