mirror of
				https://github.com/Z3Prover/z3
				synced 2025-10-31 11:42:28 +00:00 
			
		
		
		
	fix bug in model generation for COI filter
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
		
							parent
							
								
									61dcdcb9d1
								
							
						
					
					
						commit
						3e1b9876db
					
				
					 1 changed files with 17 additions and 1 deletions
				
			
		|  | @ -200,7 +200,23 @@ namespace datalog { | |||
|             func_decl_set::iterator it = pruned_preds.begin(); | ||||
|             extension_model_converter* mc0 = alloc(extension_model_converter, m); | ||||
|             for (; it != end; ++it) { | ||||
|                 mc0->insert(*it, m.mk_true()); | ||||
|                 const rule_vector& rules = source.get_predicate_rules(*it); | ||||
|                 expr_ref_vector fmls(m); | ||||
|                 for (unsigned i = 0; i < rules.size(); ++i) { | ||||
|                     app* head = rules[i]->get_head(); | ||||
|                     expr_ref_vector conj(m); | ||||
|                     unsigned n = head->get_num_args()-1; | ||||
|                     for (unsigned j = 0; j < head->get_num_args(); ++j) { | ||||
|                         expr* arg = head->get_arg(j); | ||||
|                         if (!is_var(arg)) { | ||||
|                             conj.push_back(m.mk_eq(m.mk_var(j, m.get_sort(arg)), arg)); | ||||
|                         } | ||||
|                     }                     | ||||
|                     fmls.push_back(m.mk_and(conj.size(), conj.c_ptr())); | ||||
|                 } | ||||
|                 expr_ref fml(m); | ||||
|                 fml = m.mk_or(fmls.size(), fmls.c_ptr()); | ||||
|                 mc0->insert(*it, fml); | ||||
|             }    | ||||
|             m_context.add_model_converter(mc0); | ||||
|         } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue