Satisfiability modulo theories for verifying MILP certificates (2024)

Runtian ZhouDavidson College
Davidson, NC 28035
dazhou@davidson.edu
  Haoze WuStanford University
Stanford, CA 94305
haozewu@stanford.edu
  Hammurabi MendesDavidson College
Davidson, NC 28035
hamendes@davidson.edu
  Jonad PulajDavidson College
Davidson, NC 28035
jopulaj@davidson.edu

Abstract

Correctness of results returned from mixed-integer linear programming (MILP) solvers is highly desirable, particularly in the context of applications such as hardware verification, compiler optimization, or machine-assisted theorem proving. To this end, VIPR is the first recently proposed certificate format for answers produced by MILP solvers.We design a schema to encode VIPR’s inference rules as Satisfiability Modulo Theories (SMT) instances and show the equivalence of the certificates’ correctness and the satisfiability of the corresponding SMT instances. In addition, we implement this schema with and without parallelization in a checker for VIPR certificates and test the viability of this approach on benchmark instances found in the literature with the cvc5 solver.

Index Terms:

MILP, verification, SMT, proof checking.

publicationid: pubid: 0000–0000©2023 IEEE

I Introduction

Computational mixed-integer linear programing (MILP) is widely considered a successful blend of algorithmic improvement with advancements in hardware and compilers[1], where current state-of-the-art MILP solvers can solve problems with millions of variables and constraints[2].

Demand for MILP solvers is largely driven by applications in industry, hence the underlying numerical computations typically rely on floating-point arithmetic for efficiency. For most such applications, in order to achieve a high degree of numerical stability, floating point computations are combined with numerical error tolerances. However, MILP solvers are also used in experimental mathematics to find counterexamples[3, 4] or provide numerical evidence[5, 6]. In such theorem proving applications, correctness is tantamount and additional safeguards are needed to counter the use of inexact floating-point arithmetic and/or programming or algorithmic errors. The best known example in this case is the verification in Isabelle/HOL of the infeasibility of thousands of linear programs involved in the proof of Kepler’s conjecture [7].

Another set of tools that have been successfully deployed in automated theorem proving tasks are Boolean Satisfiability (SAT) solvers and Satisfiability Modulo Theories (SMT) solvers[8]. For example, SAT solvers have had success in settling a number of long-standing mathematical problems including the Erdos discrepancy conjecture[9], the Boolean Pythagorean triples conjecture[10], and the determination of the fifth Schur number[11]. On the other hand, SMT solvers are increasingly used as subroutines for proof assistants[12, 13] to automatically resolve proof goals. In those applications, SAT/SMT solvers are often required to produce proofs, which can be independently checked by proof checkers to guarantee the correctness of the solver outputs. One theory particularly relevant to MILP is the theory of Linear Real Arithmetic, for which proof production is supported in state-of-the-art SMT solvers such as Z3, cvc5, and MathSAT5.

Although verification of answers returned by MILP solvers is not as well-established as in analogous solvers in the SAT/SMT community, significant steps forward have been made. VIPR is the first, recently proposed branch-and-cut certificate format for MILP instances, designed with simplicity in mind, which is composed of a list of statements that can be sequentially verified using a limited number of inference rules [14, 15]. This certificate format was used in the proof of special cases of Chvátal’s conjecture [16], and in the proof of the 3-sets conjecture[17]. The VIPR certificate format is currently implemented in the latest versions of exact SCIP[18], together with a checker (written in C++) for the corresponding certificates.

The motivation for this work is leveraging advances in SMT solvers for the verification of certificates for MILP instances, in order to provide a viable alternative to the existing checker.Our key observation is that a VIPR certificate is valid if and only if a corresponding quantifier-free SMT formula is satisfiable. To this end, we design a checker for VIPR certificates by encoding the format’s inference rules as SMT instances. As a by-product of our experimental evaluation, we also implement a straightforward transformation from MILP instances to SMT instances. All associated code with this project is freely available on GitHub 111https://github.com/zhoum929/Satisfiability-modulo-theories-for-verifying-MILP-certificates.

In particular, our main contributions are:

  • We describe the logic of transforming VIPR certificates into SMT instances in SMT2 format[20]. In addition, we describe the logic of transforming MILP instances in MPS format[19] into SMT instances in SMT2 format.

  • We show the equivalence of VIPR certificates and the transformed SMT instances, and evaluate the viability of our certificate checker based on benchmarks instances used in the literature[14].

The rest of this paper is organized as follows. Section II presents the logic of transformation from VIPR certificates to SMT instances. Section III proves the equivalence of VIPR certificates and the transformed SMT instances. Section IV presents an evaluation of our design tested on known benchmarks. Section V concludes the paper, and the Appendix contains more proof details of Section III, and the schema of transforming MILP instances into SMT instances.

II Methodology

In this section, we describe the design of the checker for VIPR certificates. At a high level, a VIPR certificate contains two main parts: a system part that describes the original MILP problem (constraints, variable types, etc.) and an inference part that describes the reasoning of the certificate (assumptions and inferenced constraints). As part of our checker design we declare a fixed variable in SMT2 format for each constant (coefficient) specified in the corresponding VIPR certificate, so that the symbolic computation of the inferenced reasoning can be wholly captured in an SMT solver.

When transforming the system part into an SMT instance, we don’t use assert statements to determine whether each constraint of the original MILP instance holds. Instead we encode each coefficient in a given constraint as a fixed variable. Furthermore when transforming the inference part, we also encode every coefficient in each inferenced constraint. Finally, the reasoning part of each inferenced constraint is transformed into several assert statements which check inequalities between constants.

In short, our transformation ensures that SMT solvers are only burdened with the work involved in the symbolic computation of the reasoning of the certificate. Thus we seek to reduce the computational burden of SMT solvers by mainly checking formulas with fixed variables. 222A relatively expensive operation we encode in our checker is Chvátal-Gomory rounding. Since the SMT2 format doesn’t natively provide a rounding operation, we enforce it by encoding several assert statements.

A standard VIPR certificate file contains 7777 sections: VAR, INT, CON, RTP, SOL, OBJ, and DER. Figure 1 provides an overview of the logic of transformation from these sections to SMT statements. The VAR and INT sections are transformed into assert and declare-fun statements specifying types of variables in the original MILP problem. The CON section is transformed into assert and declare-fun statements specifying type, rhs (right hand side value), and coefficients of each constraint in the original MILP problem. The SOL section is transformed into assert and declare-fun statements specifying variable assignment in each solution given by the MILP solver, and assert statements verifying that these variable assignments do satisfy the constraints specified in the CON section. The OBJ section is transformed into assert and declare-fun statements specifying the coefficients of each variable in the objection function. The DER section is transformed into assert and declare-fun statements specifying the type, rhs, and coefficients used in each inferenced (derived) constraint and the reasoning of that constraint. In addition, RTP, SOL, OBJ, and DER sections together contribute to the assert statement specifying the lower and upper bounds of the optimum value of the objective function, when they exist.333For further details on the VIPR format, please refer to[14].

In AppendixV-A, we provide additional details with respect to the transformation of each sections of the VIPR certificate. Furthermore, in AppendixV-C we describe a straightforward transformation from MPS to SMT2 format.

III Validity of VIPR transformation

The design of the derivations in the VIPR certificates, which in turn aim to verify the result returned by a MILP solver, is based on well-understood principles in the MILP domain such as the branch-and-cut method and split cuts[14]. The VIPR certificate format “flattens” the associated branch-and-bound tree explored by MILP solvers and renders it into a series of statements (corresponding to lines) that can be verified sequentially.

We provide the reader with a high level idea of our arguments’ structure. Please see AppendixV-B for a full, general proof and all its corresponding details.

Here we assume that the OBJ section begins with OBJ min,OBJ min\texttt{OBJ min},OBJ min , which states that the VIPR certificate is verifying a minimization problem. We also assume that the the RTP section begins with RTP lb ub,RTP lb ub\texttt{RTP lb ub},RTP lb ub , where lb,ub𝑙𝑏𝑢𝑏lb,ubitalic_l italic_b , italic_u italic_b are real numbers, which states that the VIPR certificate is verifying the upperbound of ub𝑢𝑏ubitalic_u italic_b and the lowerbound of lb𝑙𝑏lbitalic_l italic_b for the objective function.

Definition 1.

The part inside the {}\{\}{ } of a line in the DER section is called the reasoning of that line.

Definition 2.

The constraint presented in a line in the DER section is called valid, if it

  1. 1.

    is an “assumption” (represented by reasoning of {asm}𝑎𝑠𝑚\{asm\}{ italic_a italic_s italic_m });

  2. 2.

    or, is not an assumption (represented by reasoning other than {asm}𝑎𝑠𝑚\{asm\}{ italic_a italic_s italic_m }) but is implied by rounding and linear combinations of previous constraints. These previous constraints are called the dependencies of this line.

Definition 3.

The DER section begins with the line

DER mmmitalic_m

followed by m𝑚mitalic_m lines of derived constraints. The DER section is called valid, if

  1. 1.

    Each line of the DER section is valid;

  2. 2.

    The last constraint in the DER section is derived only from the MILP constraints in the CON section.

  3. 3.

    The last constraint in the DER section proves lb𝑙𝑏lbitalic_l italic_b is an lower bound of the optimum value.

Lemma 1.

The DER section is valid, if and only if the transcribed SMT formula is satisfiable.

Definition 4.

Each line of the SOL section presents a solution, i.e. assignments of values to variables, to the MILP problem. Such a line is called valid if it satisfies all the constraints of the MILP problem presented in the CON section.

Definition 5.

The SOL section begins with the line

SOL mmmitalic_m

followed by m𝑚mitalic_m lines of solutions. The SOL section is called valid, if

  1. 1.

    Each line of the SOL section is valid;

  2. 2.

    At least one line of the SOL section provides a solution that proves ub𝑢𝑏ubitalic_u italic_b is an upper bound of the optimum value.

Lemma 2.

The SOL section is valid, if and only if the transcribed SMT formula is satisfiable.

Definition 6.

A VIPR certificate is called valid, if its SOL section and DER section are valid.

Note that by definition of SOL and DER being valid, a VIPR certificate being valid means the lower and upper bound of the optimum value presented in the RTP section is verified.

Theorem 1.

A VIPR certificate is valid, if and only if the transcribed SMT formula is satisfiable.

Theorem1 follows from Lemma2 and Lemma1.

IV Experiments

In this section, we evaluate the proposed proof-checking workflow on MILP benchmarks studied by the authors of VIPR[14].We focus on each of the benchmarks that meets the following criterion: 1) a certificate (of either infeasibility or both lower and upper bounds) is produced; 2) the corresponding MPS (i.e., a standard format for MILP problem) file is publicly available. This amounts to 55 benchmarks in total. Following the strategy in the original paper, we partition the benchmark set into “easy” and “hard”, which contain 46 and 9 instances, respectively.

We compare the following four strategies:

  1. 1.

    Checking the VIPR certificate with the original proof checker[14];

  2. 2.

    Checking the VIPR certificate by viprsmtchk, the VIPR checker designed by us that transform lines of a VIPR certificate sequentially and check by SMT solver cvc5[22], without parallelization;

  3. 3.

    Checking the VIPR proof by viprsmtchk with parallelization;

  4. 4.

    Checking the VIPR certificate by transforming the whole file into an SMT instance and check by SMT solver cvc5. Spefically, two programs are provided: vipr__\__to__\__smt tranforms a VIPR certificate into an SMT instance in SMT2 format, and normalize_num transforms numbers in a SMT2 file into cvc5 format (for instance, encodes 55-5- 5 as ((-( - 5)5)5 )).

In addition, we also provide a MPS2SMT transformer that converts MPS files into SMT instances. Our programs are all written in C++. We run experiments in 3333 Intel Xeon Gold 6226R running at 2.902.902.902.90GHz, each with 32323232 CPUs available (and each CPU supports 2222 hyperthreads). Experimental results for Strategy 1,2, and 3 are aggregated in TableII. Experimental results for Strategy 4 are aggregated in TableI.

Test SetInstTtranssubscript𝑇𝑡𝑟𝑎𝑛𝑠T_{trans}italic_T start_POSTSUBSCRIPT italic_t italic_r italic_a italic_n italic_s end_POSTSUBSCRIPTTcvc5subscript𝑇𝑐𝑣𝑐5T_{cvc5}italic_T start_POSTSUBSCRIPT italic_c italic_v italic_c 5 end_POSTSUBSCRIPTSviprsubscript𝑆𝑣𝑖𝑝𝑟S_{vipr}italic_S start_POSTSUBSCRIPT italic_v italic_i italic_p italic_r end_POSTSUBSCRIPTSsmt2subscript𝑆𝑠𝑚𝑡2S_{smt2}italic_S start_POSTSUBSCRIPT italic_s italic_m italic_t 2 end_POSTSUBSCRIPT
Easy-all46464646522.9522.9522.9522.9N/A711.3711.3711.3711.314567.014567.014567.014567.0
Easy-solved3131313130.830.830.830.8854.9854.9854.9854.9101.7101.7101.7101.71229.01229.01229.01229.0
Easy-memout151515151631.81631.81631.81631.8N/A1971.11971.11971.11971.142132.142132.142132.142132.1
Hard-all9999150.5150.5150.5150.5N/A378.0378.0378.0378.04422.64422.64422.64422.6
Hard-solved777759.159.159.159.11176.01176.01176.01176.0147.6147.6147.6147.61619.11619.11619.11619.1
Hard-memout2222470.3470.3470.3470.3N/A1185.01185.01185.01185.014234.514234.514234.514234.5

In Table I, the inst column shows the number of tests in each test set. The Ttranssubscript𝑇𝑡𝑟𝑎𝑛𝑠T_{trans}italic_T start_POSTSUBSCRIPT italic_t italic_r italic_a italic_n italic_s end_POSTSUBSCRIPT and Tcvc5subscript𝑇𝑐𝑣𝑐5T_{cvc5}italic_T start_POSTSUBSCRIPT italic_c italic_v italic_c 5 end_POSTSUBSCRIPT columns show the average time (in second) vipr__\__to__\__smt needs to transform VIPR certificates into SMT2 format and the average time cvc5 needs to check the transformed SMT2 file. The Sviprsubscript𝑆𝑣𝑖𝑝𝑟S_{vipr}italic_S start_POSTSUBSCRIPT italic_v italic_i italic_p italic_r end_POSTSUBSCRIPT and Ssmt2subscript𝑆𝑠𝑚𝑡2S_{smt2}italic_S start_POSTSUBSCRIPT italic_s italic_m italic_t 2 end_POSTSUBSCRIPT columns show the average size (in MB) of the original VIPR certificate and the transformed SMT2 file. For rows labeled “memout”, it contains tests where cvc5 solver requires more than 256256256256 GB RAM.

We observe that the size ratio between Sviprsubscript𝑆𝑣𝑖𝑝𝑟S_{vipr}italic_S start_POSTSUBSCRIPT italic_v italic_i italic_p italic_r end_POSTSUBSCRIPT and Ssmt2subscript𝑆𝑠𝑚𝑡2S_{smt2}italic_S start_POSTSUBSCRIPT italic_s italic_m italic_t 2 end_POSTSUBSCRIPT of each test set does not exhibit significant difference. This implies the transformation from VIPR certificates to SMT2 format generates a linear increase in the file size, as expected. We also observe that 17171717 benchmarks, all of which have VIPR file size at least 200200200200 MB, cannot be checked with Strategy 4 within space limit of 256256256256 GB, showing the need for sequential transformation as shown in Strategy 2 and 3. For all the test cases solved by cvc5 within the space limit, they give the same results as the results from the C++ checker provided in [14], showing that all VIPR certificates are valid.

Since a VIPR certificate contains all the reasoning to deduce the answer to a MILP problem, it is often much larger than the file containing the original MILP problem (usually encoded in MPS or LP format). As a result, if we transform all the information of a VIPR certificate into an equivalent SMT instance it may simply be too large for an SMT solver to handle directly.

For this reason, we implement a sequential version of the transformation schema in our VIPR checker, which allows SMT solvers to check most VIPR certificates within time and space limit. Specifically, we observe that the validity of each line of the DER section is independent on the lines that directly below it (see formal proof in the AppendixV-B) so its transformation can be encoded independently. Hence we can transform several lines of a VIPR certificate, called a “block”, to an SMT instance, check it with SMT solver, then delete it and transform the next sequential lines of the VIPR file. We use block size to denote the largest number of lines of a VIPR certificate that are checked each time. We also provide an option to check blocks in parallel which further enhances the efficiency of our checker.

Note that the encoding size of different lines in VIPR certificates can be very different. To ensure the SMT solver does not run into memories issues, we also set up a limit for the actual size of blocks: if over 3,000,00030000003,000,0003 , 000 , 000 statements have been encoded in the current SMT instance, we will close the block immediately after the encoding of the current constraint.

Test SetInstT1subscript𝑇1T_{1}italic_T start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPTT2,B=50subscript𝑇2𝐵50T_{2,B=50}italic_T start_POSTSUBSCRIPT 2 , italic_B = 50 end_POSTSUBSCRIPTT3,B=50subscript𝑇3𝐵50T_{3,B=50}italic_T start_POSTSUBSCRIPT 3 , italic_B = 50 end_POSTSUBSCRIPTSviprsubscript𝑆𝑣𝑖𝑝𝑟S_{vipr}italic_S start_POSTSUBSCRIPT italic_v italic_i italic_p italic_r end_POSTSUBSCRIPT
Easy46464646155.6155.6155.6155.612566.612566.612566.612566.6825.4825.4825.4825.4711.3711.3711.3711.3
Hard999934.634.634.634.63031.63031.63031.63031.6232.9232.9232.9232.9378.0378.0378.0378.0

In Table II, the T1,T2,B=50,subscript𝑇1subscript𝑇2𝐵50T_{1},T_{2,B=50},italic_T start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT , italic_T start_POSTSUBSCRIPT 2 , italic_B = 50 end_POSTSUBSCRIPT , and T3,B=50subscript𝑇3𝐵50T_{3,B=50}italic_T start_POSTSUBSCRIPT 3 , italic_B = 50 end_POSTSUBSCRIPT columns show the average time Strategy 1,2, and 3 need to check the transformed SMT instances. Here, B=50𝐵50B=50italic_B = 50 is the setup of block size in viprsmtchk : at most 50505050 lines of the VIPR certificate is encoded in each SMT instance.

As expected, with sequential transformation (Strategy 2 and 3), viprsmtchk is able to check each of the 55555555 benchmarks and it gives the same results as the C++ checker provided in [14], showing that all VIPR certificates are valid. We also make the observation that, with parallelization (Strategy 3), viprsmtchk could check each of the 55555555 benchmarks within 2222 hours, which is not too far away from the time used by the C++ checker provided in [14] (Strategy 1). We expect this performance gap can be further closed by additional optimizations in our parallelization scheme.

In addition, we test Strategy 2 and 3 on other block sizes (B=12,25,50,100𝐵122550100B=12,25,50,100italic_B = 12 , 25 , 50 , 100) and in all cases, B=50𝐵50B=50italic_B = 50 or 100100100100 is the best choice. For more details of these experiments and parallelization, please see AppendixV-D.

We also perform these 55555555 tests on our program of direct transformation from MILP problems in MPS format to SMT instances in SMT2 format. In comparison to transformation from VIPR certificates, directly transforming MPS format to SMT2 format is much faster, since the major work performed is parsing and no special data structures are needed. For SMT2 files transformed as a whole (non-sequentially) from VIPR certificates of the 55555555 tests, 38383838 can be solved by cvc5 in 4444 hours. In comparison, for the SMT2 files transformed from MPS format of the 55555555 tests, only 18181818 can be solved by cvc5 in 4444 hours. As expected, the time needed for an SMT solver to check the SMT2 file transformed from MPS format is often much longer than the time needed for SMT2 files transformed from VIPR certificates.

V Conclusions

In this work we seek to leverage advances in SMT solvers to verify VIPR certificates for MILP solvers. Thus we design a VIPR certificate checker that transforms the logic of the VIPR certificate into an equivalent SMT instance. We test the viability of our checker on 55555555 benchmark instances, and compare between different implemented strategies. For future directions we seek to introduce further optimizations in our parallel implementation, and possibly leverage SMT solvers’ incremental techniques to improve the efficiency of our approach.

References

  • [1]R.E. Bixby, “A brief history of linear and mixed-integer programmingcomputation,” Documenta Mathematica, vol. 2012, pp. 107–121, 2012.
  • [2]T.Koch, T.Berthold, J.Pedersen, and C.Vanaret, “Progress in mathematicalprogramming solvers from 2001 to 2020,” EURO Journal on ComputationalOptimization, vol.10, p. 100031, 2022.
  • [3]G.Lancia, E.Pippia, and F.Rinaldi, “Using integer programming to search forcounterexamples: A case study,” in International Conference onMathematical Optimization Theory and Operations Research.Springer, 2020, pp. 69–84.
  • [4]J.Pulaj, “Cutting planes for families implying frankl’s conjecture,”Mathematics of Computation, vol.89, no. 322, pp. 829–857, 2020.
  • [5]D.Stolee, “A linear programming approach to the manickam-miklos-singhiconjecture,” 2013.
  • [6]F.Kenter and D.Skipper, “Integer-programming bounds on pebbling numbers ofcartesian-product graphs,” in International Conference onCombinatorial Optimization and Applications.Springer, 2018, pp. 681–695.
  • [7]T.C. Hales, “A proof of the kepler conjecture,” Annals ofmathematics, pp. 1065–1185, 2005.
  • [8]L.DeMoura and N.Bjørner, “Satisfiability modulo theories: Anappetizer,” in Brazilian Symposium on Formal Methods.Springer, 2009, pp. 23–36.
  • [9]B.Konev and A.Lisitsa, “Computer-aided proof of erdős discrepancyproperties,” Artificial Intelligence, vol. 224, pp. 103–118, 2015.
  • [10]M.J. Heule, O.Kullmann, and V.W. Marek, “Solving and verifying the booleanpythagorean triples problem via cube-and-conquer,” in InternationalConference on Theory and Applications of Satisfiability Testing.Springer, 2016, pp. 228–245.
  • [11]M.Heule, “Schur number five,” in Proceedings of the AAAI Conference onArtificial Intelligence, vol.32, no.1, 2018.
  • [12]S.Böhme and T.Nipkow, “Sledgehammer: judgement day,” in AutomatedReasoning: 5th International Joint Conference, IJCAR 2010, Edinburgh, UK,July 16-19, 2010. Proceedings 5.Springer, 2010, pp. 107–121.
  • [13]B.Ekici, A.Mebsout, C.Tinelli, C.Keller, G.Katz, A.Reynolds, andC.Barrett, “Smtcoq: A plug-in for integrating smt solvers into coq,” inComputer Aiåded Verification: 29th International Conference, CAV 2017,Heidelberg, Germany, July 24-28, 2017, Proceedings, Part II 30.Springer, 2017, pp. 126–133.
  • [14]K.K. Cheung, A.Gleixner, and D.E. Steffy, “Verifying integer programmingresults,” in Integer Programming and Combinatorial Optimization: 19thInternational Conference, IPCO 2017, Waterloo, ON, Canada, June 26-28, 2017,Proceedings 19.Springer, 2017, pp.148–160.
  • [15]L.Eifler and A.Gleixner, “Safe and verified gomory mixed integer cuts in arational mip framework,” arXiv preprint arXiv:2303.12365, 2023.
  • [16]L.Eifler, A.Gleixner, and J.Pulaj, “A safe computational framework forinteger programming applied to chvátal’s conjecture,” ACMTransactions on Mathematical Software (TOMS), vol.48, no.2, pp. 1–12,2022.
  • [17]J.Pulaj, “Characterizing 3-sets in union-closed families,”Experimental Mathematics, vol.32, no.2, pp. 350–361, 2023.
  • [18]W.Cook, T.Koch, D.E. Steffy, and K.Wolter, “An exact rationalmixed-integer programming solver,” in Integer Programming andCombinatoral Optimization: 15th International Conference, IPCO 2011, NewYork, NY, USA, June 15-17, 2011. Proceedings 15.Springer, 2011, pp. 104–116.
  • [19]I.I. Cplex, “V12. 1: User’s manual for cplex,” InternationalBusiness Machines Corporation, vol.46, no.53, p. 157, 2009.
  • [20]C.Barrett, A.Stump, C.Tinelli etal., “The smt-lib standard: Version2.0,” in Proceedings of the 8th international workshop onsatisfiability modulo theories (Edinburgh, UK), vol.13, 2010, p.14.
  • [21]L.DeMoura and N.Bjørner, “Z3: An efficient smt solver,” inInternational conference on Tools and Algorithms for the Constructionand Analysis of Systems.Springer,2008, pp. 337–340.
  • [22]H.Barbosa, C.Barrett, M.Brain, G.Kremer, H.Lachnitt, M.Mann, A.Mohamed,M.Mohamed, A.Niemetz, A.Nötzli etal., “cvc5: A versatile andindustrial-strength smt solver,” in International Conference on Toolsand Algorithms for the Construction and Analysis of Systems.Springer, 2022, pp. 415–442.

Appendix

V-A Transforming VIPR certificates to SMT instances

In this subsection, we provide more details with respect to the transformation of each section of the VIPR certificate (VAR, INT, CON, RTP, SOL, OBJ, and DER). The VAR and INT sections specify the type (real or integer) of variables in the original MILP problem. The type of each integer is encoded as a boolean variable with fixed value, using a declare-fun statement and an assert statement. Let’s take a look at an example of the VAR and INT sections in a VIPR certificate.

VAR 2
x y
INT 1
1

The VAR section shows that the original MILP problem has two variables, x𝑥xitalic_x and y𝑦yitalic_y, and our checker will index them starting from 00. Thus x𝑥xitalic_x will be interpreted as x0subscript𝑥0x_{0}italic_x start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT and y𝑦yitalic_y as x1subscript𝑥1x_{1}italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT. The INT section shows that only the variable with index 1111 is an integer variable. Thus x1subscript𝑥1x_{1}italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT is an integer variable and x0subscript𝑥0x_{0}italic_x start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT is a real variable. This information is encoded as:

(declare-fun is__\__intx0 () Bool)
(assert (not is__\__intx0))
(declare-fun is__\__intx1 () Bool)
(assert is_intx1).(assert is_intx1)\displaystyle\texttt{(assert is$\_$intx1)}.(assert is _ intx1) .

where is__\__intx0 is a boolean variable representing whether x0subscript𝑥0x_{0}italic_x start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT is an integer variable or not. Notice that VIPR does not distinguish boolean variables from integer variables or bound constraints from general constraints.

The OBJ section specifies the coefficients of variables in the objective function. Each coefficient is encoded as a real variable in SMT2 format using a declare-fun statement and an assert statement. Let’s take a look at an example of the OBJ section in a VIPR certificate:

OBJ min
1 0 2.1 0 2\displaystyle\texttt{1 0 2}.1 0 2 .

The first number of the second line, 1111, means there is only one variable in the objective function with a non-zero coefficient. The next number, 00, is the index of this variable. The next number, 2222, is the coefficient of this variable. Thus the original MILP problem is a minimization problem and its objective function is 2x02subscript𝑥02x_{0}2 italic_x start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT. In SMT2 format, this information is encoded as:

(declare-fun obj0 () Real)
(assert (= obj0 2.0)).(assert (= obj0 2.0))\displaystyle\texttt{(assert (= obj0 2.0))}.(assert (= obj0 2.0)) .

We use set structures in C++ to store the indecees of variables with non-zero coefficients in the objective function.

The RTP section specifies the result of the MILP solver. It either states the system is infeasible, or it gives the upper and lower bounds of the objective function. These information will be stored during the transformation for later use and will not be encoded into SMT2 format directly.

The CON section specifies the constraints in the original MILP problem (including bounds of variables). Here is an example line in the CON constraint:

CX G 1 2 0 2 1 3.CX G 1 2 0 2 1 3\texttt{CX G 1 2 0 2 1 3}.CX G 1 2 0 2 1 3 .

The first term, CX, is the name of the constraint. Constraints (including original constraints and inferenced constraints) in a VIPR certificate will be given index starting from 00 in the transformation. If this CX is the first line of CON section, then it will be referred to as c0subscript𝑐0c_{0}italic_c start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT, meaning the first constraint, and the name CX will be disregarded. The next term, G𝐺Gitalic_G, means c0subscript𝑐0c_{0}italic_c start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT is a >=>=> = constraint. In SMT2 format this is encoded as:

(declare-fun cs0 () Real)
(assert (= cs0 1.0))

where cs0𝑐𝑠0cs0italic_c italic_s 0 specifies the type of the constraint with index 00. If it is a >=>=> = constraint, cs0𝑐𝑠0cs0italic_c italic_s 0 is assigned value 1.01.01.01.0. If it is a <=<=< = constraint, cs0𝑐𝑠0cs0italic_c italic_s 0 is assigned value 1.01.0-1.0- 1.0. If it is an === constraint, cs0𝑐𝑠0cs0italic_c italic_s 0 is assigned value 0.00.00.00.0. This information will be used later to check the validity of inferenced constraints as linear combinations of other valid constraints.

The next term, 1111, is the right hand side value of this constraint. In SMT2 format, this is encoded as:

(declare-fun crhs0 () Real)
(assert (= crhs0 1.0)).(assert (= crhs0 1.0))\displaystyle\texttt{(assert (= crhs0 1.0))}.(assert (= crhs0 1.0)) .

The next term, 2222, means that there are two variables in this constraint with non-zero coefficients. The last four terms mean that x0subscript𝑥0x_{0}italic_x start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT has coefficient 2222 and x1subscript𝑥1x_{1}italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT has coefficient 3333. In SMT2 format, this is encoded as

(declare-fun c0x0 () Real)
(assert (= c0x0 2.0))
(declare-fun c0x1 () Real)
(assert (= c0x1 3.0)).(assert (= c0x1 3.0))\displaystyle\texttt{(assert (= c0x1 3.0))}.(assert (= c0x1 3.0)) .

Thus constraint c1𝑐1c1italic_c 1 corresponds to inequality 2x0+3x112subscript𝑥03subscript𝑥112x_{0}+3x_{1}\geq 12 italic_x start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT + 3 italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ≥ 1.

So far, we have outlined how the information of the original MILP problem is encoded into SMT2 format by our checker. The last two sections, SOL and DER, contain crucial information for the validity of a VIPR certificate. Together they verify the MILP solver reported result in the RTP section. We will discuss more details of this transformation in the next subsection.

V-B Formal Proof for the Validity of VIPR Transformation

Here is the formal proof of Theorem1. In later discussion, suppose the MILP problem corresponding to the VIPR certificate contains n𝑛nitalic_n variables: x1,,xnsubscript𝑥1subscript𝑥𝑛x_{1},\ldots,x_{n}italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT , … , italic_x start_POSTSUBSCRIPT italic_n end_POSTSUBSCRIPT.

Definition 7 (Variable Type).

For each i[n]𝑖delimited-[]𝑛i\in[n]italic_i ∈ [ italic_n ], define the type value of xisubscript𝑥𝑖x_{i}italic_x start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT, denoted by Iisubscript𝐼𝑖I_{i}italic_I start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT, as following boolean variable:

Ii={true, ifxiis an integer variablefalse, ifxiis a real varialbe.subscript𝐼𝑖cases𝑡𝑟𝑢𝑒, ifxiis an integer variableotherwise𝑓𝑎𝑙𝑠𝑒, ifxiis a real varialbeotherwiseI_{i}=\begin{cases}true\text{, if $x_{i}$ is an integer variable}\\false\text{, if $x_{i}$ is a real varialbe}\end{cases}.italic_I start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT = { start_ROW start_CELL italic_t italic_r italic_u italic_e , if italic_x start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT is an integer variable end_CELL start_CELL end_CELL end_ROW start_ROW start_CELL italic_f italic_a italic_l italic_s italic_e , if italic_x start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT is a real varialbe end_CELL start_CELL end_CELL end_ROW .

This boolean variable are declared and assigned value at the very beginning of the transformed SMT2 file.

Definition 8 (Problem Type).

The type of the corresponding MILP problem in a VIPR certificate, denoted by P𝑃Pitalic_P, is defined as the following boolean variable:

P:={true, if OBJ section begins with “OBJ min”false, if OBJ section begins with “OBJ max”.assign𝑃cases𝑡𝑟𝑢𝑒, if OBJ section begins with “OBJ min”otherwise𝑓𝑎𝑙𝑠𝑒, if OBJ section begins with “OBJ max”otherwiseP:=\begin{cases}true\text{, if OBJ section begins with ``OBJ min"}\\false\text{, if OBJ section begins with ``OBJ max"}\end{cases}.italic_P := { start_ROW start_CELL italic_t italic_r italic_u italic_e , if OBJ section begins with “OBJ min” end_CELL start_CELL end_CELL end_ROW start_ROW start_CELL italic_f italic_a italic_l italic_s italic_e , if OBJ section begins with “OBJ max” end_CELL start_CELL end_CELL end_ROW .

Specifically, if P𝑃Pitalic_P is true, then VIPR verifies results of a minimization MILP problem and if P𝑃Pitalic_P is false, then VIPR verifies results of a maximization MILP problem.

Definition 9 (Result Type).

The type of results in a VIPR certificate, denoted by F𝐹Fitalic_F, is defined as the following boolean variable:

F:={false, if RTP section begins with “RTP infeas”true, if OBJ section begins with “RTP lb ub”wherelb,ubare numbers.assign𝐹cases𝑓𝑎𝑙𝑠𝑒, if RTP section begins with “RTP infeas”otherwise𝑡𝑟𝑢𝑒, if OBJ section begins with “RTP lb ub”otherwisewherelb,ubare numbersotherwiseF:=\begin{cases}false\text{, if RTP section begins with ``RTP infeas"}\\true\text{, if OBJ section begins with ``RTP lb ub"}\\\text{$\,\,\,$ where $lb,ub$ are numbers}\end{cases}.italic_F := { start_ROW start_CELL italic_f italic_a italic_l italic_s italic_e , if RTP section begins with “RTP infeas” end_CELL start_CELL end_CELL end_ROW start_ROW start_CELL italic_t italic_r italic_u italic_e , if OBJ section begins with “RTP lb ub” end_CELL start_CELL end_CELL end_ROW start_ROW start_CELL where italic_l italic_b , italic_u italic_b are numbers end_CELL start_CELL end_CELL end_ROW .

When F=true𝐹𝑡𝑟𝑢𝑒F=trueitalic_F = italic_t italic_r italic_u italic_e, i.e. RTP section begins with “RTP lb ub”, we use real variables L:=lbassign𝐿𝑙𝑏L:=lbitalic_L := italic_l italic_b and U:=ubassign𝑈𝑢𝑏U:=ubitalic_U := italic_u italic_b to represent the lower and upper bound of the optimum value, correspondingly. These two variables are declared and assigned value at the very beginning of the transformed SMT2 file. If F=false𝐹𝑓𝑎𝑙𝑠𝑒F=falseitalic_F = italic_f italic_a italic_l italic_s italic_e, then we do not assign value to L𝐿Litalic_L and U𝑈Uitalic_U as they will be meaningless.

Definition 10 (Constraint).

Suppose the MILP problem has n𝑛nitalic_n variables. A constraint, C𝐶Citalic_C, in a VIPR certificate is a relationship in one of three forms: (Cl)txCrsuperscriptsubscript𝐶𝑙𝑡𝑥subscript𝐶𝑟(C_{l})^{t}x\leq C_{r}( italic_C start_POSTSUBSCRIPT italic_l end_POSTSUBSCRIPT ) start_POSTSUPERSCRIPT italic_t end_POSTSUPERSCRIPT italic_x ≤ italic_C start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT, (Cl)txCrsuperscriptsubscript𝐶𝑙𝑡𝑥subscript𝐶𝑟(C_{l})^{t}x\geq C_{r}( italic_C start_POSTSUBSCRIPT italic_l end_POSTSUBSCRIPT ) start_POSTSUPERSCRIPT italic_t end_POSTSUPERSCRIPT italic_x ≥ italic_C start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT, or (Cl)tx=Crsuperscriptsubscript𝐶𝑙𝑡𝑥subscript𝐶𝑟(C_{l})^{t}x=C_{r}( italic_C start_POSTSUBSCRIPT italic_l end_POSTSUBSCRIPT ) start_POSTSUPERSCRIPT italic_t end_POSTSUPERSCRIPT italic_x = italic_C start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT, where Crsubscript𝐶𝑟C_{r}\in\mathbb{R}italic_C start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT ∈ blackboard_R, x𝑥xitalic_x is the n𝑛nitalic_n-dimension vector representing the n𝑛nitalic_n variables in the MILP problem, and Clnsubscript𝐶𝑙superscript𝑛C_{l}\in\mathbb{R}^{n}italic_C start_POSTSUBSCRIPT italic_l end_POSTSUBSCRIPT ∈ blackboard_R start_POSTSUPERSCRIPT italic_n end_POSTSUPERSCRIPT representing the coefficients of variables. Define the sign of C𝐶Citalic_C, denoted by Cssubscript𝐶𝑠C_{s}italic_C start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT, as

Cs={1,ifCin the form(Cl)txCr;0,ifCin the form(Cl)tx=Cr;1,ifCin the form(Cl)txCr.subscript𝐶𝑠cases1ifCin the form(Cl)txCrotherwise0ifCin the form(Cl)tx=Crotherwise1ifCin the form(Cl)txCrotherwiseC_{s}=\begin{cases}-1,\text{ if $C$ in the form $(C_{l})^{t}x\leq C_{r}$};\\0,\text{ if $C$ in the form $(C_{l})^{t}x=C_{r}$};\\1,\text{ if $C$ in the form $(C_{l})^{t}x\geq C_{r}$}.\end{cases}italic_C start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT = { start_ROW start_CELL - 1 , if italic_C in the form ( italic_C start_POSTSUBSCRIPT italic_l end_POSTSUBSCRIPT ) start_POSTSUPERSCRIPT italic_t end_POSTSUPERSCRIPT italic_x ≤ italic_C start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT ; end_CELL start_CELL end_CELL end_ROW start_ROW start_CELL 0 , if italic_C in the form ( italic_C start_POSTSUBSCRIPT italic_l end_POSTSUBSCRIPT ) start_POSTSUPERSCRIPT italic_t end_POSTSUPERSCRIPT italic_x = italic_C start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT ; end_CELL start_CELL end_CELL end_ROW start_ROW start_CELL 1 , if italic_C in the form ( italic_C start_POSTSUBSCRIPT italic_l end_POSTSUBSCRIPT ) start_POSTSUPERSCRIPT italic_t end_POSTSUPERSCRIPT italic_x ≥ italic_C start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT . end_CELL start_CELL end_CELL end_ROW

Indices of constraints are shown as superscript.

Definition 11 (Bound Constraint).

Define bound constraint, denoted by Cdsuperscript𝐶𝑑C^{d}italic_C start_POSTSUPERSCRIPT italic_d end_POSTSUPERSCRIPT (remember d𝑑ditalic_d is the index of this constraint and Cdsuperscript𝐶𝑑C^{d}italic_C start_POSTSUPERSCRIPT italic_d end_POSTSUPERSCRIPT contains three parts: Cldn,Crdformulae-sequencesubscriptsuperscript𝐶𝑑𝑙superscript𝑛subscriptsuperscript𝐶𝑑𝑟C^{d}_{l}\in\mathbb{R}^{n},C^{d}_{r}\in\mathbb{R}italic_C start_POSTSUPERSCRIPT italic_d end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_l end_POSTSUBSCRIPT ∈ blackboard_R start_POSTSUPERSCRIPT italic_n end_POSTSUPERSCRIPT , italic_C start_POSTSUPERSCRIPT italic_d end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT ∈ blackboard_R, and Csd{1,0,1}subscriptsuperscript𝐶𝑑𝑠101C^{d}_{s}\in\{-1,0,1\}italic_C start_POSTSUPERSCRIPT italic_d end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT ∈ { - 1 , 0 , 1 }), as following:

  1. 1.

    If OBJ section is of the form

    OBJ min
    mmmitalic_m n1subscriptn1n_{1}italic_n start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT a1subscripta1a_{1}italic_a start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT n2subscriptn2n_{2}italic_n start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT a2subscripta2a_{2}italic_a start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT \ldots nmsubscriptnmn_{m}italic_n start_POSTSUBSCRIPT italic_m end_POSTSUBSCRIPT amsubscriptama_{m}italic_a start_POSTSUBSCRIPT italic_m end_POSTSUBSCRIPT

    then

    1. (a)

      Csd=1subscriptsuperscript𝐶𝑑𝑠1C^{d}_{s}=1italic_C start_POSTSUPERSCRIPT italic_d end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT = 1

    2. (b)

      Crd=Lsubscriptsuperscript𝐶𝑑𝑟𝐿C^{d}_{r}=Litalic_C start_POSTSUPERSCRIPT italic_d end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT = italic_L

    3. (c)

      for each i[m]𝑖delimited-[]𝑚i\in[m]italic_i ∈ [ italic_m ], Cl,nid=anisubscriptsuperscript𝐶𝑑𝑙subscript𝑛𝑖subscript𝑎subscript𝑛𝑖C^{d}_{l,n_{i}}=a_{n_{i}}italic_C start_POSTSUPERSCRIPT italic_d end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_l , italic_n start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT end_POSTSUBSCRIPT = italic_a start_POSTSUBSCRIPT italic_n start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT end_POSTSUBSCRIPT

    4. (d)

      for each j[n]\{nj}j[m]𝑗\delimited-[]𝑛subscriptsubscript𝑛𝑗𝑗delimited-[]𝑚j\in[n]\backslash\{n_{j}\}_{j\in[m]}italic_j ∈ [ italic_n ] \ { italic_n start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT } start_POSTSUBSCRIPT italic_j ∈ [ italic_m ] end_POSTSUBSCRIPT, Cl,jd=0subscriptsuperscript𝐶𝑑𝑙𝑗0C^{d}_{l,j}=0italic_C start_POSTSUPERSCRIPT italic_d end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_l , italic_j end_POSTSUBSCRIPT = 0;

  2. 2.

    If OBJ section is of the form

    OBJ max
    mmmitalic_m n1subscriptn1n_{1}italic_n start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT a1subscripta1a_{1}italic_a start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT n2subscriptn2n_{2}italic_n start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT a2subscripta2a_{2}italic_a start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT \ldots nmsubscriptnmn_{m}italic_n start_POSTSUBSCRIPT italic_m end_POSTSUBSCRIPT amsubscriptama_{m}italic_a start_POSTSUBSCRIPT italic_m end_POSTSUBSCRIPT

    then

    1. (a)

      Csd=1subscriptsuperscript𝐶𝑑𝑠1C^{d}_{s}=-1italic_C start_POSTSUPERSCRIPT italic_d end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT = - 1

    2. (b)

      Crd=Usubscriptsuperscript𝐶𝑑𝑟𝑈C^{d}_{r}=Uitalic_C start_POSTSUPERSCRIPT italic_d end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT = italic_U

    3. (c)

      for each i[m]𝑖delimited-[]𝑚i\in[m]italic_i ∈ [ italic_m ], Cl,nid=anisubscriptsuperscript𝐶𝑑𝑙subscript𝑛𝑖subscript𝑎subscript𝑛𝑖C^{d}_{l,n_{i}}=a_{n_{i}}italic_C start_POSTSUPERSCRIPT italic_d end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_l , italic_n start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT end_POSTSUBSCRIPT = italic_a start_POSTSUBSCRIPT italic_n start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT end_POSTSUBSCRIPT

    4. (d)

      for each j[n]\{nj}j[m]𝑗\delimited-[]𝑛subscriptsubscript𝑛𝑗𝑗delimited-[]𝑚j\in[n]\backslash\{n_{j}\}_{j\in[m]}italic_j ∈ [ italic_n ] \ { italic_n start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT } start_POSTSUBSCRIPT italic_j ∈ [ italic_m ] end_POSTSUBSCRIPT, Cl,jd=0subscriptsuperscript𝐶𝑑𝑙𝑗0C^{d}_{l,j}=0italic_C start_POSTSUPERSCRIPT italic_d end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_l , italic_j end_POSTSUBSCRIPT = 0.

Let the second line of the OBJ section be of the form

mn1a1n2a2nmam,mn1a1n2a2nmam\texttt{$m$ $n_{1}$ $a_{1}$ $n_{2}$ $a_{2}$ $\ldots$ $n_{m}$ $a_{m}$},italic_m italic_n start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT italic_a start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT italic_n start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT italic_a start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT … italic_n start_POSTSUBSCRIPT italic_m end_POSTSUBSCRIPT italic_a start_POSTSUBSCRIPT italic_m end_POSTSUBSCRIPT ,

then the optimum function of the corresponding MILP problem is fo(x):=i[m]aixniassignsuperscript𝑓𝑜𝑥subscript𝑖delimited-[]𝑚subscript𝑎𝑖subscript𝑥subscript𝑛𝑖f^{o}(x):=\sum_{i\in[m]}a_{i}x_{n_{i}}italic_f start_POSTSUPERSCRIPT italic_o end_POSTSUPERSCRIPT ( italic_x ) := ∑ start_POSTSUBSCRIPT italic_i ∈ [ italic_m ] end_POSTSUBSCRIPT italic_a start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT italic_x start_POSTSUBSCRIPT italic_n start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT end_POSTSUBSCRIPT, where x𝑥xitalic_x is the vector of variables in the MILP problem. Define So:={ni}i[m]assignsuperscript𝑆𝑜subscriptsubscript𝑛𝑖𝑖delimited-[]𝑚S^{o}:=\{n_{i}\}_{i\in[m]}italic_S start_POSTSUPERSCRIPT italic_o end_POSTSUPERSCRIPT := { italic_n start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT } start_POSTSUBSCRIPT italic_i ∈ [ italic_m ] end_POSTSUBSCRIPT, representing the set of indices of variables in the optimum function with possibly non-zero coefficients.

Definition 12 (Solution Line).

Let the p𝑝pitalic_pth line in the SOL section be in the form

mn1a1nmam.mn1a1nmam\texttt{$m$ $n_{1}$ $a_{1}$ $\ldots$ $n_{m}$ $a_{m}$}.italic_m italic_n start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT italic_a start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT … italic_n start_POSTSUBSCRIPT italic_m end_POSTSUBSCRIPT italic_a start_POSTSUBSCRIPT italic_m end_POSTSUBSCRIPT .

Define Sp:={nj}j[m]assignsuperscript𝑆𝑝subscriptsubscript𝑛𝑗𝑗delimited-[]𝑚S^{p}:=\{n_{j}\}_{j\in[m]}italic_S start_POSTSUPERSCRIPT italic_p end_POSTSUPERSCRIPT := { italic_n start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT } start_POSTSUBSCRIPT italic_j ∈ [ italic_m ] end_POSTSUBSCRIPT, representing the set of indices of variables with possibly non-zero assignments in this solution. Specifically, this line represents a vector vp=(x1,x2,,xn)subscript𝑣𝑝subscript𝑥1subscript𝑥2subscript𝑥𝑛v_{p}=(x_{1},x_{2},\ldots,x_{n})italic_v start_POSTSUBSCRIPT italic_p end_POSTSUBSCRIPT = ( italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT , italic_x start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT , … , italic_x start_POSTSUBSCRIPT italic_n end_POSTSUBSCRIPT ) such that j[m]for-all𝑗delimited-[]𝑚\forall j\in[m]∀ italic_j ∈ [ italic_m ], xnj:=ajassignsubscript𝑥subscript𝑛𝑗subscript𝑎𝑗x_{n_{j}}:=a_{j}italic_x start_POSTSUBSCRIPT italic_n start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT end_POSTSUBSCRIPT := italic_a start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT and i[n]\Spfor-all𝑖\delimited-[]𝑛superscript𝑆𝑝\forall i\in[n]\backslash S^{p}∀ italic_i ∈ [ italic_n ] \ italic_S start_POSTSUPERSCRIPT italic_p end_POSTSUPERSCRIPT, xi=0subscript𝑥𝑖0x_{i}=0italic_x start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT = 0. This line is valid, if it satisfies each constraint in the CON section. If this line is valid, then the optimum function with this assignment gives an upper bound (in a minimization problem) or a lower bound (in a maximization problem) of fo(vj)superscript𝑓𝑜subscript𝑣𝑗f^{o}(v_{j})italic_f start_POSTSUPERSCRIPT italic_o end_POSTSUPERSCRIPT ( italic_v start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT ) for the optimum value.

Lemma 3 (Solution Line Valid).

A line in the SOL section in the form

name mmmitalic_m n1subscriptn1n_{1}italic_n start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT a1subscripta1a_{1}italic_a start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT \ldots nmsubscriptnmn_{m}italic_n start_POSTSUBSCRIPT italic_m end_POSTSUBSCRIPT amsubscriptama_{m}italic_a start_POSTSUBSCRIPT italic_m end_POSTSUBSCRIPT

is valid, if and only if the transformed SMT2 clause is satisfiable.

Proof.

Suppose there are k𝑘kitalic_k constraints in the CON section. Remember that these constraints are automatically indexed from 00. Hence, the validity of this line can be encoded with the following logic:

  1. 1.

    i[k]((Csi11)(j[m]Cl,nji1ajCri1))subscript𝑖delimited-[]𝑘subscriptsuperscript𝐶𝑖1𝑠1subscript𝑗delimited-[]𝑚subscriptsuperscript𝐶𝑖1𝑙subscript𝑛𝑗subscript𝑎𝑗subscriptsuperscript𝐶𝑖1𝑟\wedge_{i\in[k]}((C^{i-1}_{s}\neq 1)\vee(\sum_{j\in[m]}C^{i-1}_{l,n_{j}}a_{j}%\geq C^{i-1}_{r}))∧ start_POSTSUBSCRIPT italic_i ∈ [ italic_k ] end_POSTSUBSCRIPT ( ( italic_C start_POSTSUPERSCRIPT italic_i - 1 end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT ≠ 1 ) ∨ ( ∑ start_POSTSUBSCRIPT italic_j ∈ [ italic_m ] end_POSTSUBSCRIPT italic_C start_POSTSUPERSCRIPT italic_i - 1 end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_l , italic_n start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT end_POSTSUBSCRIPT italic_a start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT ≥ italic_C start_POSTSUPERSCRIPT italic_i - 1 end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT ) )

  2. 2.

    i[k]((Csi10)(j[m]Cl,nji1aj=Cri1))subscript𝑖delimited-[]𝑘subscriptsuperscript𝐶𝑖1𝑠0subscript𝑗delimited-[]𝑚subscriptsuperscript𝐶𝑖1𝑙subscript𝑛𝑗subscript𝑎𝑗subscriptsuperscript𝐶𝑖1𝑟\wedge_{i\in[k]}((C^{i-1}_{s}\neq 0)\vee(\sum_{j\in[m]}C^{i-1}_{l,n_{j}}a_{j}=%C^{i-1}_{r}))∧ start_POSTSUBSCRIPT italic_i ∈ [ italic_k ] end_POSTSUBSCRIPT ( ( italic_C start_POSTSUPERSCRIPT italic_i - 1 end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT ≠ 0 ) ∨ ( ∑ start_POSTSUBSCRIPT italic_j ∈ [ italic_m ] end_POSTSUBSCRIPT italic_C start_POSTSUPERSCRIPT italic_i - 1 end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_l , italic_n start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT end_POSTSUBSCRIPT italic_a start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT = italic_C start_POSTSUPERSCRIPT italic_i - 1 end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT ) )

  3. 3.

    i[k]((Csi11)(j[m]Cl,nji1ajCri1))subscript𝑖delimited-[]𝑘subscriptsuperscript𝐶𝑖1𝑠1subscript𝑗delimited-[]𝑚subscriptsuperscript𝐶𝑖1𝑙subscript𝑛𝑗subscript𝑎𝑗subscriptsuperscript𝐶𝑖1𝑟\wedge_{i\in[k]}((C^{i-1}_{s}\neq-1)\vee(\sum_{j\in[m]}C^{i-1}_{l,n_{j}}a_{j}%\leq C^{i-1}_{r}))∧ start_POSTSUBSCRIPT italic_i ∈ [ italic_k ] end_POSTSUBSCRIPT ( ( italic_C start_POSTSUPERSCRIPT italic_i - 1 end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT ≠ - 1 ) ∨ ( ∑ start_POSTSUBSCRIPT italic_j ∈ [ italic_m ] end_POSTSUBSCRIPT italic_C start_POSTSUPERSCRIPT italic_i - 1 end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_l , italic_n start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT end_POSTSUBSCRIPT italic_a start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT ≤ italic_C start_POSTSUPERSCRIPT italic_i - 1 end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT ) )

Definition 13 (SOL valid).

The SOL section begins with the line

SOL mmmitalic_m

followed by m𝑚mitalic_m lines of solutions. The SOL section is valid, if

  1. 1.

    RTP section states the MILP problem is infeasible and SOL section contains no solution;

  2. 2.

    or, RTP section gives the upper/lower bounds of the MILP problem, and

    1. (a)

      Each line of the SOL section is valid;

    2. (b)

      If the MILP is a maximization problem, then at least one line of the SOL section proves the lower bound of the optimum value stated in the RTP section, i.e. j[m]𝑗delimited-[]𝑚\exists j\in[m]∃ italic_j ∈ [ italic_m ] s.t. fo(vj)Lsuperscript𝑓𝑜subscript𝑣𝑗𝐿f^{o}(v_{j})\geq Litalic_f start_POSTSUPERSCRIPT italic_o end_POSTSUPERSCRIPT ( italic_v start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT ) ≥ italic_L.

    3. (c)

      If the MILP is a minimization problem, then at least one line of the SOL section proves the upper bound of the optimum value stated in the RTP section, i.e. j[m]𝑗delimited-[]𝑚\exists j\in[m]∃ italic_j ∈ [ italic_m ] s.t. fo(vj)Usuperscript𝑓𝑜subscript𝑣𝑗𝑈f^{o}(v_{j})\leq Uitalic_f start_POSTSUPERSCRIPT italic_o end_POSTSUPERSCRIPT ( italic_v start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT ) ≤ italic_U.

Lemma 4 (SOL Valid).

The SOL section is valid, if and only if the transcribed SMT formula is satisfiable.

Proof.

The properties in Definition13 can be encoded with the following logic:

  1. 1.

    F(m=0)𝐹𝑚0F\vee(m=0)italic_F ∨ ( italic_m = 0 )

  2. 2.
    1. (a)

      Encoded with Lemma3;

    2. (b)

      If !P!P! italic_P, then p[m](nSpSoL)subscript𝑝delimited-[]𝑚subscript𝑛superscript𝑆𝑝superscript𝑆𝑜𝐿\vee_{p\in[m]}(\sum_{n\in S^{p}\cap S^{o}}\geq L)∨ start_POSTSUBSCRIPT italic_p ∈ [ italic_m ] end_POSTSUBSCRIPT ( ∑ start_POSTSUBSCRIPT italic_n ∈ italic_S start_POSTSUPERSCRIPT italic_p end_POSTSUPERSCRIPT ∩ italic_S start_POSTSUPERSCRIPT italic_o end_POSTSUPERSCRIPT end_POSTSUBSCRIPT ≥ italic_L ),

    3. (c)

      else p[m](nSpSoU)subscript𝑝delimited-[]𝑚subscript𝑛superscript𝑆𝑝superscript𝑆𝑜𝑈\vee_{p\in[m]}(\sum_{n\in S^{p}\cap S^{o}}\leq U)∨ start_POSTSUBSCRIPT italic_p ∈ [ italic_m ] end_POSTSUBSCRIPT ( ∑ start_POSTSUBSCRIPT italic_n ∈ italic_S start_POSTSUPERSCRIPT italic_p end_POSTSUPERSCRIPT ∩ italic_S start_POSTSUPERSCRIPT italic_o end_POSTSUPERSCRIPT end_POSTSUBSCRIPT ≤ italic_U ).

Definition 14 (Reasoning).

The part insided the {}\{\}{ } of a line in the DER section is called the reasoning of that line. VIPR allows four ways to derive a new constraint in the DER section, represented by four formats of reasoning of a line in the DER section: {asm},{lin},{rnd},{unsi1l1i2l2}𝑎𝑠𝑚𝑙𝑖𝑛𝑟𝑛𝑑𝑢𝑛𝑠i1l1i2l2\{asm\},\{lin\ldots\},\{rnd\ldots\},\{uns\text{ $i_{1}$ $l_{1}$ $i_{2}$ $l_{2}%$}\}{ italic_a italic_s italic_m } , { italic_l italic_i italic_n … } , { italic_r italic_n italic_d … } , { italic_u italic_n italic_s italic_i start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT italic_l start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT italic_i start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT italic_l start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT }.

Definition 15 (Assumption).

A constraint in the DER section with reasoning of the form

{asm}asm\{\texttt{asm}\}{ asm }

is called an assumption. Assumptions do not need a reason to be true; as the word inplied, we simply “assumes” an assumption to be true when we need to do so.

Definition 16 (Set of Assumptions).

Let Cxsuperscript𝐶𝑥C^{x}italic_C start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT be a constraint in the DER or CON section. Its set of assumptions, denoted by Sxsuperscript𝑆𝑥S^{x}italic_S start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT, is a set {n1,n2,,nm}subscript𝑛1subscript𝑛2subscript𝑛𝑚\{n_{1},n_{2},\ldots,n_{m}\}{ italic_n start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT , italic_n start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT , … , italic_n start_POSTSUBSCRIPT italic_m end_POSTSUBSCRIPT } where for each i[m]𝑖delimited-[]𝑚i\in[m]italic_i ∈ [ italic_m ], Cnisuperscript𝐶subscript𝑛𝑖C^{n_{i}}italic_C start_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT end_POSTSUPERSCRIPT is an assumption.

This set is implicitly inherited from constraints to contraints. In general, VIPR certificate carries the information that if we assumes all the assumptions indexed with Sxsuperscript𝑆𝑥S^{x}italic_S start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT are true, then constraints in the CON section imply the current constraint:

  1. 1.

    If Cxsuperscript𝐶𝑥C^{x}italic_C start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT is an assumtion, define Sx:={x}assignsuperscript𝑆𝑥𝑥S^{x}:=\{x\}italic_S start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT := { italic_x }.

  2. 2.

    If Cxsuperscript𝐶𝑥C^{x}italic_C start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT is a constraint in the CON section, define Sx:=assignsuperscript𝑆𝑥S^{x}:=\varnothingitalic_S start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT := ∅.

  3. 3.

    If Cxsuperscript𝐶𝑥C^{x}italic_C start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT is a constraint in the DER section and is not an assumption, please refer to Definition20, Definition22, and Definition23 for details of Sxsuperscript𝑆𝑥S^{x}italic_S start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT.

Let S𝑆Sitalic_S be the set of indices of all assumptions in the DER section. Let Cxsuperscript𝐶𝑥C^{x}italic_C start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT be a constraint in the DER or CON section. For each iS𝑖𝑆i\in Sitalic_i ∈ italic_S, we use a boolean variable Bixsuperscriptsubscript𝐵𝑖𝑥B_{i}^{x}italic_B start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT to identify whether iCx𝑖superscript𝐶𝑥i\in C^{x}italic_i ∈ italic_C start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT. Thus,

  1. 1.

    If Cxsuperscript𝐶𝑥C^{x}italic_C start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT is an assumtion, then

    1. (a)

      Bxx=truesuperscriptsubscript𝐵𝑥𝑥𝑡𝑟𝑢𝑒B_{x}^{x}=trueitalic_B start_POSTSUBSCRIPT italic_x end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT = italic_t italic_r italic_u italic_e;

    2. (b)

      iSx,ix(Bix=false)subscriptformulae-sequence𝑖superscript𝑆𝑥𝑖𝑥superscriptsubscript𝐵𝑖𝑥𝑓𝑎𝑙𝑠𝑒\wedge_{i\in S^{x},i\neq x}(B_{i}^{x}=false)∧ start_POSTSUBSCRIPT italic_i ∈ italic_S start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT , italic_i ≠ italic_x end_POSTSUBSCRIPT ( italic_B start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT = italic_f italic_a italic_l italic_s italic_e ).

  2. 2.

    If Cxsuperscript𝐶𝑥C^{x}italic_C start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT is a constraint in the CON section, then iSx(Bix=false).subscript𝑖superscript𝑆𝑥superscriptsubscript𝐵𝑖𝑥𝑓𝑎𝑙𝑠𝑒\wedge_{i\in S^{x}}(B_{i}^{x}=false).∧ start_POSTSUBSCRIPT italic_i ∈ italic_S start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT end_POSTSUBSCRIPT ( italic_B start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT = italic_f italic_a italic_l italic_s italic_e ) .

  3. 3.

    If Cxsuperscript𝐶𝑥C^{x}italic_C start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT is a constraint in the DER section and is not an assumption, please refer to Definition20, Definition22, and Definition23 for specification of Bixsuperscriptsubscript𝐵𝑖𝑥B_{i}^{x}italic_B start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT’s.

Definition 17 (Disjunction Logic).

Let Casuperscript𝐶𝑎C^{a}italic_C start_POSTSUPERSCRIPT italic_a end_POSTSUPERSCRIPT and Cbsuperscript𝐶𝑏C^{b}italic_C start_POSTSUPERSCRIPT italic_b end_POSTSUPERSCRIPT be two assumptions in the DER section. We say that Casuperscript𝐶𝑎C^{a}italic_C start_POSTSUPERSCRIPT italic_a end_POSTSUPERSCRIPT and Cbsuperscript𝐶𝑏C^{b}italic_C start_POSTSUPERSCRIPT italic_b end_POSTSUPERSCRIPT form a disjunction logic, if they satisfy the following properties:

  1. 1.

    Cla=Clbsubscriptsuperscript𝐶𝑎𝑙subscriptsuperscript𝐶𝑏𝑙C^{a}_{l}=C^{b}_{l}italic_C start_POSTSUPERSCRIPT italic_a end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_l end_POSTSUBSCRIPT = italic_C start_POSTSUPERSCRIPT italic_b end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_l end_POSTSUBSCRIPT;

  2. 2.

    For each i[n]𝑖delimited-[]𝑛i\in[n]italic_i ∈ [ italic_n ] such that xisubscript𝑥𝑖x_{i}italic_x start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT is an integer variable, Cl,iasubscriptsuperscript𝐶𝑎𝑙𝑖C^{a}_{l,i}italic_C start_POSTSUPERSCRIPT italic_a end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_l , italic_i end_POSTSUBSCRIPT is an integer;

  3. 3.

    For each i[n]𝑖delimited-[]𝑛i\in[n]italic_i ∈ [ italic_n ] such that xisubscript𝑥𝑖x_{i}italic_x start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT is a real variable, Cl,ia=0subscriptsuperscript𝐶𝑎𝑙𝑖0C^{a}_{l,i}=0italic_C start_POSTSUPERSCRIPT italic_a end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_l , italic_i end_POSTSUBSCRIPT = 0;

  4. 4.

    Both Crasubscriptsuperscript𝐶𝑎𝑟C^{a}_{r}italic_C start_POSTSUPERSCRIPT italic_a end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT and Crbsubscriptsuperscript𝐶𝑏𝑟C^{b}_{r}italic_C start_POSTSUPERSCRIPT italic_b end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT are integers;

  5. 5.

    One of Csa,Csbsubscriptsuperscript𝐶𝑎𝑠subscriptsuperscript𝐶𝑏𝑠C^{a}_{s},C^{b}_{s}italic_C start_POSTSUPERSCRIPT italic_a end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT , italic_C start_POSTSUPERSCRIPT italic_b end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT equals 11-1- 1, while the other equals 1111;

  6. 6.

    If Csa=1subscriptsuperscript𝐶𝑎𝑠1C^{a}_{s}=1italic_C start_POSTSUPERSCRIPT italic_a end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT = 1 and Csb=1subscriptsuperscript𝐶𝑏𝑠1C^{b}_{s}=-1italic_C start_POSTSUPERSCRIPT italic_b end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT = - 1, then Cra=Crb+1subscriptsuperscript𝐶𝑎𝑟subscriptsuperscript𝐶𝑏𝑟1C^{a}_{r}=C^{b}_{r}+1italic_C start_POSTSUPERSCRIPT italic_a end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT = italic_C start_POSTSUPERSCRIPT italic_b end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT + 1; If Csa=1subscriptsuperscript𝐶𝑎𝑠1C^{a}_{s}=-1italic_C start_POSTSUPERSCRIPT italic_a end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT = - 1 and Csb=1subscriptsuperscript𝐶𝑏𝑠1C^{b}_{s}=1italic_C start_POSTSUPERSCRIPT italic_b end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT = 1, then Cra=Crb1subscriptsuperscript𝐶𝑎𝑟subscriptsuperscript𝐶𝑏𝑟1C^{a}_{r}=C^{b}_{r}-1italic_C start_POSTSUPERSCRIPT italic_a end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT = italic_C start_POSTSUPERSCRIPT italic_b end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT - 1.

Let x𝑥xitalic_x denote the n𝑛nitalic_n-dimension vector of variables. These properties guarantee that Casuperscript𝐶𝑎C^{a}italic_C start_POSTSUPERSCRIPT italic_a end_POSTSUPERSCRIPT and Cbsuperscript𝐶𝑏C^{b}italic_C start_POSTSUPERSCRIPT italic_b end_POSTSUPERSCRIPT are in the form

ClxβandClxβ+1,subscript𝐶𝑙𝑥𝛽andsubscript𝐶𝑙𝑥𝛽1C_{l}x\leq\beta\text{ and }C_{l}x\geq\beta+1,italic_C start_POSTSUBSCRIPT italic_l end_POSTSUBSCRIPT italic_x ≤ italic_β and italic_C start_POSTSUBSCRIPT italic_l end_POSTSUBSCRIPT italic_x ≥ italic_β + 1 ,

where Cl=Clx=Clysubscript𝐶𝑙subscriptsuperscript𝐶𝑥𝑙subscriptsuperscript𝐶𝑦𝑙C_{l}=C^{x}_{l}=C^{y}_{l}italic_C start_POSTSUBSCRIPT italic_l end_POSTSUBSCRIPT = italic_C start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_l end_POSTSUBSCRIPT = italic_C start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_l end_POSTSUBSCRIPT and β𝛽\betaitalic_β is an integer. Since property 1.,2.,3. guarantee that Clxsubscript𝐶𝑙𝑥C_{l}xitalic_C start_POSTSUBSCRIPT italic_l end_POSTSUBSCRIPT italic_x is an integer, mathematically speaking one of Cxsuperscript𝐶𝑥C^{x}italic_C start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT and Cysuperscript𝐶𝑦C^{y}italic_C start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT has to be true.

Lemma 5.

Let Casuperscript𝐶𝑎C^{a}italic_C start_POSTSUPERSCRIPT italic_a end_POSTSUPERSCRIPT and Cbsuperscript𝐶𝑏C^{b}italic_C start_POSTSUPERSCRIPT italic_b end_POSTSUPERSCRIPT be two constraints in a VIPR certificate. By Definition17, that Casuperscript𝐶𝑎C^{a}italic_C start_POSTSUPERSCRIPT italic_a end_POSTSUPERSCRIPT and Cbsuperscript𝐶𝑏C^{b}italic_C start_POSTSUPERSCRIPT italic_b end_POSTSUPERSCRIPT form a disjunction logic, can be encoded with the following logic:

  1. 1.

    i=1n(Cl,ia=Cl,ib)superscriptsubscript𝑖1𝑛subscriptsuperscript𝐶𝑎𝑙𝑖subscriptsuperscript𝐶𝑏𝑙𝑖\wedge_{i=1}^{n}(C^{a}_{l,i}=C^{b}_{l,i})∧ start_POSTSUBSCRIPT italic_i = 1 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_n end_POSTSUPERSCRIPT ( italic_C start_POSTSUPERSCRIPT italic_a end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_l , italic_i end_POSTSUBSCRIPT = italic_C start_POSTSUPERSCRIPT italic_b end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_l , italic_i end_POSTSUBSCRIPT )

  2. 2.

    i=1n(!Ii(Cl,iais integer))\wedge_{i=1}^{n}(!I_{i}\vee(C^{a}_{l,i}\text{ is integer}))∧ start_POSTSUBSCRIPT italic_i = 1 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_n end_POSTSUPERSCRIPT ( ! italic_I start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ∨ ( italic_C start_POSTSUPERSCRIPT italic_a end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_l , italic_i end_POSTSUBSCRIPT is integer ) )

  3. 3.

    i=1n(Ii(Cl,ia=0))superscriptsubscript𝑖1𝑛subscript𝐼𝑖subscriptsuperscript𝐶𝑎𝑙𝑖0\wedge_{i=1}^{n}(I_{i}\vee(C^{a}_{l,i}=0))∧ start_POSTSUBSCRIPT italic_i = 1 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_n end_POSTSUPERSCRIPT ( italic_I start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ∨ ( italic_C start_POSTSUPERSCRIPT italic_a end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_l , italic_i end_POSTSUBSCRIPT = 0 ) )

  4. 4.

    (Cra=Cra)(Crb=Crb)superscriptsubscript𝐶𝑟𝑎superscriptsubscript𝐶𝑟𝑎superscriptsubscript𝐶𝑟𝑏superscriptsubscript𝐶𝑟𝑏(C_{r}^{a}=\lceil C_{r}^{a}\rceil)\wedge(C_{r}^{b}=\lceil C_{r}^{b}\rceil)( italic_C start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_a end_POSTSUPERSCRIPT = ⌈ italic_C start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_a end_POSTSUPERSCRIPT ⌉ ) ∧ ( italic_C start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_b end_POSTSUPERSCRIPT = ⌈ italic_C start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_b end_POSTSUPERSCRIPT ⌉ ), with Lemma8

  5. 5.

    (Csa0)(Csa+Csb=0)superscriptsubscript𝐶𝑠𝑎0superscriptsubscript𝐶𝑠𝑎superscriptsubscript𝐶𝑠𝑏0(C_{s}^{a}\neq 0)\wedge(C_{s}^{a}+C_{s}^{b}=0)( italic_C start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_a end_POSTSUPERSCRIPT ≠ 0 ) ∧ ( italic_C start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_a end_POSTSUPERSCRIPT + italic_C start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_b end_POSTSUPERSCRIPT = 0 )

  6. 6.

    If Csa=1superscriptsubscript𝐶𝑠𝑎1C_{s}^{a}=1italic_C start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_a end_POSTSUPERSCRIPT = 1, then Cra=Crb+1superscriptsubscript𝐶𝑟𝑎superscriptsubscript𝐶𝑟𝑏1C_{r}^{a}=C_{r}^{b}+1italic_C start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_a end_POSTSUPERSCRIPT = italic_C start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_b end_POSTSUPERSCRIPT + 1, else Cra=Crb1superscriptsubscript𝐶𝑟𝑎superscriptsubscript𝐶𝑟𝑏1C_{r}^{a}=C_{r}^{b}-1italic_C start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_a end_POSTSUPERSCRIPT = italic_C start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_b end_POSTSUPERSCRIPT - 1

where the last clause is encoded with the “ite” gate in SMT2 format.

Definition 18 (Domination).

Let C1superscript𝐶1C^{1}italic_C start_POSTSUPERSCRIPT 1 end_POSTSUPERSCRIPT and C2superscript𝐶2C^{2}italic_C start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT be two constraints in a VIPR certificate. We say that C1superscript𝐶1C^{1}italic_C start_POSTSUPERSCRIPT 1 end_POSTSUPERSCRIPT dominates C2superscript𝐶2C^{2}italic_C start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT (C1superscript𝐶1C^{1}italic_C start_POSTSUPERSCRIPT 1 end_POSTSUPERSCRIPT implies C2superscript𝐶2C^{2}italic_C start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT in the following specified forms), if

  1. 1.

    Cl1=0subscriptsuperscript𝐶1𝑙0C^{1}_{l}=0italic_C start_POSTSUPERSCRIPT 1 end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_l end_POSTSUBSCRIPT = 0, and

    1. (a)

      Cs1=1superscriptsubscript𝐶𝑠11C_{s}^{1}=-1italic_C start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 1 end_POSTSUPERSCRIPT = - 1 and Cb1<0superscriptsubscript𝐶𝑏10C_{b}^{1}<0italic_C start_POSTSUBSCRIPT italic_b end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 1 end_POSTSUPERSCRIPT < 0 (so C1:0Cb1:superscript𝐶10superscriptsubscript𝐶𝑏1C^{1}:0\leq C_{b}^{1}italic_C start_POSTSUPERSCRIPT 1 end_POSTSUPERSCRIPT : 0 ≤ italic_C start_POSTSUBSCRIPT italic_b end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 1 end_POSTSUPERSCRIPT is an absurdity and implies everything), or

    2. (b)

      Cs1=0superscriptsubscript𝐶𝑠10C_{s}^{1}=0italic_C start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 1 end_POSTSUPERSCRIPT = 0 and Cb10superscriptsubscript𝐶𝑏10C_{b}^{1}\neq 0italic_C start_POSTSUBSCRIPT italic_b end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 1 end_POSTSUPERSCRIPT ≠ 0 (so C1:0=Cb1:superscript𝐶10superscriptsubscript𝐶𝑏1C^{1}:0=C_{b}^{1}italic_C start_POSTSUPERSCRIPT 1 end_POSTSUPERSCRIPT : 0 = italic_C start_POSTSUBSCRIPT italic_b end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 1 end_POSTSUPERSCRIPT is an absurdity and implies everything), or

    3. (c)

      Cs1=1superscriptsubscript𝐶𝑠11C_{s}^{1}=1italic_C start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 1 end_POSTSUPERSCRIPT = 1 and Cb1>0superscriptsubscript𝐶𝑏10C_{b}^{1}>0italic_C start_POSTSUBSCRIPT italic_b end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 1 end_POSTSUPERSCRIPT > 0 (so C1:0Cb1:superscript𝐶10superscriptsubscript𝐶𝑏1C^{1}:0\geq C_{b}^{1}italic_C start_POSTSUPERSCRIPT 1 end_POSTSUPERSCRIPT : 0 ≥ italic_C start_POSTSUBSCRIPT italic_b end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 1 end_POSTSUPERSCRIPT is an absurdity and inplies everything);

  2. 2.

    or, Cl1=Cl2superscriptsubscript𝐶𝑙1superscriptsubscript𝐶𝑙2C_{l}^{1}=C_{l}^{2}italic_C start_POSTSUBSCRIPT italic_l end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 1 end_POSTSUPERSCRIPT = italic_C start_POSTSUBSCRIPT italic_l end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT (so LHS of C1superscript𝐶1C^{1}italic_C start_POSTSUPERSCRIPT 1 end_POSTSUPERSCRIPT and C2superscript𝐶2C^{2}italic_C start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT are the same) and

    1. (a)

      Cs10superscriptsubscript𝐶𝑠10C_{s}^{1}\leq 0italic_C start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 1 end_POSTSUPERSCRIPT ≤ 0, Cs2=1superscriptsubscript𝐶𝑠21C_{s}^{2}=-1italic_C start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT = - 1, and Cr1Cr2superscriptsubscript𝐶𝑟1superscriptsubscript𝐶𝑟2C_{r}^{1}\leq C_{r}^{2}italic_C start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 1 end_POSTSUPERSCRIPT ≤ italic_C start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT (so each of Cl1xCr1superscriptsubscript𝐶𝑙1𝑥superscriptsubscript𝐶𝑟1C_{l}^{1}x\leq C_{r}^{1}italic_C start_POSTSUBSCRIPT italic_l end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 1 end_POSTSUPERSCRIPT italic_x ≤ italic_C start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 1 end_POSTSUPERSCRIPT and Cl1x=Cr1superscriptsubscript𝐶𝑙1𝑥superscriptsubscript𝐶𝑟1C_{l}^{1}x=C_{r}^{1}italic_C start_POSTSUBSCRIPT italic_l end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 1 end_POSTSUPERSCRIPT italic_x = italic_C start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 1 end_POSTSUPERSCRIPT implies Cl1xCr2superscriptsubscript𝐶𝑙1𝑥superscriptsubscript𝐶𝑟2C_{l}^{1}x\leq C_{r}^{2}italic_C start_POSTSUBSCRIPT italic_l end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 1 end_POSTSUPERSCRIPT italic_x ≤ italic_C start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT), or

    2. (b)

      Cs1=0superscriptsubscript𝐶𝑠10C_{s}^{1}=0italic_C start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 1 end_POSTSUPERSCRIPT = 0, Cs2=0superscriptsubscript𝐶𝑠20C_{s}^{2}=0italic_C start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT = 0, and Cr1=Cr2superscriptsubscript𝐶𝑟1superscriptsubscript𝐶𝑟2C_{r}^{1}=C_{r}^{2}italic_C start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 1 end_POSTSUPERSCRIPT = italic_C start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT (so C1superscript𝐶1C^{1}italic_C start_POSTSUPERSCRIPT 1 end_POSTSUPERSCRIPT and C2superscript𝐶2C^{2}italic_C start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT are the same), or

    3. (c)

      Cs10superscriptsubscript𝐶𝑠10C_{s}^{1}\geq 0italic_C start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 1 end_POSTSUPERSCRIPT ≥ 0, Cs2=1superscriptsubscript𝐶𝑠21C_{s}^{2}=1italic_C start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT = 1, and Cr1Cr2superscriptsubscript𝐶𝑟1superscriptsubscript𝐶𝑟2C_{r}^{1}\geq C_{r}^{2}italic_C start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 1 end_POSTSUPERSCRIPT ≥ italic_C start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT (so each of Cl1xCr1superscriptsubscript𝐶𝑙1𝑥superscriptsubscript𝐶𝑟1C_{l}^{1}x\geq C_{r}^{1}italic_C start_POSTSUBSCRIPT italic_l end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 1 end_POSTSUPERSCRIPT italic_x ≥ italic_C start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 1 end_POSTSUPERSCRIPT and Cl1x=Cr1superscriptsubscript𝐶𝑙1𝑥superscriptsubscript𝐶𝑟1C_{l}^{1}x=C_{r}^{1}italic_C start_POSTSUBSCRIPT italic_l end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 1 end_POSTSUPERSCRIPT italic_x = italic_C start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 1 end_POSTSUPERSCRIPT implies Cl1xCr2superscriptsubscript𝐶𝑙1𝑥superscriptsubscript𝐶𝑟2C_{l}^{1}x\geq C_{r}^{2}italic_C start_POSTSUBSCRIPT italic_l end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 1 end_POSTSUPERSCRIPT italic_x ≥ italic_C start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT)

Lemma 6.

Let C1superscript𝐶1C^{1}italic_C start_POSTSUPERSCRIPT 1 end_POSTSUPERSCRIPT and C2superscript𝐶2C^{2}italic_C start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT be two constraints in a VIPR certificate. By Definition18, C1superscript𝐶1C^{1}italic_C start_POSTSUPERSCRIPT 1 end_POSTSUPERSCRIPT dominates C2superscript𝐶2C^{2}italic_C start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT if the following clause holds:

  1. 1.

    (Cl1=0(C_{l}^{1}=0\wedge( italic_C start_POSTSUBSCRIPT italic_l end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 1 end_POSTSUPERSCRIPT = 0 ∧

    1. (a)

      (Cs1=1Cb1<0)limit-fromsuperscriptsubscript𝐶𝑠11superscriptsubscript𝐶𝑏10(C_{s}^{1}=-1\Rightarrow C_{b}^{1}<0)\wedge( italic_C start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 1 end_POSTSUPERSCRIPT = - 1 ⇒ italic_C start_POSTSUBSCRIPT italic_b end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 1 end_POSTSUPERSCRIPT < 0 ) ∧

    2. (b)

      (Cs1=0Cb10)limit-fromsuperscriptsubscript𝐶𝑠10superscriptsubscript𝐶𝑏10(C_{s}^{1}=0\Rightarrow C_{b}^{1}\neq 0)\wedge( italic_C start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 1 end_POSTSUPERSCRIPT = 0 ⇒ italic_C start_POSTSUBSCRIPT italic_b end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 1 end_POSTSUPERSCRIPT ≠ 0 ) ∧

    3. (c)

      (Cs1=1Cb1>0))(C_{s}^{1}=1\Rightarrow C_{b}^{1}>0))\vee( italic_C start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 1 end_POSTSUPERSCRIPT = 1 ⇒ italic_C start_POSTSUBSCRIPT italic_b end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 1 end_POSTSUPERSCRIPT > 0 ) ) ∨

  2. 2.

    (Cl1=Cl2(C_{l}^{1}=C_{l}^{2}\wedge( italic_C start_POSTSUBSCRIPT italic_l end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 1 end_POSTSUPERSCRIPT = italic_C start_POSTSUBSCRIPT italic_l end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT ∧

    1. (a)

      (Cs2=1(Cs10Cr1Cr2))limit-fromsuperscriptsubscript𝐶𝑠21superscriptsubscript𝐶𝑠10superscriptsubscript𝐶𝑟1superscriptsubscript𝐶𝑟2(C_{s}^{2}=-1\Rightarrow(C_{s}^{1}\leq 0\wedge C_{r}^{1}\leq C_{r}^{2}))\wedge( italic_C start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT = - 1 ⇒ ( italic_C start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 1 end_POSTSUPERSCRIPT ≤ 0 ∧ italic_C start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 1 end_POSTSUPERSCRIPT ≤ italic_C start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT ) ) ∧

    2. (b)

      (Cs2=0(Cs1=0Cr1=Cr2))limit-fromsuperscriptsubscript𝐶𝑠20superscriptsubscript𝐶𝑠10superscriptsubscript𝐶𝑟1superscriptsubscript𝐶𝑟2(C_{s}^{2}=0\Rightarrow(C_{s}^{1}=0\wedge C_{r}^{1}=C_{r}^{2}))\wedge( italic_C start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT = 0 ⇒ ( italic_C start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 1 end_POSTSUPERSCRIPT = 0 ∧ italic_C start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 1 end_POSTSUPERSCRIPT = italic_C start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT ) ) ∧

    3. (c)

      (Cs2=1(Cs10Cr1Cr2)))(C_{s}^{2}=1\Rightarrow(C_{s}^{1}\geq 0\wedge C_{r}^{1}\geq C_{r}^{2})))( italic_C start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT = 1 ⇒ ( italic_C start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 1 end_POSTSUPERSCRIPT ≥ 0 ∧ italic_C start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 1 end_POSTSUPERSCRIPT ≥ italic_C start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT ) ) )

This encoding is based on the assumption that each sign value (Cs1superscriptsubscript𝐶𝑠1C_{s}^{1}italic_C start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 1 end_POSTSUPERSCRIPT and Cs2superscriptsubscript𝐶𝑠2C_{s}^{2}italic_C start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT) can be only one of 1,0,10-1,0,- 1 , 0 , and 1111. In plain syntax, Cl1=0superscriptsubscript𝐶𝑙10C_{l}^{1}=0italic_C start_POSTSUBSCRIPT italic_l end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 1 end_POSTSUPERSCRIPT = 0 is encoded as

(and (= Cl,1subscriptCl1C_{l,1}italic_C start_POSTSUBSCRIPT italic_l , 1 end_POSTSUBSCRIPT 00) (= Cl,2subscriptCl2C_{l,2}italic_C start_POSTSUBSCRIPT italic_l , 2 end_POSTSUBSCRIPT 00) (= Cl,3subscriptCl3C_{l,3}italic_C start_POSTSUBSCRIPT italic_l , 3 end_POSTSUBSCRIPT 00) \ldots (= Cl,nsubscriptClnC_{l,n}italic_C start_POSTSUBSCRIPT italic_l , italic_n end_POSTSUBSCRIPT 00)).
Definition 19 (DER Line).

A line in the DER section with {lin}𝑙𝑖𝑛\{lin\ldots\}{ italic_l italic_i italic_n … } as the reasoning part has the form

CxsuperscriptCxC^{x}italic_C start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT lin {{\{{ mmmitalic_m a1subscripta1a_{1}italic_a start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT n1subscriptn1n_{1}italic_n start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT a2subscripta2a_{2}italic_a start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT n2subscriptn2n_{2}italic_n start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT \ldots amsubscriptama_{m}italic_a start_POSTSUBSCRIPT italic_m end_POSTSUBSCRIPT nmsubscriptnmn_{m}italic_n start_POSTSUBSCRIPT italic_m end_POSTSUBSCRIPT }}\}}

where x𝑥xitalic_x denote the index of the current constraint and each nisubscript𝑛𝑖n_{i}italic_n start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT is the index of a previously specified constraint. Constraints in the VIPR certificate are automatically indexed from 00 by the sequence they appear in the file. Thus, if y<x𝑦𝑥y<xitalic_y < italic_x, then Cysuperscript𝐶𝑦C^{y}italic_C start_POSTSUPERSCRIPT italic_y end_POSTSUPERSCRIPT is specified before x𝑥xitalic_x. This notation helps prevent loop proof. Here, we use Cxsuperscript𝐶𝑥C^{x}italic_C start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT to denote the information of the current constraint, consisting of the type of constraint, the right hand side of the constraint, and the coefficients of variables in the left hand side, from which we can declare Csx,Crxsubscriptsuperscript𝐶𝑥𝑠subscriptsuperscript𝐶𝑥𝑟C^{x}_{s},C^{x}_{r}italic_C start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT , italic_C start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT, and Cl,ixsubscriptsuperscript𝐶𝑥𝑙𝑖C^{x}_{l,i}italic_C start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_l , italic_i end_POSTSUBSCRIPT for each i[n]𝑖delimited-[]𝑛i\in[n]italic_i ∈ [ italic_n ].

Reasoning in this form states that Cxsuperscript𝐶𝑥C^{x}italic_C start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT is implied by a linear combination of previous constraints. Specifically, it stated that k=1makCnksuperscriptsubscript𝑘1𝑚subscript𝑎𝑘superscript𝐶subscript𝑛𝑘\sum_{k=1}^{m}a_{k}C^{n_{k}}∑ start_POSTSUBSCRIPT italic_k = 1 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_m end_POSTSUPERSCRIPT italic_a start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT italic_C start_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT end_POSTSUPERSCRIPT forms a constraint which dominates Cxsuperscript𝐶𝑥C^{x}italic_C start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT.

Definition 20 (Lin Valid).

A line in the DER section with reasoning of the form

CxsuperscriptCxC^{x}italic_C start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT {{\{{ lin mmmitalic_m a1subscripta1a_{1}italic_a start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT n1subscriptn1n_{1}italic_n start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT a2subscripta2a_{2}italic_a start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT n2subscriptn2n_{2}italic_n start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT \ldots amsubscriptama_{m}italic_a start_POSTSUBSCRIPT italic_m end_POSTSUBSCRIPT nmsubscriptnmn_{m}italic_n start_POSTSUBSCRIPT italic_m end_POSTSUBSCRIPT }}\}}

is valid, if

  1. 1.

    Each of Cn1,Cn2,,Cnmsuperscript𝐶subscript𝑛1superscript𝐶subscript𝑛2superscript𝐶subscript𝑛𝑚C^{n_{1}},C^{n_{2}},\ldots,C^{n_{m}}italic_C start_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT , italic_C start_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT , … , italic_C start_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT italic_m end_POSTSUBSCRIPT end_POSTSUPERSCRIPT is specified before Cxsuperscript𝐶𝑥C^{x}italic_C start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT;

  2. 2.

    The linear combination of constraints described in the reasoning, i.e. k=1makCnksuperscriptsubscript𝑘1𝑚subscript𝑎𝑘superscript𝐶subscript𝑛𝑘\sum_{k=1}^{m}a_{k}C^{n_{k}}∑ start_POSTSUBSCRIPT italic_k = 1 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_m end_POSTSUPERSCRIPT italic_a start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT italic_C start_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT end_POSTSUPERSCRIPT, forms a constraint;

  3. 3.

    The constraint formed by this linear combination dominates Cxsuperscript𝐶𝑥C^{x}italic_C start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT.

With these properties, we can conclude that Cxsuperscript𝐶𝑥C^{x}italic_C start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT is implied by previous constraints Cn1,Cn2,,Cnmsuperscript𝐶subscript𝑛1superscript𝐶subscript𝑛2superscript𝐶subscript𝑛𝑚C^{n_{1}},C^{n_{2}},\ldots,C^{n_{m}}italic_C start_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT , italic_C start_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT , … , italic_C start_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT italic_m end_POSTSUBSCRIPT end_POSTSUPERSCRIPT. Hence Cxsuperscript𝐶𝑥C^{x}italic_C start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT inherits all the assumptions used by Cn1,Cn2,,Cnmsuperscript𝐶subscript𝑛1superscript𝐶subscript𝑛2superscript𝐶subscript𝑛𝑚C^{n_{1}},C^{n_{2}},\ldots,C^{n_{m}}italic_C start_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT , italic_C start_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT , … , italic_C start_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT italic_m end_POSTSUBSCRIPT end_POSTSUPERSCRIPT:

Sx:=i[m]Sni.assignsuperscript𝑆𝑥subscript𝑖delimited-[]𝑚superscript𝑆subscript𝑛𝑖S^{x}:=\cup_{i\in[m]}S^{n_{i}}.italic_S start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT := ∪ start_POSTSUBSCRIPT italic_i ∈ [ italic_m ] end_POSTSUBSCRIPT italic_S start_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT end_POSTSUPERSCRIPT .

In SMT logic, this is characterized by

iS(Bix=j[m]Binj).subscript𝑖𝑆superscriptsubscript𝐵𝑖𝑥subscript𝑗delimited-[]𝑚superscriptsubscript𝐵𝑖subscript𝑛𝑗\wedge_{i\in S}(B_{i}^{x}=\vee_{j\in[m]}B_{i}^{n_{j}}).∧ start_POSTSUBSCRIPT italic_i ∈ italic_S end_POSTSUBSCRIPT ( italic_B start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT = ∨ start_POSTSUBSCRIPT italic_j ∈ [ italic_m ] end_POSTSUBSCRIPT italic_B start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT end_POSTSUPERSCRIPT ) .
Lemma 7 (Lin Valid).

A line in the DER section with reasoning of the form

CxsuperscriptCxC^{x}italic_C start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT {{\{{ lin mmmitalic_m a1subscripta1a_{1}italic_a start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT n1subscriptn1n_{1}italic_n start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT a2subscripta2a_{2}italic_a start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT n2subscriptn2n_{2}italic_n start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT \ldots amsubscriptama_{m}italic_a start_POSTSUBSCRIPT italic_m end_POSTSUBSCRIPT nmsubscriptnmn_{m}italic_n start_POSTSUBSCRIPT italic_m end_POSTSUBSCRIPT }}\}}

is valid if and only if the transcribed SMT formula is satisfiable.

Proof.

The three properties in Definition20 can be encoded with SMT2 clauses in the following logic:

  1. 1.
    x𝑥\displaystyle xitalic_x>n1absentsubscript𝑛1\displaystyle>n_{1}> italic_n start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT
    x𝑥\displaystyle xitalic_x>n2absentsubscript𝑛2\displaystyle>n_{2}> italic_n start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT
    \displaystyle\ldots
    x𝑥\displaystyle xitalic_x>nmabsentsubscript𝑛𝑚\displaystyle>n_{m}> italic_n start_POSTSUBSCRIPT italic_m end_POSTSUBSCRIPT

    In plain syntax, x>ni𝑥subscript𝑛𝑖x>n_{i}italic_x > italic_n start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT is encoded as

    (assert (<nix)).(assert (<nix))\texttt{(assert ($<$ $n_{i}$ $x$))}.(assert ( < italic_n start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT italic_x )) .
  2. 2.

    Note that,

    1. (a)

      the addition of equalities gives an equality;

    2. (b)

      the addition of equalities and “less or equal to” inequalities gives a “less or equal to” inequality;

    3. (c)

      the addition of equalities and “greater or equal to” inequalities gives a “greater or equal to” inequality.

    Recall we use sign value (1,0,1)101(-1,0,1)( - 1 , 0 , 1 ) to represent the type of constraints (,=,)(\leq,=,\geq)( ≤ , = , ≥ ). Thus, for each i[m]𝑖delimited-[]𝑚i\in[m]italic_i ∈ [ italic_m ],

    1. (a)

      aiCnisubscript𝑎𝑖superscript𝐶subscript𝑛𝑖a_{i}C^{n_{i}}italic_a start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT italic_C start_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT end_POSTSUPERSCRIPT is an equality if aiCsni=0subscript𝑎𝑖subscriptsuperscript𝐶subscript𝑛𝑖𝑠0a_{i}C^{n_{i}}_{s}=0italic_a start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT italic_C start_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT = 0;

    2. (b)

      aiCnisubscript𝑎𝑖superscript𝐶subscript𝑛𝑖a_{i}C^{n_{i}}italic_a start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT italic_C start_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT end_POSTSUPERSCRIPT is an “less or equal to” inequality if aiCsni<0subscript𝑎𝑖subscriptsuperscript𝐶subscript𝑛𝑖𝑠0a_{i}C^{n_{i}}_{s}<0italic_a start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT italic_C start_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT < 0;

    3. (c)

      aiCnisubscript𝑎𝑖superscript𝐶subscript𝑛𝑖a_{i}C^{n_{i}}italic_a start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT italic_C start_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT end_POSTSUPERSCRIPT is an “greater or equal to” inequality if aiCsni>0subscript𝑎𝑖subscriptsuperscript𝐶subscript𝑛𝑖𝑠0a_{i}C^{n_{i}}_{s}>0italic_a start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT italic_C start_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT > 0.

    Hence, we can use three bool variables cleqx,ceqx,cgeqx𝑐𝑙𝑒𝑞𝑥𝑐𝑒𝑞𝑥𝑐𝑔𝑒𝑞𝑥cleqx,ceqx,cgeqxitalic_c italic_l italic_e italic_q italic_x , italic_c italic_e italic_q italic_x , italic_c italic_g italic_e italic_q italic_x to represent whether the linear combination in the reasoning gives a ,=,\leq,=,\geq≤ , = , ≥ relation, correspondingly:

    cleqx𝑐𝑙𝑒𝑞𝑥\displaystyle cleqxitalic_c italic_l italic_e italic_q italic_x=i=1m(aiCsni0)absentsuperscriptsubscript𝑖1𝑚subscript𝑎𝑖subscriptsuperscript𝐶subscript𝑛𝑖𝑠0\displaystyle=\vee_{i=1}^{m}(a_{i}C^{n_{i}}_{s}\leq 0)= ∨ start_POSTSUBSCRIPT italic_i = 1 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_m end_POSTSUPERSCRIPT ( italic_a start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT italic_C start_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT ≤ 0 )
    ceqx𝑐𝑒𝑞𝑥\displaystyle ceqxitalic_c italic_e italic_q italic_x=i=1m(aiCsni=0)absentsuperscriptsubscript𝑖1𝑚subscript𝑎𝑖subscriptsuperscript𝐶subscript𝑛𝑖𝑠0\displaystyle=\vee_{i=1}^{m}(a_{i}C^{n_{i}}_{s}=0)= ∨ start_POSTSUBSCRIPT italic_i = 1 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_m end_POSTSUPERSCRIPT ( italic_a start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT italic_C start_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT = 0 )
    cgeqx𝑐𝑔𝑒𝑞𝑥\displaystyle cgeqxitalic_c italic_g italic_e italic_q italic_x=i=1m(aiCsni0).absentsuperscriptsubscript𝑖1𝑚subscript𝑎𝑖subscriptsuperscript𝐶subscript𝑛𝑖𝑠0\displaystyle=\vee_{i=1}^{m}(a_{i}C^{n_{i}}_{s}\geq 0).= ∨ start_POSTSUBSCRIPT italic_i = 1 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_m end_POSTSUPERSCRIPT ( italic_a start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT italic_C start_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT ≥ 0 ) .

    Notice that equality implies both “less or equal to” and “greater or equal to”, and in Definition18, we can see that any relations implied by “less or equal to” or “greater or equal to” can be implied by equality. Hence, if ceqx=true𝑐𝑒𝑞𝑥𝑡𝑟𝑢𝑒ceqx=trueitalic_c italic_e italic_q italic_x = italic_t italic_r italic_u italic_e, we assume the linear combination in the reasoning forms an equality. Otherwise, we assume it forms an “less or equal to” inequality if cleqx𝑐𝑙𝑒𝑞𝑥cleqxitalic_c italic_l italic_e italic_q italic_x is true, and we assume it forms an “greater or equal to” inequality if cgeqx𝑐𝑔𝑒𝑞𝑥cgeqxitalic_c italic_g italic_e italic_q italic_x is true (notice that when ceqx=false𝑐𝑒𝑞𝑥𝑓𝑎𝑙𝑠𝑒ceqx=falseitalic_c italic_e italic_q italic_x = italic_f italic_a italic_l italic_s italic_e, then at most one of cleqx𝑐𝑙𝑒𝑞𝑥cleqxitalic_c italic_l italic_e italic_q italic_x and cgeqx𝑐𝑔𝑒𝑞𝑥cgeqxitalic_c italic_g italic_e italic_q italic_x can be true. If ceqx=cgeqx=cleqx=false𝑐𝑒𝑞𝑥𝑐𝑔𝑒𝑞𝑥𝑐𝑙𝑒𝑞𝑥𝑓𝑎𝑙𝑠𝑒ceqx=cgeqx=cleqx=falseitalic_c italic_e italic_q italic_x = italic_c italic_g italic_e italic_q italic_x = italic_c italic_l italic_e italic_q italic_x = italic_f italic_a italic_l italic_s italic_e, then the linear combination in the reasoning does not form a valid relation. Denote the constraint formed by the linear combination in the reasoning as Cxrsuperscript𝐶𝑥𝑟C^{xr}italic_C start_POSTSUPERSCRIPT italic_x italic_r end_POSTSUPERSCRIPT. Then, what we described can be encoded as

    ifceqx=true,thenCsxr=0formulae-sequence𝑐𝑒𝑞𝑥𝑡𝑟𝑢𝑒thensubscriptsuperscript𝐶𝑥𝑟𝑠0\displaystyle ceqx=true,\text{ then }C^{xr}_{s}=0italic_c italic_e italic_q italic_x = italic_t italic_r italic_u italic_e , then italic_C start_POSTSUPERSCRIPT italic_x italic_r end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT = 0
    else ifcleqx=true,thenCsxr=1formulae-sequence𝑐𝑙𝑒𝑞𝑥𝑡𝑟𝑢𝑒thensubscriptsuperscript𝐶𝑥𝑟𝑠1\displaystyle cleqx=true,\text{ then }C^{xr}_{s}=-1italic_c italic_l italic_e italic_q italic_x = italic_t italic_r italic_u italic_e , then italic_C start_POSTSUPERSCRIPT italic_x italic_r end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT = - 1
    else ifcgeqx=true,thenCsxr=1formulae-sequence𝑐𝑔𝑒𝑞𝑥𝑡𝑟𝑢𝑒thensubscriptsuperscript𝐶𝑥𝑟𝑠1\displaystyle cgeqx=true,\text{ then }C^{xr}_{s}=1italic_c italic_g italic_e italic_q italic_x = italic_t italic_r italic_u italic_e , then italic_C start_POSTSUPERSCRIPT italic_x italic_r end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT = 1
    elsealwaysfalse=true𝑎𝑙𝑤𝑎𝑦𝑠𝑓𝑎𝑙𝑠𝑒𝑡𝑟𝑢𝑒\displaystyle alwaysfalse=trueitalic_a italic_l italic_w italic_a italic_y italic_s italic_f italic_a italic_l italic_s italic_e = italic_t italic_r italic_u italic_e

    where alwaysfalse𝑎𝑙𝑤𝑎𝑦𝑠𝑓𝑎𝑙𝑠𝑒alwaysfalseitalic_a italic_l italic_w italic_a italic_y italic_s italic_f italic_a italic_l italic_s italic_e is a bool variable that has been assigned false𝑓𝑎𝑙𝑠𝑒falseitalic_f italic_a italic_l italic_s italic_e in the very beginning. Hence, if Csxrsubscriptsuperscript𝐶𝑥𝑟𝑠C^{xr}_{s}italic_C start_POSTSUPERSCRIPT italic_x italic_r end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT cannot be assigned 1,0,10-1,0,- 1 , 0 , or 1111, i.e. the linear combination in the reasoning does not form a valid relation, then we force the transcribed SMT formula to be unsatisfiable.

    In plain syntax, this is encoded with the ite (if then else) gate:

    (assert (ite ceqx (= Csxrsubscriptsuperscript𝐶𝑥𝑟𝑠C^{xr}_{s}italic_C start_POSTSUPERSCRIPT italic_x italic_r end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT 0.0)
    (ite cleqx (= Csxrsubscriptsuperscript𝐶𝑥𝑟𝑠C^{xr}_{s}italic_C start_POSTSUPERSCRIPT italic_x italic_r end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT -1.0)
    (ite cgeqx (= Csxrsubscriptsuperscript𝐶𝑥𝑟𝑠C^{xr}_{s}italic_C start_POSTSUPERSCRIPT italic_x italic_r end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT 1.0)
    alwaysfalse)))).alwaysfalse))))\displaystyle\texttt{alwaysfalse))))}.alwaysfalse)))) .
  3. 3.

    Clearly, for each k[n]𝑘delimited-[]𝑛k\in[n]italic_k ∈ [ italic_n ], Cl,kxr=i=1maiCl,knisubscriptsuperscript𝐶𝑥𝑟𝑙𝑘superscriptsubscript𝑖1𝑚subscript𝑎𝑖subscriptsuperscript𝐶subscript𝑛𝑖𝑙𝑘C^{xr}_{l,k}=\sum_{i=1}^{m}a_{i}C^{n_{i}}_{l,k}italic_C start_POSTSUPERSCRIPT italic_x italic_r end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_l , italic_k end_POSTSUBSCRIPT = ∑ start_POSTSUBSCRIPT italic_i = 1 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_m end_POSTSUPERSCRIPT italic_a start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT italic_C start_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_l , italic_k end_POSTSUBSCRIPT. In plain syntax, this is encoded as

    (assert (= Cl,1xrsubscriptsuperscript𝐶𝑥𝑟𝑙1C^{xr}_{l,1}italic_C start_POSTSUPERSCRIPT italic_x italic_r end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_l , 1 end_POSTSUBSCRIPT (+ (* a1subscript𝑎1a_{1}italic_a start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT Cl,1n1subscriptsuperscript𝐶subscript𝑛1𝑙1C^{n_{1}}_{l,1}italic_C start_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_l , 1 end_POSTSUBSCRIPT) …(* amsubscript𝑎𝑚a_{m}italic_a start_POSTSUBSCRIPT italic_m end_POSTSUBSCRIPT Cl,1nmsubscriptsuperscript𝐶subscript𝑛𝑚𝑙1C^{n_{m}}_{l,1}italic_C start_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT italic_m end_POSTSUBSCRIPT end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_l , 1 end_POSTSUBSCRIPT))))
    \displaystyle\ldots
    (assert (=Cl,nxr(+ (*a1Cl,nn1) …(*amCl,nnm)))).(assert (=Cl,nxr(+ (*a1Cl,nn1) …(*amCl,nnm))))\displaystyle\small{\texttt{(assert (= $C^{xr}_{l,n}$ (+ (* $a_{1}$ $C^{n_{1}}%_{l,n}$) \ldots(* $a_{m}$ $C^{n_{m}}_{l,n}$))))}}.(assert (= italic_C start_POSTSUPERSCRIPT italic_x italic_r end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_l , italic_n end_POSTSUBSCRIPT (+ (* italic_a start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT italic_C start_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_l , italic_n end_POSTSUBSCRIPT ) …(* italic_a start_POSTSUBSCRIPT italic_m end_POSTSUBSCRIPT italic_C start_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT italic_m end_POSTSUBSCRIPT end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_l , italic_n end_POSTSUBSCRIPT )))) .

    Similarly, Crxr=i=1maiCrnisubscriptsuperscript𝐶𝑥𝑟𝑟superscriptsubscript𝑖1𝑚subscript𝑎𝑖subscriptsuperscript𝐶subscript𝑛𝑖𝑟C^{xr}_{r}=\sum_{i=1}^{m}a_{i}C^{n_{i}}_{r}italic_C start_POSTSUPERSCRIPT italic_x italic_r end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT = ∑ start_POSTSUBSCRIPT italic_i = 1 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_m end_POSTSUPERSCRIPT italic_a start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT italic_C start_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT, which is encoded as

    (assert (=Crxr(+ (*a1Crn1) …(*amCrnm)))).(assert (=Crxr(+ (*a1Crn1) …(*amCrnm))))\small{\texttt{(assert (= $C^{xr}_{r}$ (+ (* $a_{1}$ $C^{n_{1}}_{r}$) \ldots(*% $a_{m}$ $C^{n_{m}}_{r}$))))}}.(assert (= italic_C start_POSTSUPERSCRIPT italic_x italic_r end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT (+ (* italic_a start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT italic_C start_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT ) …(* italic_a start_POSTSUBSCRIPT italic_m end_POSTSUBSCRIPT italic_C start_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT italic_m end_POSTSUBSCRIPT end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT )))) .

    In 2. we have computed Csxrsubscriptsuperscript𝐶𝑥𝑟𝑠C^{xr}_{s}italic_C start_POSTSUPERSCRIPT italic_x italic_r end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT, so Cxrsuperscript𝐶𝑥𝑟C^{xr}italic_C start_POSTSUPERSCRIPT italic_x italic_r end_POSTSUPERSCRIPT is determined and we can use the schema in Lemma6 to encode property 3.

