Before we describe the mixed-integer linear programming (MILP) certificate file format, we introduce some jargon and conventions used in this document.
Variables of the MILP problem are indexed from
We refer to two kinds of numbers: indices and values. Indices are integers. Values are rational numbers expressed as finite decimals or fractions.
The certificate file includes two kinds of constraints: the constraints of the MILP problem and derived constraints. Constraints have unique constraint names and are assigned indices starting from
Each constraint is of the form sense
is
Bound constraints such as
Suppose that the constraint sense
is
is said to be obtained from rounding.
We use a restricted form of constraint domination. A constraint that is
The constraint
Similarly, the constraint
Finally, the constraint
For a constraint named
For example, for the constraint
Specifying a constraint E
when sense
is L
when sense
is G
when sense
is
-
$p$ $i_1$ $a_{i_1}$ $\cdots$ $i_p$ $a_{i_p}$ ; - or the keyword
OBJ
for indicating that$a_{i_1}X_{i_1}+⋯+a_{i_p}X_{i_p}$ is the same as the objective function.
For example, the constraint C3
specified in constraint format is
C3 L 3 2 1 -1 2 6
If the objective function specified in the certificate file is equal to
C3 L 3 OBJ
Every constraint in the DER section specified below is associated with a reason
.
A reason
associated with a constraint with constraint index idx
must have one of the following forms:
- { asm }
- { lin
$p$ $i_1$ $\lambda_1$ $\cdots$ $i_p$ $\lambda_p$ } where$p$ is a nonnegative integer,$i_1,\dots,i_p$ are distinct indices at least$0$ and less thanidx
, and$\lambda_1,\dots,\lambda_p$ are rational values such that$\lambda_1\cdot C_{i_1}+\dots+\lambda_p\cdot C_{i_p}$ is a suitable linear combination that dominates the associated constraint; here$C_{i_j}$ denotes the constraint with index$i_j$ for$j=1,\dots,p.$ - { rnd
$p$ $i_1$ $\lambda_1$ $\cdots$ $i_p$ $\lambda_p$ } where$p$ is a nonnegative integer,$i_1,\dots,i_p$ are distinct indices at least$0$ and less thanidx
, and$\lambda_1,\dots,\lambda_p$ are rational values such that$\lambda_1\cdot C_{i_1}+⋯+\lambda_p\cdot C_{i_p}$ , is a suitable linear combination that can be rounded and the rounded constraint dominates the associated constraint; again$C_{i_j}$ denotes the constraint with index$i_j$ for$j=1,…,p.$ - { uns
$i_1$ $l_1$ $i_2$ $l_2$ } where$i_1, l_1, i_2, l_2$ are indices at least$0$ and less thanidx
such that the constraints indexed by$i_1$ and$i_2$ both dominate the associated constraint and the constraints indexed by$l_1$ and$l_2$ are, perhaps after reordering,$a_{i_1}X_{i_1}+\cdots a_{i_p}X_{i_p}\leq\beta$ and$a_{i_1}X_{i_1}+\cdots a_{i_p}X_{i_p}\geq\beta +1$ such that$\beta$ is an integer and for$j=1,…,p, a_{i_j}$ is an integer and$X_{i_j}$ is an integer variable. - { sol }
The initial lines of the file may be comment lines. Each comment line must begin with the character "%". The first line, after the comment lines, must be
VER 1.0
indicating that the certificate file conforms to version 1.0 of the certificate file format.
The remaining content is divided into seven sections and must appear in the following order:
VAR
for the variables,INT
for integer variables,OBJ
for the objective function,CON
for the constraints,RTP
for the relation to prove,SOL
for the solutions to check,DER
for the derivations.
These sections have to be formatted as shown below.
The section begins with
VAR n
where x
and y
:
VAR 2
x y
The section begins with
INT i
where x
and y
as integer variables:
INT 2
0 1
The section begins with
OBJ objsense
where objsense
is the keyword min
for minimization or max
for maximization, then followed by an integer
For example, the OBJ
section for the problem
could look like the following
OBJ min
2 0 1 1 1
The section begins with
CON m b
where
The constraints in this section are assigned indices from
For example, the CON
section for the problem
could look like the following
CON 2 0
C1 G 1 2 0 4 1 1
C2 L 2 2 0 4 1 -1
Here, there are no bound constraints but any program that outputs a certificate is free to choose arbitrary names for the bound constraints.
The section is either
RTP infeas
for indicating infeasibity, or
RTP range lb ub
where lb
specifies the lower bound on the optimal value to be verified and ub
specifies the upper bound on the optimal value to be verified. The specified lower bound can be -inf
if no actual lower bound is to be verified and the specified upper bound can be inf
if no actual upper bound is to be verified.
For example, if the RTP
section is
RTP range 1 inf
only a lower bound of RTP
section looks like this:
RTP range 1 1
The section begins with
SOL s
where s is the number of solutions to be verified for feasibility, and then followed by
name
is the solution name, 0
and 1
, the SOL
section could look like this:
SOL 2
feas 2 0 1 1 2
opt 1 1 1
The section begins with
DER d
where d
is the number of derived constraints to be verified, and then followed by
constraint reason index
where constraint
is the constraint to be verified in constraint format, reason
is the reason associated with the constraint in reason format, and index
is
- If
reason
is { asm }, then the set of assumptions contains simply the index of the constraint. - If
reason
is { lin$p\ i_1\ \lambda_1\ \cdots \ i_p\ \lambda_p$ } or { rnd$p\ i_1\ \lambda_1\ \cdots\ i_p\ \lambda_p$ }, then the set of assumptions is the union of the sets of assumptions of the constraints indexed by$i_1,…,i_p.$ - If
reason
is { uns$i_1\ l_1\ i_2\ l_2$ }, then the set of assumptions is the union of the sets of assumptions of the constraint indexed by$i_1$ without$l_1$ and of the constraint indexed by$i_2$ without$l_2.$
If the RTP
section is RTP infeas
, then the last constraint in this section should be an absurdity with an empty set of assumptions.
If the RTP
section is RTP range lb ub
, then the last constraint in this section should be a constraint with an empty set of assumptions that dominates OBJ
denotes the objective function.
Remark. The reason for specifying index
is to allow a verifier to discard the corresponding constraint from memory once the verifier has completed verifying constraint with index index
.
For example, the DER
section for the problem above could look like this:
C3 G -1/2 1 1 1 { lin 2 0 1/2 1 -1/2 } 3
C4 G 0 1 1 1 { rnd 1 2 1 } 4
C5 G 1/4 OBJ { lin 2 0 1/4 3 3/4 } 5
C6 G 1 OBJ { rnd 1 4 1 } 0
For a small example, we refer to the file paper_eg3.vipr.