Scippy

    SCIP

    Solving Constraint Integer Programs

    certificate.h
    Go to the documentation of this file.
    1/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
    2/* */
    3/* This file is part of the program and library */
    4/* SCIP --- Solving Constraint Integer Programs */
    5/* */
    6/* Copyright (c) 2002-2025 Zuse Institute Berlin (ZIB) */
    7/* */
    8/* Licensed under the Apache License, Version 2.0 (the "License"); */
    9/* you may not use this file except in compliance with the License. */
    10/* You may obtain a copy of the License at */
    11/* */
    12/* http://www.apache.org/licenses/LICENSE-2.0 */
    13/* */
    14/* Unless required by applicable law or agreed to in writing, software */
    15/* distributed under the License is distributed on an "AS IS" BASIS, */
    16/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */
    17/* See the License for the specific language governing permissions and */
    18/* limitations under the License. */
    19/* */
    20/* You should have received a copy of the Apache-2.0 license */
    21/* along with SCIP; see the file LICENSE. If not visit scipopt.org. */
    22/* */
    23/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
    24
    25/**@file certificate.h
    26 * @ingroup INTERNALAPI
    27 * @brief methods for certificate output
    28 * @author Ambros Gleixner
    29 * @author Daniel Steffy
    30 * @author Leon Eifler
    31 */
    32
    33/*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
    34
    35#ifndef __SCIP_CERTIFICATE_H__
    36#define __SCIP_CERTIFICATE_H__
    37
    38
    39#include "scip/def.h"
    40#include "scip/type_set.h"
    41#include "scip/type_cuts.h"
    42#include "scip/type_stat.h"
    43#include "scip/type_tree.h"
    45#include "scip/type_message.h"
    46#include "scip/type_rational.h"
    47#include "scip/type_sol.h"
    48#include "scip/type_lpexact.h"
    49#include "scip/type_cons.h"
    50#include "scip/type_var.h"
    51#include "scip/pub_fileio.h"
    52#include "scip/type_prob.h"
    54
    55#ifdef __cplusplus
    56extern "C" {
    57#endif
    58
    59/** creates certificate data structure */
    61 SCIP_CERTIFICATE** certificate, /**< pointer to store the certificate information */
    62 SCIP_MESSAGEHDLR* messagehdlr /**< message handler */
    63 );
    64
    65/** frees certificate data structure */
    67 SCIP_CERTIFICATE** certificate /**< pointer to store the certificate information */
    68 );
    69
    70/** initializes certificate information and creates files for certificate output */
    72 SCIP* scip, /**< scip data structure */
    73 SCIP_CERTIFICATE* certificate, /**< certificate information */
    74 BMS_BLKMEM* blkmem, /**< block memory */
    75 SCIP_SET* set, /**< global SCIP settings */
    76 SCIP_MESSAGEHDLR* messagehdlr /**< message handler */
    77 );
    78
    79/** initializes certificate information and creates files for certificate output */
    81 SCIP* scip /**< scip data structure */
    82 );
    83
    84/** closes the certificate output files */
    86 SCIP* scip /**< certificate information */
    87 );
    88
    89
    90/** returns certificate data structure */
    92 SCIP* scip /**< SCIP data structure */
    93 );
    94
    95/** returns whether the certificate output is activated */
    97 SCIP_CERTIFICATE* certificate /**< certificate information */
    98 );
    99
    100/** returns current certificate index (return -1 if certificate not active) */
    102 SCIP_CERTIFICATE* certificate /**< certificate information */
    103 );
    104
    105/** returns current certificate index*/
    107 SCIP_CERTIFICATE* certificate /**< certificate information */
    108 );
    109
    110#ifndef NDEBUG
    111/** checks if information is consistent with printed certificate line */
    113 SCIP_CERTIFICATE* certificate, /**< certificate information */
    114 SCIP_VAR* var, /**< variable that gets changed */
    115 SCIP_BOUNDTYPE boundtype, /**< lb or ub changed? */
    116 SCIP_Real newbound, /**< new bound */
    117 SCIP_Bool needsglobal /**< if the bound needs to be global */
    118 );
    119#endif
    120
    121/** sets the objective function used when printing dual bounds */
    123 SCIP_CERTIFICATE* certificate, /**< certificate information */
    124 SCIP_Bool isorigfile, /**< should the original solution be printed or in transformed space */
    125 BMS_BLKMEM* blkmem, /**< block memory */
    126 SCIP_RATIONAL** coefs, /**< objective function coefficients */
    127 int nvars /**< number of variables */
    128 );
    129
    130/** prints a string to the problem section of the certificate file */
    132 SCIP_CERTIFICATE* certificate, /**< certificate information */
    133 SCIP_Bool isorigfile, /**< should the original solution be printed or in transformed space */
    134 const char* formatstr, /**< format string like in printf() function */
    135 ... /**< format arguments line in printf() function */
    136 );
    137
    138/** prints a string to the proof section of the certificate file */
    140 SCIP_CERTIFICATE* certificate, /**< certificate information */
    141 const char* formatstr, /**< format string like in printf() function */
    142 ... /**< format arguments line in printf() function */
    143 );
    144
    145/** prints a rational number to the problem section of the certificate file */
    147 SCIP_CERTIFICATE* certificate, /**< certificate information */
    148 SCIP_Bool isorigfile, /**< should the original solution be printed or in transformed space */
    149 SCIP_RATIONAL* val /**< rational number to print */
    150 );
    151
    152/** prints a rational number to the proof section of the certificate file */
    154 SCIP_CERTIFICATE* certificate, /**< certificate information */
    155 SCIP_RATIONAL* val /**< rational to print */
    156 );
    157
    158/** prints a comment to the problem section of the certificate file */
    160 SCIP_CERTIFICATE* certificate, /**< certificate information */
    161 SCIP_Bool isorigfile, /**< should the original solution be printed or in transformed space */
    162 const char* formatstr, /**< format string like in printf() function */
    163 ... /**< format arguments line in printf() function */
    164 );
    165
    166/** prints a comment to the proof section of the certificate file */
    168 SCIP_CERTIFICATE* certificate, /**< certificate information */
    169 const char* formatstr, /**< format string like in printf() function */
    170 ... /**< format arguments line in printf() function */
    171 );
    172
    173/** prints variable section header */
    175 SCIP_CERTIFICATE* certificate, /**< certificate information */
    176 SCIP_Bool isorigfile, /**< should the original solution be printed or in transformed space */
    177 int nvars /**< number of variables */
    178 );
    179
    180/** prints version header */
    182 SCIP_CERTIFICATE* certificate, /**< certificate information */
    183 SCIP_Bool isorigfile /**< should the original solution be printed or in transformed space */
    184 );
    185
    186/** prints integer section header */
    188 SCIP_CERTIFICATE* certificate, /**< certificate information */
    189 SCIP_Bool isorigfile, /**< should the original solution be printed or in transformed space */
    190 int nintvars /**< number of integer variables */
    191 );
    192
    193/** prints constraint section header */
    195 SCIP_CERTIFICATE* certificate, /**< certificate information */
    196 SCIP_Bool isorigfile, /**< should the original solution be printed or in transformed space */
    197 int nconss, /**< number of all constraints */
    198 int nboundconss /**< number of bound constraints */
    199 );
    200
    201/** prints derivation section header */
    203 SCIP_CERTIFICATE* certificate, /**< certificate information */
    204 SCIP_Bool isorigfile /**< shoud the line be printed to the origfile or the transfile */
    205 );
    206
    207/** prints constraint */
    209 SCIP_CERTIFICATE* certificate, /**< certificate information */
    210 SCIP_Bool isorigfile, /**< should the original solution be printed or in transformed space */
    211 const char* consname, /**< name of the constraint */
    212 const char sense, /**< sense of the constraint, i.e., G, L, or E */
    213 SCIP_RATIONAL* side, /**< left/right-hand side */
    214 int len, /**< number of nonzeros */
    215 int* ind, /**< index array */
    216 SCIP_RATIONAL** val /**< coefficient array */
    217 );
    218
    219/** prints verification of row as a MIR cut (viewed as a split cut) */
    221 SCIP_SET* set, /**< SCIP settings */
    222 SCIP_LP* lp, /**< SCIP lp data structure */
    223 SCIP_CERTIFICATE* certificate, /**< certificate information */
    224 SCIP_PROB* prob, /**< SCIP problem data */
    225 SCIP_ROW* row, /**< the row to be printed */
    226 const char sense /**< sense of the constraint, i.e., G, L, or E */
    227 );
    228
    229/** prints cutoff bound for objective value **/
    231 SCIP* scip, /**< SCIP data structure */
    232 SCIP_CERTIFICATE* certificate, /**< SCIP certificate */
    233 SCIP_RATIONAL* bound, /**< the bound */
    234 SCIP_Longint* certificateline /**< save the line index */
    235 );
    236
    237/** create a new node data structure for the current node */
    239 SCIP_SET* set, /**< general SCIP settings */
    240 SCIP_PROB* prob, /**< SCIP problem data */
    241 SCIP_CERTIFICATE* certificate, /**< SCIP certificate */
    242 SCIP_AGGRROW* aggrrow, /**< agrrrow that results from the aggregation */
    243 SCIP_ROW** aggrrows, /**< array of rows used fo the aggregation */
    244 SCIP_Real* weights, /**< array of weights */
    245 int naggrrows, /**< length of the arrays */
    246 SCIP_Bool local, /**< true if local bound information can be used */
    247 SCIP_Longint* certificateline /**< pointer to store the certificate line index or NULL */
    248 );
    249
    250/** prints a variable bound to the problem section of the certificate file and returns line index */
    252 SCIP_CERTIFICATE* certificate, /**< certificate information */
    253 SCIP_Bool isorigfile, /**< should the original solution be printed or in transformed space */
    254 const char* boundname, /**< name of the bound constraint */
    255 SCIP_VAR* var, /**< variable to print the bound cons for */
    256 SCIP_RATIONAL* boundval, /**< value of the bound */
    257 SCIP_Bool isupper /**< is it the upper bound? */
    258 );
    259
    260/** installs updated node data in parent node */
    262 SCIP_CERTIFICATE* certificate, /**< certificate information */
    263 SCIP_NODE* node, /**< node data structure */
    264 SCIP_Longint fileindex, /**< index of new bound */
    265 SCIP_RATIONAL* newbound /**< pointer to value of new bound, NULL if infeasible */
    266 );
    267
    268/** prints a dual bound from an exact lp solution */
    270 SCIP_CERTIFICATE* certificate, /**< scip certificate struct */
    271 SCIP_LPEXACT* lpexact, /**< the exact lp */
    272 SCIP_SET* set, /**< scip settings */
    273 SCIP_NODE* node, /**< the current node */
    274 SCIP_PROB* prob, /**< problem data */
    275 SCIP_Bool usefarkas /**< should an infeasibility proof be printed? */
    276 );
    277
    278/** prints a dual bound from an exact lp solution
    279 *
    280 * in case of a bound change (branching), this happens before the bound change is processed;
    281 * therefore we add the option to give on varindex, boundchgindex pair to pass directly to the method
    282 */
    284 SCIP_CERTIFICATE* certificate, /**< scip certificate struct */
    285 SCIP_LPEXACT* lpexact, /**< the exact lp */
    286 SCIP_NODE* node, /**< current node */
    287 SCIP_SET* set, /**< scip settings */
    288 SCIP_PROB* prob, /**< problem data */
    289 SCIP_Bool lowerchanged, /**< to the modified indices address a change in lb or ub? */
    290 int modifiedvarindex, /**< index of modified variable, or -1 */
    291 SCIP_Longint boundchangeindex, /**< index of unprocessed bound change in the certificate, or -1 */
    292 SCIP_Real psval /**< the pseudo obj value */
    293 );
    294
    295/** prints the bound that a node inherits from its parent to the certificate */
    297 SCIP_SET* set, /**< general SCIP settings */
    298 SCIP_CERTIFICATE* certificate, /**< certificate data structure */
    299 SCIP_NODE* node /**< node data */
    300 );
    301
    302/** updates the parent certificate node data when branching */
    304 SCIP_SET* set, /**< general SCIP settings */
    305 SCIP_CERTIFICATE* certificate, /**< certificate information */
    306 SCIP_STAT* stat, /**< dynamic problem statistics */
    307 SCIP_LP* lp, /**< LP informations */
    308 SCIP_NODE* node, /**< node data */
    309 SCIP_VAR* branchvar, /**< the variable that gets branched on */
    310 SCIP_BOUNDTYPE boundtype, /**< the bounding type */
    311 SCIP_Real newbound /**< the new bound */
    312 );
    313
    314/** create a new node data structure for the current node */
    316 SCIP_CERTIFICATE* certificate, /**< SCIP certificate */
    317 SCIP_STAT* stat, /**< problem statistics */
    318 SCIP_NODE* node /**< new node, that was created */
    319 );
    320
    321/** create a new split info structure for the current cut */
    323 SCIP* scip /**< SCIP data structure */
    324 );
    325
    326/** free all aggregation information */
    328 SCIP* scip /**< global SCIP data structure */
    329 );
    330
    331/** free all mir information */
    333 SCIP* scip /**< global SCIP data structure */
    334 );
    335
    336/** free aggregation information */
    338 SCIP_SET* set, /**< general SCIP settings */
    339 SCIP_CERTIFICATE* certificate, /**< SCIP certificate structure */
    340 SCIP_LP* lp, /**< SCIP lp data structure */
    341 SCIP_AGGREGATIONINFO* aggrinfo, /**< SCIP aggregation info */
    342 SCIP_ROW* row /**< new row, that info should be stored for */
    343 );
    344
    345/** free mir information for row */
    347 SCIP_SET* set, /**< general SCIP settings */
    348 SCIP_CERTIFICATE* certificate, /**< SCIP certificate structure */
    349 SCIP_LP* lp, /**< SCIP lp data structure */
    350 SCIP_MIRINFO* mirinfo, /**< SCIP mir info */
    351 SCIP_ROW* row /**< row that should be freed, or NULL if not needed */
    352 );
    353
    354/** free information that is possibly still stored about this row in the certificate structure */
    356 SCIP* scip, /**< SCIP data structure */
    357 SCIP_ROW* row /**< a SCIP row */
    358 );
    359
    360/** create a new aggregation info for a row */
    362 SCIP* scip, /**< SCIP data structure */
    363 SCIP_AGGRROW* aggrrow, /**< agrrrow that results from the aggregation */
    364 SCIP_ROW** aggrrows, /**< array of rows used fo the aggregation */
    365 SCIP_Real* weights, /**< array of weights */
    366 int naggrrows, /**< length of the arrays */
    367 SCIP_ROW** negslackrows, /**< array of rows that are added implicitly with negative slack */
    368 SCIP_Real* negslackweights, /**< array of negative slack weights */
    369 int nnegslackrows /**< length of the negative slack array */
    370 );
    371
    372/** prints unsplitting information to proof section */
    374 SCIP_SET* set, /**< general SCIP settings */
    375 SCIP_CERTIFICATE* certificate, /**< certificate data structure */
    376 SCIP_NODE* node /**< node data */
    377 );
    378
    379/** prints RTP section with lowerbound and upperbound range */
    381 SCIP_CERTIFICATE* certificate, /**< certificate data structure */
    382 SCIP_Bool isorigfile, /**< should the original solution be printed or in transformed space */
    383 SCIP_RATIONAL* lowerbound, /**< pointer to lower bound on the objective */
    384 SCIP_RATIONAL* upperbound /**< pointer to upper bound on the objective */
    385 );
    386
    387/** prints the last part of the certificate header (RTP range/sol, ...) */
    389 SCIP* scip, /**< SCIP data structure */
    390 SCIP_Bool isorigfile, /**< should the original solution be printed or in transformed space */
    391 SCIP_SET* set, /**< general SCIP settings */
    392 SCIP_CERTIFICATE* certificate /**< certificate information */
    393 );
    394
    395/** prints the last part of the certificate header (RTP range/sol, ...) */
    397 SCIP* scip, /**< SCIP data structure */
    398 SCIP_CERTIFICATE* certificate /**< certificate information */
    399 );
    400
    401/** prints RTP section for infeasibility */
    403 SCIP_CERTIFICATE* certificate, /**< certificate data structure */
    404 SCIP_Bool isorigfile /**< should the original solution be printed or in transformed space */
    405 );
    406
    407/** updates the current derived bound of the node with newbound, if newbound is better */
    409 SCIP_CERTIFICATE* certificate, /**< certificate information */
    410 SCIP_NODE* node, /**< node data structure */
    411 SCIP_Longint fileindex, /**< index of new bound's proof */
    412 SCIP_RATIONAL* newbound /**< value of new bound */
    413 );
    414
    415/** sets the last bound index for the certificate */
    417 SCIP_CERTIFICATE* certificate, /**< certificate data structure */
    418 SCIP_Longint index /**< index of new bound */
    419 );
    420
    421/** returns the last bound index for the certificate */
    423 SCIP_CERTIFICATE* certificate /**< certificate data structure */
    424 );
    425
    426/** returns the index for a row in the certificate
    427 *
    428 * @todo let this method return LONG_MAX if row is not in the hashmap; add method to check existence, and to insert an
    429 * element, and use these throughout the SCIP core
    430 */
    432 SCIP_CERTIFICATE* certificate, /**< certificate data structure */
    433 SCIP_ROWEXACT* row, /**< row to consider */
    434 SCIP_Bool rhs /**< whether we want the index for the rhs or the lhs */
    435 );
    436
    437/** prints a proof that boundchange is leads to infeasibility */
    439 SCIP* scip, /**< SCIP data structure */
    440 SCIP_CERTIFICATE* certificate, /**< certificate data structure */
    441 SCIP_VAR* var, /**< variable */
    442 SCIP_RATIONAL* lb, /**< lower bound */
    443 SCIP_RATIONAL* ub, /**< upper bound */
    444 SCIP_Longint lbindex, /**< index of the lower bound */
    445 SCIP_Longint ubindex /**< index of the upper bound */
    446 );
    447
    448/** prints a proof for a new global bound */
    450 SCIP* scip, /**< SCIP data structure */
    451 SCIP_CERTIFICATE* certificate, /**< SCIP certificate */
    452 SCIP_VAR* var, /**< variable */
    453 SCIP_BOUNDTYPE boundtype, /**< Whether we have an upper bound or a lower bound */
    454 SCIP_RATIONAL* value, /**< value of the bound */
    455 SCIP_Longint certificateindex /**< index in the certificate */
    456 );
    457
    458/* prints information for constraint to certificate file */
    460 SCIP* scip, /**< SCIP data structure */
    461 SCIP_CONS* cons /**< constraint */
    462 );
    463
    464/** returns the index of the given constraint in the certificate */
    466 SCIP_CERTIFICATE* certificate, /**< certificate data structure */
    467 SCIP_CONS* cons, /**< constraint */
    468 SCIP_RATIONAL* lhs, /**< lhs of the constraint */
    469 SCIP_RATIONAL* rhs, /**< rhs of the constraint */
    470 SCIP_Bool useRhs /**< whether to return the index of the rhs or lhs */
    471 );
    472
    473
    474#ifdef __cplusplus
    475}
    476#endif
    477
    478#endif
    static long bound
    SCIP_RETCODE SCIPcertificatePrintInheritedBound(SCIP_SET *set, SCIP_CERTIFICATE *certificate, SCIP_NODE *node)
    SCIP_RETCODE SCIPcertificatePrintAggrrow(SCIP_SET *set, SCIP_PROB *prob, SCIP_CERTIFICATE *certificate, SCIP_AGGRROW *aggrrow, SCIP_ROW **aggrrows, SCIP_Real *weights, int naggrrows, SCIP_Bool local, SCIP_Longint *certificateline)
    SCIP_RETCODE SCIPcertificatePrintDualboundPseudo(SCIP_CERTIFICATE *certificate, SCIP_LPEXACT *lpexact, SCIP_NODE *node, SCIP_SET *set, SCIP_PROB *prob, SCIP_Bool lowerchanged, int modifiedvarindex, SCIP_Longint boundchangeindex, SCIP_Real psval)
    SCIP_RETCODE SCIPcertificatePrintResult(SCIP *scip, SCIP_Bool isorigfile, SCIP_SET *set, SCIP_CERTIFICATE *certificate)
    SCIP_RETCODE SCIPconsPrintCertificateExactLinear(SCIP *scip, SCIP_CONS *cons)
    void SCIPcertificateFree(SCIP_CERTIFICATE **certificate)
    SCIP_CERTIFICATE * SCIPgetCertificate(SCIP *scip)
    SCIP_RETCODE SCIPcertificateNewNodeData(SCIP_CERTIFICATE *certificate, SCIP_STAT *stat, SCIP_NODE *node)
    SCIP_RETCODE SCIPcertificateClearMirinfo(SCIP *scip)
    SCIP_Longint SCIPcertificateGetRowIndex(SCIP_CERTIFICATE *certificate, SCIP_ROWEXACT *row, SCIP_Bool rhs)
    SCIP_RETCODE SCIPcertificatePrintMirCut(SCIP_SET *set, SCIP_LP *lp, SCIP_CERTIFICATE *certificate, SCIP_PROB *prob, SCIP_ROW *row, const char sense)
    SCIP_RETCODE SCIPcertificateUpdateParentData(SCIP_CERTIFICATE *certificate, SCIP_NODE *node, SCIP_Longint fileindex, SCIP_RATIONAL *newbound)
    SCIP_RETCODE SCIPcertificateInitTransFile(SCIP *scip)
    SCIP_RETCODE SCIPcertificateSetLastBoundIndex(SCIP_CERTIFICATE *certificate, SCIP_Longint index)
    SCIP_RETCODE SCIPcertificateFreeMirInfo(SCIP_SET *set, SCIP_CERTIFICATE *certificate, SCIP_LP *lp, SCIP_MIRINFO *mirinfo, SCIP_ROW *row)
    void SCIPcertificatePrintRtpInfeas(SCIP_CERTIFICATE *certificate, SCIP_Bool isorigfile)
    void SCIPcertificatePrintVersionHeader(SCIP_CERTIFICATE *certificate, SCIP_Bool isorigfile)
    void SCIPcertificatePrintDerHeader(SCIP_CERTIFICATE *certificate, SCIP_Bool isorigfile)
    SCIP_RETCODE SCIPcertificateUpdateBoundData(SCIP_CERTIFICATE *certificate, SCIP_NODE *node, SCIP_Longint fileindex, SCIP_RATIONAL *newbound)
    SCIP_RETCODE SCIPcertificateSaveFinalbound(SCIP *scip, SCIP_CERTIFICATE *certificate)
    SCIP_RETCODE SCIPcertificatePrintDualboundExactLP(SCIP_CERTIFICATE *certificate, SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_NODE *node, SCIP_PROB *prob, SCIP_Bool usefarkas)
    SCIP_RETCODE SCIPcertificatePrintGlobalBound(SCIP *scip, SCIP_CERTIFICATE *certificate, SCIP_VAR *var, SCIP_BOUNDTYPE boundtype, SCIP_RATIONAL *value, SCIP_Longint certificateindex)
    SCIP_Longint SCIPcertificateGetLastBoundIndex(SCIP_CERTIFICATE *certificate)
    SCIP_RETCODE SCIPcertificatePrintProofRational(SCIP_CERTIFICATE *certificate, SCIP_RATIONAL *val)
    SCIP_Bool SCIPcertificateIsEnabled(SCIP_CERTIFICATE *certificate)
    SCIP_RETCODE SCIPcertificatePrintCutoffBound(SCIP *scip, SCIP_CERTIFICATE *certificate, SCIP_RATIONAL *bound, SCIP_Longint *certificateline)
    SCIP_Longint SCIPcertificateGetConsIndex(SCIP_CERTIFICATE *certificate, SCIP_CONS *cons, SCIP_RATIONAL *lhs, SCIP_RATIONAL *rhs, SCIP_Bool useRhs)
    void SCIPcertificatePrintConsHeader(SCIP_CERTIFICATE *certificate, SCIP_Bool isorigfile, int nconss, int nboundconss)
    SCIP_RETCODE SCIPcertificateClearAggrinfo(SCIP *scip)
    void SCIPcertificatePrintIntHeader(SCIP_CERTIFICATE *certificate, SCIP_Bool isorigfile, int nintvars)
    SCIP_RETCODE SCIPcertificateExit(SCIP *scip)
    SCIP_Longint SCIPcertificateGetCurrentIndex(SCIP_CERTIFICATE *certificate)
    SCIP_RETCODE SCIPcertificatePrintUnsplitting(SCIP_SET *set, SCIP_CERTIFICATE *certificate, SCIP_NODE *node)
    SCIP_RETCODE SCIPcertificateInit(SCIP *scip, SCIP_CERTIFICATE *certificate, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr)
    SCIP_Bool SCIPcertificateEnsureLastBoundInfoConsistent(SCIP_CERTIFICATE *certificate, SCIP_VAR *var, SCIP_BOUNDTYPE boundtype, SCIP_Real newbound, SCIP_Bool needsglobal)
    SCIP_RETCODE SCIPcertificateFreeRowInfo(SCIP *scip, SCIP_ROW *row)
    SCIP_RETCODE SCIPcertificateFreeAggrInfo(SCIP_SET *set, SCIP_CERTIFICATE *certificate, SCIP_LP *lp, SCIP_AGGREGATIONINFO *aggrinfo, SCIP_ROW *row)
    SCIP_RETCODE SCIPcertificateSetAndPrintObjective(SCIP_CERTIFICATE *certificate, SCIP_Bool isorigfile, BMS_BLKMEM *blkmem, SCIP_RATIONAL **coefs, int nvars)
    SCIP_RETCODE SCIPcertificatePrintCutoffConflictingBounds(SCIP *scip, SCIP_CERTIFICATE *certificate, SCIP_VAR *var, SCIP_RATIONAL *lb, SCIP_RATIONAL *ub, SCIP_Longint lbindex, SCIP_Longint ubindex)
    SCIP_RETCODE SCIPcertificatePrintBoundCons(SCIP_CERTIFICATE *certificate, SCIP_Bool isorigfile, const char *boundname, SCIP_VAR *var, SCIP_RATIONAL *boundval, SCIP_Bool isupper)
    SCIP_RETCODE SCIPcertificateCreate(SCIP_CERTIFICATE **certificate, SCIP_MESSAGEHDLR *messagehdlr)
    SCIP_Real SCIPcertificateGetFilesize(SCIP_CERTIFICATE *certificate)
    SCIP_RETCODE SCIPcertificatePrintCons(SCIP_CERTIFICATE *certificate, SCIP_Bool isorigfile, const char *consname, const char sense, SCIP_RATIONAL *side, int len, int *ind, SCIP_RATIONAL **val)
    void SCIPcertificatePrintProofMessage(SCIP_CERTIFICATE *certificate, const char *formatstr,...)
    SCIP_RETCODE SCIPcertificatePrintRtpRange(SCIP_CERTIFICATE *certificate, SCIP_Bool isorigfile, SCIP_RATIONAL *lowerbound, SCIP_RATIONAL *upperbound)
    void SCIPcertificatePrintProblemComment(SCIP_CERTIFICATE *certificate, SCIP_Bool isorigfile, const char *formatstr,...)
    SCIP_RETCODE SCIPcertificateUpdateBranchingData(SCIP_SET *set, SCIP_CERTIFICATE *certificate, SCIP_STAT *stat, SCIP_LP *lp, SCIP_NODE *node, SCIP_VAR *branchvar, SCIP_BOUNDTYPE boundtype, SCIP_Real newbound)
    SCIP_RETCODE SCIPcertificateNewAggrInfo(SCIP *scip, SCIP_AGGRROW *aggrrow, SCIP_ROW **aggrrows, SCIP_Real *weights, int naggrrows, SCIP_ROW **negslackrows, SCIP_Real *negslackweights, int nnegslackrows)
    void SCIPcertificatePrintProofComment(SCIP_CERTIFICATE *certificate, const char *formatstr,...)
    SCIP_RETCODE SCIPcertificateNewMirInfo(SCIP *scip)
    void SCIPcertificatePrintProblemMessage(SCIP_CERTIFICATE *certificate, SCIP_Bool isorigfile, const char *formatstr,...)
    SCIP_RETCODE SCIPcertificatePrintProblemRational(SCIP_CERTIFICATE *certificate, SCIP_Bool isorigfile, SCIP_RATIONAL *val)
    void SCIPcertificatePrintVarHeader(SCIP_CERTIFICATE *certificate, SCIP_Bool isorigfile, int nvars)
    common defines and data types used in all packages of SCIP
    #define SCIP_Longint
    Definition: def.h:141
    #define SCIP_Bool
    Definition: def.h:91
    #define SCIP_Real
    Definition: def.h:156
    memory allocation routines
    struct BMS_BlkMem BMS_BLKMEM
    Definition: memory.h:437
    wrapper functions to map file i/o to standard or zlib file i/o
    Definition: heur_padm.c:135
    type definitions for certificate output
    type definitions for constraints and constraint handlers
    type definitions for cuts
    enum SCIP_BoundType SCIP_BOUNDTYPE
    Definition: type_lp.h:60
    type definitions for exact LP management
    type definitions for message output methods
    type definitions for storing and manipulating the main problem
    type definitions for rational numbers
    enum SCIP_Retcode SCIP_RETCODE
    Definition: type_retcode.h:63
    type definitions for global SCIP settings
    type definitions for storing primal CIP solutions
    type definitions for problem statistics
    type definitions for branch and bound tree
    type definitions for problem variables