Lemma 8 (Rounding Number).

Let X𝑋Xitalic_X be a real constant. Then, we can express X𝑋\lceil X\rceil⌈ italic_X ⌉ and X𝑋\lfloor X\rfloor⌊ italic_X ⌋ by real constant ceilX𝑐𝑒𝑖𝑙𝑋ceilXitalic_c italic_e italic_i italic_l italic_X and floorX𝑓𝑙𝑜𝑜𝑟𝑋floorXitalic_f italic_l italic_o italic_o italic_r italic_X in SMT2 logic. In particular, we will first encode X𝑋\lceil X\rceil⌈ italic_X ⌉ and X𝑋\lfloor X\rfloor⌊ italic_X ⌋ into integer variables rceilX𝑟𝑐𝑒𝑖𝑙𝑋rceilXitalic_r italic_c italic_e italic_i italic_l italic_X and rfloorX𝑟𝑓𝑙𝑜𝑜𝑟𝑋rfloorXitalic_r italic_f italic_l italic_o italic_o italic_r italic_X, and then force ceilX=rceilX𝑐𝑒𝑖𝑙𝑋𝑟𝑐𝑒𝑖𝑙𝑋ceilX=rceilXitalic_c italic_e italic_i italic_l italic_X = italic_r italic_c italic_e italic_i italic_l italic_X and floorX=rfloorX𝑓𝑙𝑜𝑜𝑟𝑋𝑟𝑓𝑙𝑜𝑜𝑟𝑋floorX=rfloorXitalic_f italic_l italic_o italic_o italic_r italic_X = italic_r italic_f italic_l italic_o italic_o italic_r italic_X.

