**“Two variables x and y cannot be positive at the same time”**: how to model this constraint? For the new MP Library-based drivers (e.g., gurobi, highs, copt), as well as for Constraint Programming solvers (ilogcp, gecode, jacop), this goes via AMPL logical operators:

`x <= 0 or y <= 0`

#### Small complete examples:

- With MP, using the
`or`

operator:

```
var x >= -1000 <= 1000;
var y >= -1000 <= 1000;
maximize total: 5 * x + 2 * y;
s.t. only_one_positive: x <= 0 or y <= 0;
```

- With MP, using implication:

```
var x >= -1000 <= 1000;
var y >= -1000 <= 1000;
maximize total: 5 * x + 2 * y;
s.t. only_one_positive: x > 0 ==> y <= 0;
```

- Without MP you would need to linearize the constraint using big-M:

```
var x >= -1000 <= 1000;
var y >= -1000 <= 1000;
var b binary;
maximize total: 5 * x + 2 * y;
s.t. big_m_1: x <= b * 1000;
s.t. big_m_2: y <= (1-b) * 1000;
```

Solving any of the three models above using our new Gurobi 10 driver produces the following:

```
ampl: option solver gurobi; solve; display x, y, total;
x-Gurobi 10.0.0: optimal solution; objective 5000
x = 1000
y = 0
total = 5000
```

Solving any of the three models above using our HiGHS driver produces the following:

```
ampl: option solver highs; solve; display x, y, total;
HiGHS 1.2.2: optimal solution; objective 5000
1 branching nodes
x = 1000
y = 0
total = 5000
```

More examples and documentation are in the MP Modeling Guide.