summaryrefslogtreecommitdiff
path: root/src/theory/quantifiers_engine.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/theory/quantifiers_engine.h')
-rw-r--r--src/theory/quantifiers_engine.h24
1 files changed, 22 insertions, 2 deletions
diff --git a/src/theory/quantifiers_engine.h b/src/theory/quantifiers_engine.h
index 08ca0564b..232d1d889 100644
--- a/src/theory/quantifiers_engine.h
+++ b/src/theory/quantifiers_engine.h
@@ -85,6 +85,7 @@ class EqualityQueryQuantifiersEngine;
class QuantifiersEngine {
friend class quantifiers::InstantiationEngine;
+ friend class quantifiers::InstStrategyCbqi;
friend class quantifiers::InstStrategyCegqi;
friend class quantifiers::ModelEngine;
friend class quantifiers::RewriteEngine;
@@ -113,6 +114,9 @@ private:
quantifiers::AlphaEquivalence * d_alpha_equiv;
/** model builder */
quantifiers::QModelBuilder* d_builder;
+ /** utility for effectively propositional logic */
+ QuantEPR * d_qepr;
+private:
/** instantiation engine */
quantifiers::InstantiationEngine* d_inst_engine;
/** model engine */
@@ -228,6 +232,8 @@ public:
QuantRelevance* getQuantifierRelevance() { return d_quant_rel; }
/** get the model builder */
quantifiers::QModelBuilder* getModelBuilder() { return d_builder; }
+ /** get utility for EPR */
+ QuantEPR* getQuantEPR() { return d_qepr; }
public: //modules
/** get instantiation engine */
quantifiers::InstantiationEngine* getInstantiationEngine() { return d_inst_engine; }
@@ -273,6 +279,8 @@ public:
void finishInit();
/** presolve */
void presolve();
+ /** notify preprocessed assertion */
+ void ppNotifyAssertions( std::vector< Node >& assertions );
/** check at level */
void check( Theory::Effort e );
/** notify that theories were combined */
@@ -325,6 +333,8 @@ public:
bool addSplit( Node n, bool reqPhase = false, bool reqPhasePol = true );
/** add split equality */
bool addSplitEquality( Node n1, Node n2, bool reqPhase = false, bool reqPhasePol = true );
+ /** add EPR axiom */
+ bool addEPRAxiom( TypeNode tn );
/** mark relevant quantified formula, this will indicate it should be checked before the others */
void markRelevant( Node q );
/** has added lemma */
@@ -365,7 +375,10 @@ public:
/** print solution for synthesis conjectures */
void printSynthSolution( std::ostream& out );
/** get instantiations */
+ void getInstantiations( Node q, std::vector< Node >& insts );
void getInstantiations( std::map< Node, std::vector< Node > >& insts );
+ /** get instantiated conjunction */
+ Node getInstantiatedConjunction( Node q );
/** get unsat core lemmas */
bool getUnsatCoreLemmas( std::vector< Node >& active_lemmas );
bool getUnsatCoreLemmas( std::vector< Node >& active_lemmas, std::map< Node, Node >& weak_imp );
@@ -375,22 +388,29 @@ public:
class Statistics {
public:
TimerStat d_time;
+ TimerStat d_qcf_time;
+ TimerStat d_ematching_time;
IntStat d_num_quant;
IntStat d_instantiation_rounds;
IntStat d_instantiation_rounds_lc;
IntStat d_instantiations;
IntStat d_inst_duplicate;
IntStat d_inst_duplicate_eq;
+ IntStat d_inst_duplicate_ent;
IntStat d_triggers;
IntStat d_simple_triggers;
IntStat d_multi_triggers;
IntStat d_multi_trigger_instantiations;
IntStat d_red_alpha_equiv;
- IntStat d_red_lte_partial_inst;
IntStat d_instantiations_user_patterns;
IntStat d_instantiations_auto_gen;
IntStat d_instantiations_guess;
- IntStat d_instantiations_cbqi_arith;
+ IntStat d_instantiations_qcf;
+ IntStat d_instantiations_qcf_prop;
+ IntStat d_instantiations_fmf_exh;
+ IntStat d_instantiations_fmf_mbqi;
+ IntStat d_instantiations_cbqi;
+ IntStat d_instantiations_rr;
Statistics();
~Statistics();
};/* class QuantifiersEngine::Statistics */
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback