GCC Code Coverage Report
Directory: . Exec Total Coverage
File: src/theory/quantifiers/fmf/model_engine.h Lines: 1 1 100.0 %
Date: 2021-03-23 Branches: 1 2 50.0 %

Line Exec Source
1
/*********************                                                        */
2
/*! \file model_engine.h
3
 ** \verbatim
4
 ** Top contributors (to current version):
5
 **   Andrew Reynolds, Mathias Preiner, Morgan Deters
6
 ** This file is part of the CVC4 project.
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.\endverbatim
11
 **
12
 ** \brief Model Engine class
13
 **/
14
15
#include "cvc4_private.h"
16
17
#ifndef CVC4__THEORY__QUANTIFIERS__MODEL_ENGINE_H
18
#define CVC4__THEORY__QUANTIFIERS__MODEL_ENGINE_H
19
20
#include "theory/quantifiers/fmf/model_builder.h"
21
#include "theory/quantifiers/quant_module.h"
22
#include "theory/theory_model.h"
23
24
namespace CVC4 {
25
namespace theory {
26
namespace quantifiers {
27
28
class ModelEngine : public QuantifiersModule
29
{
30
  friend class RepSetIterator;
31
private:
32
  //check model
33
  int checkModel();
34
  //exhaustively instantiate quantifier (possibly using mbqi)
35
  void exhaustiveInstantiate( Node f, int effort = 0 );
36
private:
37
  //temporary statistics
38
  //is the exhaustive instantiation incomplete?
39
  bool d_incomplete_check;
40
  // set of quantified formulas for which check was incomplete
41
  std::vector< Node > d_incomplete_quants;
42
  int d_addedLemmas;
43
  int d_triedLemmas;
44
  int d_totalLemmas;
45
public:
46
 ModelEngine(QuantifiersEngine* qe,
47
             QuantifiersState& qs,
48
             QuantifiersInferenceManager& qim,
49
             QuantifiersRegistry& qr);
50
 virtual ~ModelEngine();
51
52
public:
53
 bool needsCheck(Theory::Effort e) override;
54
 QEffort needsModel(Theory::Effort e) override;
55
 void reset_round(Theory::Effort e) override;
56
 void check(Theory::Effort e, QEffort quant_e) override;
57
 bool checkComplete() override;
58
 bool checkCompleteFor(Node q) override;
59
 void registerQuantifier(Node f) override;
60
 void assertNode(Node f) override;
61
 Node explain(TNode n) { return Node::null(); }
62
 void debugPrint(const char* c);
63
 /** Identify this module */
64
23766
 std::string identify() const override { return "ModelEngine"; }
65
};/* class ModelEngine */
66
67
}/* CVC4::theory::quantifiers namespace */
68
}/* CVC4::theory namespace */
69
}/* CVC4 namespace */
70
71
#endif /* CVC4__THEORY__QUANTIFIERS__MODEL_ENGINE_H */