1 /********************* */
2 /*! \file miplib_trick.h
4 ** Top contributors (to current version):
6 ** This file is part of the CVC4 project.
7 ** Copyright (c) 2009-2020 by the authors listed in the file AUTHORS
8 ** in the top-level source directory and their institutional affiliations.
9 ** All rights reserved. See the file COPYING in the top-level source
10 ** directory for licensing information.\endverbatim
12 ** \brief The MIPLIB trick preprocessing pass
16 #include "cvc4_private.h"
18 #ifndef CVC4__PREPROCESSING__PASSES__MIPLIB_TRICK_H
19 #define CVC4__PREPROCESSING__PASSES__MIPLIB_TRICK_H
21 #include "expr/node.h"
22 #include "preprocessing/preprocessing_pass.h"
25 namespace preprocessing
{
28 class MipLibTrick
: public PreprocessingPass
, public NodeManagerListener
31 MipLibTrick(PreprocessingPassContext
* preprocContext
);
34 // NodeManagerListener callbacks to collect d_boolVars.
35 void nmNotifyNewVar(TNode n
) override
;
36 void nmNotifyNewSkolem(TNode n
,
37 const std::string
& comment
,
38 uint32_t flags
) override
;
41 PreprocessingPassResult
applyInternal(
42 AssertionPipeline
* assertionsToPreprocess
) override
;
47 /** number of assertions removed by miplib pass */
48 IntStat d_numMiplibAssertionsRemoved
;
53 Statistics d_statistics
;
55 std::vector
<Node
> d_boolVars
;
59 } // namespace preprocessing
62 #endif /* CVC4__PREPROCESSING__PASSES__MIPLIB_TRICK_H */