示例#1
0
 lbool context::check(model_ref & m) {
     flet<bool> searching(m_searching, true);
     lbool r;
     r = get_smt_kernel().check();
     if (r != l_false)
         get_smt_kernel().get_model(m);
     return r;
 }
示例#2
0
 void context::pop(unsigned num_scopes) {
     for (unsigned i = 0; i < num_scopes; ++i) {
         unsigned sz = m_ast_lim.back();
         m_ast_lim.pop_back();
         dealloc(m_replay_stack.back());
         m_replay_stack.pop_back();
         while (m_ast_trail.size() > sz) {
             m_ast_trail.pop_back();
         }
     }
     SASSERT(num_scopes <= get_smt_kernel().get_scope_level());
     get_smt_kernel().pop(num_scopes);
 }
示例#3
0
 void context::push() {
     get_smt_kernel().push();
     if (!m_user_ref_count) {
         m_ast_lim.push_back(m_ast_trail.size());
         m_replay_stack.push_back(0);
     }
 }
示例#4
0
 void context::pop(unsigned num_scopes) {
     for (unsigned i = 0; i < num_scopes; ++i) {
         if (!m_user_ref_count) {
             unsigned sz = m_ast_lim.back();
             m_ast_lim.pop_back();
             dealloc(m_replay_stack.back());
             m_replay_stack.pop_back();
             while (m_ast_trail.size() > sz) {
                 m_ast_trail.pop_back();
             }
         }
     }
     get_smt_kernel().pop(num_scopes);
 }
示例#5
0
 void context::assert_cnstr(expr * a) {
     get_smt_kernel().assert_expr(a);
 }
示例#6
0
 void context::push() {
     get_smt_kernel().push();
     m_ast_lim.push_back(m_ast_trail.size());
     m_replay_stack.push_back(0);        
 }