1 |
|
/****************************************************************************** |
2 |
|
* Top contributors (to current version): |
3 |
|
* Gereon Kremer, Andrew Reynolds, Tim King |
4 |
|
* |
5 |
|
* This file is part of the cvc5 project. |
6 |
|
* |
7 |
|
* Copyright (c) 2009-2021 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. |
11 |
|
* **************************************************************************** |
12 |
|
* |
13 |
|
* Check for split zero lemma. |
14 |
|
*/ |
15 |
|
|
16 |
|
#ifndef CVC5__THEORY__ARITH__NL__EXT__SPLIT_ZERO_CHECK_H |
17 |
|
#define CVC5__THEORY__ARITH__NL__EXT__SPLIT_ZERO_CHECK_H |
18 |
|
|
19 |
|
#include "expr/node.h" |
20 |
|
#include "context/cdhashset.h" |
21 |
|
|
22 |
|
namespace cvc5 { |
23 |
|
namespace theory { |
24 |
|
namespace arith { |
25 |
|
namespace nl { |
26 |
|
|
27 |
|
struct ExtState; |
28 |
|
|
29 |
5201 |
class SplitZeroCheck |
30 |
|
{ |
31 |
|
public: |
32 |
|
SplitZeroCheck(ExtState* data); |
33 |
|
|
34 |
|
/** check split zero |
35 |
|
* |
36 |
|
* Returns a set of theory lemmas of the form |
37 |
|
* t = 0 V t != 0 |
38 |
|
* where t is a term that exists in the current context. |
39 |
|
*/ |
40 |
|
void check(); |
41 |
|
|
42 |
|
private: |
43 |
|
using NodeSet = context::CDHashSet<Node>; |
44 |
|
|
45 |
|
/** Basic data that is shared with other checks */ |
46 |
|
ExtState* d_data; |
47 |
|
/** cache of terms t for which we have added the lemma ( t = 0 V t != 0 ). */ |
48 |
|
NodeSet d_zero_split; |
49 |
|
}; |
50 |
|
|
51 |
|
} // namespace nl |
52 |
|
} // namespace arith |
53 |
|
} // namespace theory |
54 |
|
} // namespace cvc5 |
55 |
|
|
56 |
|
#endif |