Hi,

I am solving a convex quadratic integer programming problem,

```
min f( x , y )
s.t. Ax + By <= b
y being integral vector
```

where `f`

is a convex quadratic function.

I have a set of valid inequalites for the feasible region `(x,y)`

lives in, and I have defined a valid `CutGeneration`

function for them.

The question is, when I use piecewise linear approximation of `f`

some of my user cuts are used during solving.

```
m = Model( solver = gurobi() )
@variable x
@variable y , Bin
@variable c
@constraint of Ax + By <=b
@constraint c >= linear_approximation_f(x,y)
@objective Min c
function CutGeneration
if...
println("User cut!")
@usercut( ax + by <= d )
end
```

The output log is like

```
Cutting planes:
User: 8
Gomory: 11
Cover: 7
Implied bound: 278
Clique: 1
MIR: 85
Flow cover: 156
GUB cover: 9
```

When I move to exactly solve quadratic objective in epigraph form

```
# everything is the same, except exact form of f is used
m = Model( solver = gurobi() )
@variable x
@variable y , Bin
@variable c
@constraint of Ax + By <=b
@constraint c >= f(x,y)
@objective Min c
function CutGeneration
if...
println("User cut!")
@usercut( ax + by <= d)
end
```

During solving process, julia is really printing the sentences `user cut!`

, which means the cut generation function correctly goes to the step of add user cut.

But the output log is like

```
Cutting planes:
Gomory: 5
Cover: 7
Implied bound: 97
MIR: 49
Flow cover: 90
GUB cover: 6
Zero half: 3
```

Can someone help me on what happend ?

I put convex objective into epigraph form because later I have to implement another cutting plane on the epigraph of `f`

in space `(x,y,c)`

.