# How to express the simple non-convex constraint? (Moderator's note: It actually is convex)

How to express the non-convex constraint xy>10 in CVX form, with 0<x<100, 0<y<100?

This is a rotated second order cone,
`{sqrt(10),x,y} == rotated_lorentz(1)`

``````x <= 100
y <= 100
``````

Note that CVX will treat `<` as `<=`
If you really need these strictly less than 100, change the RHS to 1-1e-6…

The rotated_lorentz constraint automatically constrains `x `and `y` to be >= 0

http://cvxr.com/cvx/doc/funcref.html#sets

This is one of the rare times on this forum in which someone claims something is non-convex, but it actually is convex. Usually, it’s the other way around.

Thanks a lot, Mark. I still have a question. If the case is x*y>z, with x,y,z being variables, how can I express this constraint in CVX?

You can’t.

Rotated second order cone can handle
`norm(z)^2 <= x*y`
or
`norm(z) <= sqrt(x*y)`

So you would need a variable `q` which would represent `sqrt(z)`, and you’d have to be “content” (i.e., able) to use `q` and never `z` in your program.