SMT-RAT  24.02
Toolbox for Strategic and Parallel Satisfiability-Modulo-Theories Solving
IntBlastSettings.h
Go to the documentation of this file.
1 /*
2  * SMT-RAT - Satisfiability-Modulo-Theories Real Algebra Toolbox
3  * Copyright (C) 2012 Florian Corzilius, Ulrich Loup, Erika Abraham, Sebastian Junges
4  *
5  * This file is part of SMT-RAT.
6  *
7  * SMT-RAT is free software: you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation, either version 3 of the License, or
10  * (at your option) any later version.
11  *
12  * SMT-RAT is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with SMT-RAT. If not, see <http://www.gnu.org/licenses/>.
19  *
20  */
21 /**
22  * @file IntBlastSettings.h
23  * @author Andreas Krueger <andreas.krueger@rwth-aachen.de>
24  * @author Florian Corzilius <corzilius@cs.rwth-aachen.de>
25  */
26 
27 
28 #pragma once
29 
30 namespace smtrat
31 {
33  {
34  static constexpr auto moduleName = "IntBlastModule<IntBlastSettings1>";
35  /**
36  * Maximum width used for encoding an integer variable as bit-vector.
37  *
38  * Note that this only applies to the encoding of variables.
39  * Intermediate terms (polynomials) are always encoded using a
40  * sufficiently high width.
41  *
42  * If this value is set to zero, there is no maximal width. Choose this option only if all variables are bounded.
43  */
44  static const std::size_t max_variable_encoding_width = 6;
45 
46  /**
47  * Whether to allow the encoding into complex bit-vector terms.
48  * When set to false, an own bit-vector variable is introduced for
49  * each encoded polynomial.
50  * When set to true, polynomials may also be encoded by bit-vector terms
51  * that consist of bit-vector function symbols.
52  */
53  static const bool allow_encoding_into_complex_bvterms = true;
54 
55  /**
56  * Whether to apply ICP to obtain smaller bounds for the
57  * term encodings.
58  * If set to false, the widths for the encoded bit-vector terms
59  * are chosen conservatively.
60  */
61  static const bool apply_icp = false;
62 
63  /**
64  * Whether to use offsets for annotated bit-vector terms.
65  * For nonlinear variables, no offset is used (independent of this
66  * configuration setting).
67  */
68  static const bool use_offsets_in_encoding = false;
69  };
70 
72  {
73  static constexpr auto moduleName = "IntBlastModule<IntBlastSettings2>";
74  static const std::size_t max_variable_encoding_width = 0;
75  };
76 }
Class to create the formulas for axioms.
static const bool apply_icp
Whether to apply ICP to obtain smaller bounds for the term encodings.
static const bool allow_encoding_into_complex_bvterms
Whether to allow the encoding into complex bit-vector terms.
static constexpr auto moduleName
static const std::size_t max_variable_encoding_width
Maximum width used for encoding an integer variable as bit-vector.
static const bool use_offsets_in_encoding
Whether to use offsets for annotated bit-vector terms.
static const std::size_t max_variable_encoding_width
static constexpr auto moduleName