To compute ceilX𝑐𝑒𝑖𝑙𝑋ceilXitalic_c italic_e italic_i italic_l italic_X, the logic is as following :

  1. 1.

    Declare rceilX𝑟𝑐𝑒𝑖𝑙𝑋rceilXitalic_r italic_c italic_e italic_i italic_l italic_X as int variable;

  2. 2.

    (rceilXX)((rceilX1)<X)𝑟𝑐𝑒𝑖𝑙𝑋𝑋𝑟𝑐𝑒𝑖𝑙𝑋1𝑋(rceilX\geq X)\wedge((rceilX-1)<X)( italic_r italic_c italic_e italic_i italic_l italic_X ≥ italic_X ) ∧ ( ( italic_r italic_c italic_e italic_i italic_l italic_X - 1 ) < italic_X );

  3. 3.

    Declare ceilX𝑐𝑒𝑖𝑙𝑋ceilXitalic_c italic_e italic_i italic_l italic_X as real variable;

  4. 4.

    ceilX=rceilX𝑐𝑒𝑖𝑙𝑋𝑟𝑐𝑒𝑖𝑙𝑋ceilX=rceilXitalic_c italic_e italic_i italic_l italic_X = italic_r italic_c italic_e italic_i italic_l italic_X.

In plain syntax, this is encoded as:

(declare-fun rceilX () Int)
(assert (and (\geq (to_real rceilX) X)
(<<< (to_real (- rceilX1)) x)))
(declare-fun ceilX () Real)
(assert (= ceilX (to_real rceilX)).(assert (= ceilX (to_real rceilX))\displaystyle\texttt{(assert (= ceilX (to\_real rceilX)) }.(assert (= ceilX (to_real rceilX)) .

Similarly, we can compute floorX𝑓𝑙𝑜𝑜𝑟𝑋floorXitalic_f italic_l italic_o italic_o italic_r italic_X with the following logic:

  1. 1.

    Declare rfloorX𝑟𝑓𝑙𝑜𝑜𝑟𝑋rfloorXitalic_r italic_f italic_l italic_o italic_o italic_r italic_X as int variable;

  2. 2.

    (rceilXX)((rceilX+1)>X)𝑟𝑐𝑒𝑖𝑙𝑋𝑋𝑟𝑐𝑒𝑖𝑙𝑋1𝑋(rceilX\leq X)\wedge((rceilX+1)>X)( italic_r italic_c italic_e italic_i italic_l italic_X ≤ italic_X ) ∧ ( ( italic_r italic_c italic_e italic_i italic_l italic_X + 1 ) > italic_X );

  3. 3.

    Declare floorX𝑓𝑙𝑜𝑜𝑟𝑋floorXitalic_f italic_l italic_o italic_o italic_r italic_X as real variable;

  4. 4.

    floorX=rfloorX𝑓𝑙𝑜𝑜𝑟𝑋𝑟𝑓𝑙𝑜𝑜𝑟𝑋floorX=rfloorXitalic_f italic_l italic_o italic_o italic_r italic_X = italic_r italic_f italic_l italic_o italic_o italic_r italic_X.

Definition 21 (Gomory Cut).

Let C𝐶Citalic_C be a constraint with n𝑛nitalic_n variables. We say C𝐶Citalic_C can be rounded, if

  1. 1.

    For each i[n]𝑖delimited-[]𝑛i\in[n]italic_i ∈ [ italic_n ] such that xisubscript𝑥𝑖x_{i}italic_x start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT is an integer variable, Cl,isubscript𝐶𝑙𝑖C_{l,i}italic_C start_POSTSUBSCRIPT italic_l , italic_i end_POSTSUBSCRIPT is an integer;

  2. 2.

    For each i[n]𝑖delimited-[]𝑛i\in[n]italic_i ∈ [ italic_n ] such that xisubscript𝑥𝑖x_{i}italic_x start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT is a real variable, Cl,i=0subscript𝐶𝑙𝑖0C_{l,i}=0italic_C start_POSTSUBSCRIPT italic_l , italic_i end_POSTSUBSCRIPT = 0;

  3. 3.

    Cs0subscript𝐶𝑠0C_{s}\neq 0italic_C start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT ≠ 0. (Nothing should be done to an equality; we can only do rounding operation for inequalities.)

    Specifically, C𝐶Citalic_C can be rounded to the constraint Crsuperscript𝐶𝑟C^{r}italic_C start_POSTSUPERSCRIPT italic_r end_POSTSUPERSCRIPT in the following way:

  4. 4.

    When Cs=1subscript𝐶𝑠1C_{s}=-1italic_C start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT = - 1:

    1. (a)

      Clr:=Classignsubscriptsuperscript𝐶𝑟𝑙subscript𝐶𝑙C^{r}_{l}:=C_{l}italic_C start_POSTSUPERSCRIPT italic_r end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_l end_POSTSUBSCRIPT := italic_C start_POSTSUBSCRIPT italic_l end_POSTSUBSCRIPT;

    2. (b)

      Csr:=Csassignsubscriptsuperscript𝐶𝑟𝑠subscript𝐶𝑠C^{r}_{s}:=C_{s}italic_C start_POSTSUPERSCRIPT italic_r end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT := italic_C start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT;

    3. (c)

      Crr:=Crassignsubscriptsuperscript𝐶𝑟𝑟subscript𝐶𝑟C^{r}_{r}:=\lfloor C_{r}\rflooritalic_C start_POSTSUPERSCRIPT italic_r end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT := ⌊ italic_C start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT ⌋.

  5. 5.

    When Cs=1subscript𝐶𝑠1C_{s}=1italic_C start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT = 1:

    1. (a)

      Clr:=Classignsubscriptsuperscript𝐶𝑟𝑙subscript𝐶𝑙C^{r}_{l}:=C_{l}italic_C start_POSTSUPERSCRIPT italic_r end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_l end_POSTSUBSCRIPT := italic_C start_POSTSUBSCRIPT italic_l end_POSTSUBSCRIPT;

    2. (b)

      Csr:=Csassignsubscriptsuperscript𝐶𝑟𝑠subscript𝐶𝑠C^{r}_{s}:=C_{s}italic_C start_POSTSUPERSCRIPT italic_r end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT := italic_C start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT;

    3. (c)

      Crr:=Crassignsubscriptsuperscript𝐶𝑟𝑟subscript𝐶𝑟C^{r}_{r}:=\lceil C_{r}\rceilitalic_C start_POSTSUPERSCRIPT italic_r end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT := ⌈ italic_C start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT ⌉.

Lemma 9 (Rounding Operation).

Let C𝐶Citalic_C be a constraint with n𝑛nitalic_n variables. That C𝐶Citalic_C can be rounded to Crsuperscript𝐶𝑟C^{r}italic_C start_POSTSUPERSCRIPT italic_r end_POSTSUPERSCRIPT, by definition, can be encoded with the following logic:

  1. 1.

    i=1n(!Ii(Cl,iis integer))\wedge_{i=1}^{n}(!I_{i}\vee(C_{l,i}\text{ is integer}))∧ start_POSTSUBSCRIPT italic_i = 1 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_n end_POSTSUPERSCRIPT ( ! italic_I start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ∨ ( italic_C start_POSTSUBSCRIPT italic_l , italic_i end_POSTSUBSCRIPT is integer ) )

  2. 2.

    i=1n(Ii(Cl,i=0))superscriptsubscript𝑖1𝑛subscript𝐼𝑖subscript𝐶𝑙𝑖0\wedge_{i=1}^{n}(I_{i}\vee(C_{l,i}=0))∧ start_POSTSUBSCRIPT italic_i = 1 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_n end_POSTSUPERSCRIPT ( italic_I start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ∨ ( italic_C start_POSTSUBSCRIPT italic_l , italic_i end_POSTSUBSCRIPT = 0 ) )

  3. 3.

    (Cs0)(Clr=Cl)(Csr=Cs)subscript𝐶𝑠0subscriptsuperscript𝐶𝑟𝑙subscript𝐶𝑙subscriptsuperscript𝐶𝑟𝑠subscript𝐶𝑠(C_{s}\neq 0)\wedge(C^{r}_{l}=C_{l})\wedge(C^{r}_{s}=C_{s})( italic_C start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT ≠ 0 ) ∧ ( italic_C start_POSTSUPERSCRIPT italic_r end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_l end_POSTSUBSCRIPT = italic_C start_POSTSUBSCRIPT italic_l end_POSTSUBSCRIPT ) ∧ ( italic_C start_POSTSUPERSCRIPT italic_r end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT = italic_C start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT )

  4. 4.

    If Cs=1subscript𝐶𝑠1C_{s}=-1italic_C start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT = - 1, then (Crr=Cr)subscriptsuperscript𝐶𝑟𝑟subscript𝐶𝑟(C^{r}_{r}=\lfloor C_{r}\rfloor)( italic_C start_POSTSUPERSCRIPT italic_r end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT = ⌊ italic_C start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT ⌋ ), else (Crr=Cr)subscriptsuperscript𝐶𝑟𝑟subscript𝐶𝑟(C^{r}_{r}=\lceil C_{r}\rceil)( italic_C start_POSTSUPERSCRIPT italic_r end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT = ⌈ italic_C start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT ⌉ ).

Specifically, in 1., the type of each variable xisubscript𝑥𝑖x_{i}italic_x start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT can be represented by a bool variable, assigned value when we declare xisubscript𝑥𝑖x_{i}italic_x start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT in the SMT2 file. In 4., the rounding of Crsubscript𝐶𝑟C_{r}italic_C start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT is encoded with Lemma8.

Definition 22 (Rnd Valid).

A line in the DER section with reasoning of the form

CxsuperscriptCxC^{x}italic_C start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT {{\{{ rnd mmmitalic_m a1subscripta1a_{1}italic_a start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT n1subscriptn1n_{1}italic_n start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT a2subscripta2a_{2}italic_a start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT n2subscriptn2n_{2}italic_n start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT \ldots amsubscriptama_{m}italic_a start_POSTSUBSCRIPT italic_m end_POSTSUBSCRIPT nmsubscriptnmn_{m}italic_n start_POSTSUBSCRIPT italic_m end_POSTSUBSCRIPT }}\}}

is valid, if

  1. 1.

    Each of Cn1,Cn2,,Cnmsuperscript𝐶subscript𝑛1superscript𝐶subscript𝑛2superscript𝐶subscript𝑛𝑚C^{n_{1}},C^{n_{2}},\ldots,C^{n_{m}}italic_C start_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT , italic_C start_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT , … , italic_C start_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT italic_m end_POSTSUBSCRIPT end_POSTSUPERSCRIPT is specified before Cxsuperscript𝐶𝑥C^{x}italic_C start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT;

  2. 2.

    The linear combination of constraints described in the reasoning, i.e. k=1makCnksuperscriptsubscript𝑘1𝑚subscript𝑎𝑘superscript𝐶subscript𝑛𝑘\sum_{k=1}^{m}a_{k}C^{n_{k}}∑ start_POSTSUBSCRIPT italic_k = 1 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_m end_POSTSUPERSCRIPT italic_a start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT italic_C start_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT end_POSTSUPERSCRIPT, forms a constraint;

  3. 3.

    The constraint formed by this linear combination can be rounded by Lemma9 to another constraint, denoted by Cxrsuperscript𝐶𝑥𝑟C^{xr}italic_C start_POSTSUPERSCRIPT italic_x italic_r end_POSTSUPERSCRIPT;

  4. 4.

    The constraint Cxrsuperscript𝐶𝑥𝑟C^{xr}italic_C start_POSTSUPERSCRIPT italic_x italic_r end_POSTSUPERSCRIPT dominates Cxsuperscript𝐶𝑥C^{x}italic_C start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT.

With these properties, we can conclude that Cxsuperscript𝐶𝑥C^{x}italic_C start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT is implied by previous constraints Cn1,Cn2,,Cnmsuperscript𝐶subscript𝑛1superscript𝐶subscript𝑛2superscript𝐶subscript𝑛𝑚C^{n_{1}},C^{n_{2}},\ldots,C^{n_{m}}italic_C start_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT , italic_C start_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT , … , italic_C start_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT italic_m end_POSTSUBSCRIPT end_POSTSUPERSCRIPT. Hence Cxsuperscript𝐶𝑥C^{x}italic_C start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT inherits all the assumptions used by Cn1,Cn2,,Cnmsuperscript𝐶subscript𝑛1superscript𝐶subscript𝑛2superscript𝐶subscript𝑛𝑚C^{n_{1}},C^{n_{2}},\ldots,C^{n_{m}}italic_C start_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT , italic_C start_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT , … , italic_C start_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT italic_m end_POSTSUBSCRIPT end_POSTSUPERSCRIPT:

Sx:=i[m]Sni.assignsuperscript𝑆𝑥subscript𝑖delimited-[]𝑚superscript𝑆subscript𝑛𝑖S^{x}:=\cup_{i\in[m]}S^{n_{i}}.italic_S start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT := ∪ start_POSTSUBSCRIPT italic_i ∈ [ italic_m ] end_POSTSUBSCRIPT italic_S start_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT end_POSTSUPERSCRIPT .

In SMT logic, this is characterized by

iS(Bix=j[m]Binj).subscript𝑖𝑆superscriptsubscript𝐵𝑖𝑥subscript𝑗delimited-[]𝑚superscriptsubscript𝐵𝑖subscript𝑛𝑗\wedge_{i\in S}(B_{i}^{x}=\vee_{j\in[m]}B_{i}^{n_{j}}).∧ start_POSTSUBSCRIPT italic_i ∈ italic_S end_POSTSUBSCRIPT ( italic_B start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT = ∨ start_POSTSUBSCRIPT italic_j ∈ [ italic_m ] end_POSTSUBSCRIPT italic_B start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT end_POSTSUPERSCRIPT ) .
Lemma 10 (Rnd Valid).

A line in the DER section with reasoning of the form

CxsuperscriptCxC^{x}italic_C start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT {{\{{ rnd mmmitalic_m a1subscripta1a_{1}italic_a start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT n1subscriptn1n_{1}italic_n start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT a2subscripta2a_{2}italic_a start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT n2subscriptn2n_{2}italic_n start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT \ldots amsubscriptama_{m}italic_a start_POSTSUBSCRIPT italic_m end_POSTSUBSCRIPT nmsubscriptnmn_{m}italic_n start_POSTSUBSCRIPT italic_m end_POSTSUBSCRIPT }}\}}

is valid if and only if the transcribed SMT model is satisfiable.

Proof.

We can encode each of the four properties in Definition22 with SMT logic. Property 3) involves encoding Cxrsuperscript𝐶𝑥𝑟C^{xr}italic_C start_POSTSUPERSCRIPT italic_x italic_r end_POSTSUPERSCRIPT, which is characterized in Lemma9. Property 1), 2), and 4) can be encoded exactly the same way as the three properties in Lemma7.∎

Definition 23 (Uns Valid).

A line in the DER section with reasoning of the form

CxsuperscriptCxC^{x}italic_C start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT {{\{{ uns i1subscripti1i_{1}italic_i start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT l1subscriptl1l_{1}italic_l start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT i2subscripti2i_{2}italic_i start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT l2subscriptl2l_{2}italic_l start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT }}\}}

is valid, if

  1. 1.

    Each of Ci1,Cl1,Ci2,Cl2superscript𝐶subscript𝑖1superscript𝐶subscript𝑙1superscript𝐶subscript𝑖2superscript𝐶subscript𝑙2C^{i_{1}},C^{l_{1}},C^{i_{2}},C^{l_{2}}italic_C start_POSTSUPERSCRIPT italic_i start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT , italic_C start_POSTSUPERSCRIPT italic_l start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT , italic_C start_POSTSUPERSCRIPT italic_i start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT , italic_C start_POSTSUPERSCRIPT italic_l start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT is specified before Cxsuperscript𝐶𝑥C^{x}italic_C start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT;

  2. 2.

    Each of Ci1superscript𝐶subscript𝑖1C^{i_{1}}italic_C start_POSTSUPERSCRIPT italic_i start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT and Ci2superscript𝐶subscript𝑖2C^{i_{2}}italic_C start_POSTSUPERSCRIPT italic_i start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT dominates Cxsuperscript𝐶𝑥C^{x}italic_C start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT;

  3. 3.

    Cl1superscript𝐶subscript𝑙1C^{l_{1}}italic_C start_POSTSUPERSCRIPT italic_l start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT is an assumption used by Ci1superscript𝐶subscript𝑖1C^{i_{1}}italic_C start_POSTSUPERSCRIPT italic_i start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT and Cl2superscript𝐶subscript𝑙2C^{l_{2}}italic_C start_POSTSUPERSCRIPT italic_l start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT is an assumption used by Ci2superscript𝐶subscript𝑖2C^{i_{2}}italic_C start_POSTSUPERSCRIPT italic_i start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT (or formally, l1Si1subscript𝑙1superscript𝑆subscript𝑖1l_{1}\in S^{i_{1}}italic_l start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ∈ italic_S start_POSTSUPERSCRIPT italic_i start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT and l2Si2subscript𝑙2superscript𝑆subscript𝑖2l_{2}\in S^{i_{2}}italic_l start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT ∈ italic_S start_POSTSUPERSCRIPT italic_i start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT);

  4. 4.

    Cl1superscript𝐶subscript𝑙1C^{l_{1}}italic_C start_POSTSUPERSCRIPT italic_l start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT and Cl2superscript𝐶subscript𝑙2C^{l_{2}}italic_C start_POSTSUPERSCRIPT italic_l start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT form a disjunction logic;

Recall that by Definition16, if we assume all the assumptions indexed with Si1superscript𝑆subscript𝑖1S^{i_{1}}italic_S start_POSTSUPERSCRIPT italic_i start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT are true, then CON section (which contains original constraints in the MILP problem) implies Ci1superscript𝐶subscript𝑖1C^{i_{1}}italic_C start_POSTSUPERSCRIPT italic_i start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT. Similarly, if we assume all the assumptions indexed with Si2superscript𝑆subscript𝑖2S^{i_{2}}italic_S start_POSTSUPERSCRIPT italic_i start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT are true, then CON section implies Ci2superscript𝐶subscript𝑖2C^{i_{2}}italic_C start_POSTSUPERSCRIPT italic_i start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT.

Since both Ci1superscript𝐶subscript𝑖1C^{i_{1}}italic_C start_POSTSUPERSCRIPT italic_i start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT and Ci2superscript𝐶subscript𝑖2C^{i_{2}}italic_C start_POSTSUPERSCRIPT italic_i start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT imply Cxsuperscript𝐶𝑥C^{x}italic_C start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT, if we assume all the assumptions indexed with Si1superscript𝑆subscript𝑖1S^{i_{1}}italic_S start_POSTSUPERSCRIPT italic_i start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT, or if we assume all the assumptions indexed with Si2superscript𝑆subscript𝑖2S^{i_{2}}italic_S start_POSTSUPERSCRIPT italic_i start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT, then CON section implies Cxsuperscript𝐶𝑥C^{x}italic_C start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT. By 3) and 4), if we assume all the assumptions indexed with (Si1Si2)\{l1,l2}\superscript𝑆subscript𝑖1superscript𝑆subscript𝑖2subscript𝑙1subscript𝑙2(S^{i_{1}}\cup S^{i_{2}})\backslash\{l_{1},l_{2}\}( italic_S start_POSTSUPERSCRIPT italic_i start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT ∪ italic_S start_POSTSUPERSCRIPT italic_i start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT ) \ { italic_l start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT , italic_l start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT }, then CON section implies Cxsuperscript𝐶𝑥C^{x}italic_C start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT. This is because one of l1subscript𝑙1l_{1}italic_l start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT and l2subscript𝑙2l_{2}italic_l start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT has to be true, so if we assume all the assumptions indexed with

Sx:=(Si1Si2)\{l1,l2},assignsuperscript𝑆𝑥\superscript𝑆subscript𝑖1superscript𝑆subscript𝑖2subscript𝑙1subscript𝑙2S^{x}:=(S^{i_{1}}\cup S^{i_{2}})\backslash\{l_{1},l_{2}\},italic_S start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT := ( italic_S start_POSTSUPERSCRIPT italic_i start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT ∪ italic_S start_POSTSUPERSCRIPT italic_i start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT ) \ { italic_l start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT , italic_l start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT } ,

then we are actually assuming either all the assumptions indexed with Si1superscript𝑆subscript𝑖1S^{i_{1}}italic_S start_POSTSUPERSCRIPT italic_i start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT or all the assumptions indexed with Si2superscript𝑆subscript𝑖2S^{i_{2}}italic_S start_POSTSUPERSCRIPT italic_i start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT.

In SMT logic, this is characterized by

jS(Bjx=(Bji1Bji2)(!Bjl1)(!Bjl2)).\wedge_{j\in S}(B_{j}^{x}=(B_{j}^{i_{1}}\vee B_{j}^{i_{2}})\wedge(!B_{j}^{l_{1%}})\wedge(!B_{j}^{l_{2}})).∧ start_POSTSUBSCRIPT italic_j ∈ italic_S end_POSTSUBSCRIPT ( italic_B start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT = ( italic_B start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_i start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT ∨ italic_B start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_i start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT ) ∧ ( ! italic_B start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_l start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT ) ∧ ( ! italic_B start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_l start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT ) ) .
Lemma 11 (Uns Valid).

A line in the DER section with reasoning of the form

CxsuperscriptCxC^{x}italic_C start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT {{\{{ uns i1subscripti1i_{1}italic_i start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT l1subscriptl1l_{1}italic_l start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT i2subscripti2i_{2}italic_i start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT l2subscriptl2l_{2}italic_l start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT }}\}}

is valid if and only if the transcribed SMT model is satisfiable.

Proof.

The four properties in Definition23 can be encoded with SMT2 clauses in the following logic:

  1. 1.
    x𝑥\displaystyle xitalic_x>i1absentsubscript𝑖1\displaystyle>i_{1}> italic_i start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT
    x𝑥\displaystyle xitalic_x>i2absentsubscript𝑖2\displaystyle>i_{2}> italic_i start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT
    x𝑥\displaystyle xitalic_x>l1absentsubscript𝑙1\displaystyle>l_{1}> italic_l start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT
    x𝑥\displaystyle xitalic_x>l2absentsubscript𝑙2\displaystyle>l_{2}> italic_l start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT
  2. 2.

    Encoded by Lemma6;

  3. 3.
    Bl1i1Bl2i2superscriptsubscript𝐵subscript𝑙1subscript𝑖1superscriptsubscript𝐵subscript𝑙2subscript𝑖2B_{l_{1}}^{i_{1}}\wedge B_{l_{2}}^{i_{2}}italic_B start_POSTSUBSCRIPT italic_l start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_i start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT ∧ italic_B start_POSTSUBSCRIPT italic_l start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_i start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_POSTSUPERSCRIPT
  4. 4.

    Encoded by Lemma5.

Definition 24 (DER Valid).

Let the last line in the DER section be of the form

Cx{}.Cx{}\texttt{$C^{x}$ $\{\ldots\}$}.italic_C start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT { … } .

The DER section is valid, if

  1. 1.

    Each line in the DER section is valid;

  2. 2.

    The set of assumptions of Cxsuperscript𝐶𝑥C^{x}italic_C start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT is empty, i.e. Sx=superscript𝑆𝑥S^{x}=\varnothingitalic_S start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT = ∅; (This ensures Cxsuperscript𝐶𝑥C^{x}italic_C start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT can be implied from the CON section without making any assumptions.)

  3. 3.
    1. (a)

      If F𝐹Fitalic_F is false, then Cxsuperscript𝐶𝑥C^{x}italic_C start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT dominates 10101\leq 01 ≤ 0; (Notice that 10101\leq 01 ≤ 0 is a mathematical absurdity, so this implies Cxsuperscript𝐶𝑥C^{x}italic_C start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT is also a mathematical absurdity, i.e. we reach a contradiction from constraints in the CON section.)

    2. (b)

      If F𝐹Fitalic_F is true, then Cxsuperscript𝐶𝑥C^{x}italic_C start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT dominates Cdsuperscript𝐶𝑑C^{d}italic_C start_POSTSUPERSCRIPT italic_d end_POSTSUPERSCRIPT. (So the lower bound of a minimization problem, or the upperbound of a maximization problem, is proved.)

Lemma 12 (DER Valid).

The DER section is valid, if and only if the transcribed SMT model is satisfiable.

Proof.

The three properties in Definition24 can be encoded with SMT2 clauses in the following logic:

  1. 1.

    Encoded with Lemma7, Lemma10, and Lemma11;

  2. 2.

    iS(!Bix)\wedge_{i\in S}(!B_{i}^{x})∧ start_POSTSUBSCRIPT italic_i ∈ italic_S end_POSTSUBSCRIPT ( ! italic_B start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_x end_POSTSUPERSCRIPT );

  3. 3.

    Encoded with Lemma6 and the ite (if-then-else) gate.

Theorem 2 (Main).

A VIPR certificate is valid, if and only if the transcribed SMT model is satisfiable.

Proof.

Theorem2 follows from Lemma4 and Lemma12.∎

V-C Transforming MILP instances to SMT instances

For suitable applications in the MILP domain where additional safeguards are warranted, tranforming MILP instances to SMT instances may be advantageous. However, to the best of our knowledge, we are not aware of any such general translation tools that are publicly available.

Two common file formats for MILP problems are the LP file format, which is human-readable and analogous to the algebraic form of linear constraints, and the MPS file format, which is more machine-friendly with higher precision for constraint coefficients. In MPS format, constraints are specified in a matrix, where each column corresponds to a variable and each row corresponds to a constraint. For each variable, its coefficient at each row is specified, otherwise the coefficient is assumed to be zero. In our implementation of the the transformation, we input MILP instances in MPS format and output equivalent SMT instances in SMT2 format.

At a high level, our transformation from MPS format to SMT2 format is straightforward: we use declare-fun statements to declare variables and assert statements to capture constraints or bounds specified in the original MPS file. Although it is likely that further optimizations could improve the performance of our implementation, our simple transformation provides a useful baseline for comparison. It enables us to experimentally examine the advantages of checking the correctness of a VIPR certificate for a MILP instance via an SMT solver versus directly solving the transformed MILP instances via an SMT solver.

MPS files encode most instance information in four sections: ROWS, RHS, COLUMNS, and BOUNDS. The ROWS section specifies the type of each constraint (>=>=> =, <=<=< =, or ===). The RHS section specifies the right hand side value of each constraint, which is assumed to be a constant. The COLUMNS section specifies for each variable its corresponding coefficient in each constraint. The BOUNDS section specifies the upper and lower bounds of each variables.

Here is the logic of transformation from these four general sections to SMT formulas. First, each variable specified in the COLUMNS section will be encoded as a declare-fun statement. Furthermore, sections ROWS, RHS and COLUMNS encode information on each constraint in the corresponding MILP problem, and each such constraint is transformed into an assert statement. Finally, sections COLUMNS and BOUNDS encode lower and upper bounds for each variable, and each such bound is transformed into an assert statement.444Our implementation can also handle non-standard statements in MPS format, such as the RANGE section and the INDICATOR section.

V-D Block Size and Parallelization in Sequential Transformation

In SectionIV, we presented the aggregated statistics of Strategy 2 and 3 (VIPR checking with sequential transformation, with and without parallelization) when the block size (largest number of VIPR lines encoded in each SMT instance) is 50505050 (B=50𝐵50B=50italic_B = 50). In addition, we tested Strategy 2 and 3 with other block sizes (B=12,25,50,100𝐵122550100B=12,25,50,100italic_B = 12 , 25 , 50 , 100). We run experiments in 3333 Intel Xeon Gold 6226R running at 2.902.902.902.90GHz, each with 32323232 CPUs available (and each CPU supports 2222 hyperthreads).

For the sake of explanation, define the set of all tests as S𝑆Sitalic_S, containing all the 55555555 benchmarks as explained in SectionIV. We define the tests that run for more than 1111 minute in the non-parallel sequential version,with block size B=50𝐵50B=50italic_B = 50 as S1minsubscript𝑆1𝑚𝑖𝑛S_{1min}italic_S start_POSTSUBSCRIPT 1 italic_m italic_i italic_n end_POSTSUBSCRIPT; the ones that run for more than 1111 hour as S1hsubscript𝑆1S_{1h}italic_S start_POSTSUBSCRIPT 1 italic_h end_POSTSUBSCRIPT; and the ones that run for more than 6666 hours as S6hsubscript𝑆6S_{6h}italic_S start_POSTSUBSCRIPT 6 italic_h end_POSTSUBSCRIPT. Compared to the non-parallel sequential approach with B=50𝐵50B=50italic_B = 50, the parallel sequential approach with B=50𝐵50B=50italic_B = 50 is:

  1. 1.

    9.929.929.929.92 times faster (stdev = 6.786.786.786.78) for tests in S𝑆Sitalic_S;

  2. 2.

    12.3412.3412.3412.34 times faster (stdev = 5.825.825.825.82) for tests in S1minsubscript𝑆1𝑚𝑖𝑛S_{1min}italic_S start_POSTSUBSCRIPT 1 italic_m italic_i italic_n end_POSTSUBSCRIPT;

  3. 3.

    15.9515.9515.9515.95 times faster (stdev = 4.614.614.614.61) for tests in S1hsubscript𝑆1S_{1h}italic_S start_POSTSUBSCRIPT 1 italic_h end_POSTSUBSCRIPT;

  4. 4.

    16.8516.8516.8516.85 times faster (stdev = 3.823.823.823.82) for tests in S6hsubscript𝑆6S_{6h}italic_S start_POSTSUBSCRIPT 6 italic_h end_POSTSUBSCRIPT.

Maintaining the baseline comparison (non-parallel sequential with B=50𝐵50B=50italic_B = 50), as we vary block sizes with B{12,25,50,100}𝐵122550100B\in\{12,25,50,100\}italic_B ∈ { 12 , 25 , 50 , 100 } in the parallel approach,its fastest choice of B𝐵Bitalic_B is:

  1. 1.

    11.5311.5311.5311.53 times faster (stdev = 6.756.756.756.75) for tests in S𝑆Sitalic_S;

  2. 2.

    14.1714.1714.1714.17 times faster (stdev = 5.295.295.295.29) for tests in S1minsubscript𝑆1𝑚𝑖𝑛S_{1min}italic_S start_POSTSUBSCRIPT 1 italic_m italic_i italic_n end_POSTSUBSCRIPT;

  3. 3.

    16.9316.9316.9316.93 times faster (stdev = 3.873.873.873.87) for tests in S1hsubscript𝑆1S_{1h}italic_S start_POSTSUBSCRIPT 1 italic_h end_POSTSUBSCRIPT;

  4. 4.

    17.4817.4817.4817.48 times faster (stdev = 3.183.183.183.18) for tests in S6hsubscript𝑆6S_{6h}italic_S start_POSTSUBSCRIPT 6 italic_h end_POSTSUBSCRIPT.

For larger problems (those in S1hS6hsubscript𝑆1subscript𝑆6S_{1h}\cup S_{6h}italic_S start_POSTSUBSCRIPT 1 italic_h end_POSTSUBSCRIPT ∪ italic_S start_POSTSUBSCRIPT 6 italic_h end_POSTSUBSCRIPT), in all cases B{50,100}𝐵50100B\in\{50,100\}italic_B ∈ { 50 , 100 } represents the best block size choice.We also note diminishing returns in increasing the block size: in only 16%percent1616\%16 % of the larger problems, moving from B=50𝐵50B=50italic_B = 50 to B=100𝐵100B=100italic_B = 100 makes the speedup more than 10%percent1010\%10 % faster.

Satisfiability modulo theories for verifying MILP certificates (2024)
Top Articles
Latest Posts
Article information

Author: Carmelo Roob

Last Updated:

Views: 5315

Rating: 4.4 / 5 (45 voted)

Reviews: 92% of readers found this page helpful

Author information

Name: Carmelo Roob

Birthday: 1995-01-09

Address: Apt. 915 481 Sipes Cliff, New Gonzalobury, CO 80176

Phone: +6773780339780

Job: Sales Executive

Hobby: Gaming, Jogging, Rugby, Video gaming, Handball, Ice skating, Web surfing

Introduction: My name is Carmelo Roob, I am a modern, handsome, delightful, comfortable, attractive, vast, good person who loves writing and wants to share my knowledge and understanding with you.