diff options
author | Andrew Reynolds <andrew.j.reynolds@gmail.com> | 2018-04-29 21:43:51 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-04-29 21:43:51 -0500 |
commit | c3011ddae1d56eef2c7602b477c8935670a8aa75 (patch) | |
tree | f5a0352abaa60663677befc588fdfbfc40beb2ed /src/theory/arith/nonlinear_extension.h | |
parent | 9c4a895589fb2da18fd5e178394601ef62b0563f (diff) |
Refactor nonlinear check (#1814)
Diffstat (limited to 'src/theory/arith/nonlinear_extension.h')
-rw-r--r-- | src/theory/arith/nonlinear_extension.h | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/src/theory/arith/nonlinear_extension.h b/src/theory/arith/nonlinear_extension.h index 6985f69dd..20c239ea7 100644 --- a/src/theory/arith/nonlinear_extension.h +++ b/src/theory/arith/nonlinear_extension.h @@ -473,10 +473,17 @@ class NonlinearExtension { std::map<Node, Node> d_trig_base; std::map<Node, bool> d_trig_is_base; std::map< Node, bool > d_tf_initial_refine; - + /** the list of lemmas we are waiting to flush until after check model */ + std::vector<Node> d_waiting_lemmas; + void mkPi(); void getCurrentPiBounds( std::vector< Node >& lemmas ); -private: + /** print rational approximation */ + void printRationalApprox(const char* c, Node cr, unsigned prec = 5) const; + /** print model value */ + void printModelValue(const char* c, Node n, unsigned prec = 5) const; + + private: //per last-call effort check //information about monomials @@ -571,6 +578,15 @@ private: */ unsigned d_taylor_degree; + /** + * Get a lower/upper approximation of the constant r within the given + * level of precision. In other words, this returns a constant c' such that + * c' <= c <= c' + 1/(10^prec) if isLower is true, or + * c' + 1/(10^prec) <= c <= c' if isLower is false. + * where c' is a rational of the form n/d for some n and d <= 10^prec. + */ + Node getApproximateConstant(Node c, bool isLower, unsigned prec) const; + /** concavity region for transcendental functions * * This stores an integer that identifies an interval in |