mirror of
				https://github.com/Z3Prover/z3
				synced 2025-10-31 03:32:28 +00:00 
			
		
		
		
	#6319 - fix incompleteness in propagation of default to all array terms in the equivalence class. Fix bug with q_mbi where domain restrictions are not using values because the current model does not evaluate certain bound variables to values. Set model completion when adding these bound variables to the model to ensure their values are not missed. Add better propagation of diagnostics when tactics and the new solver return unknown. The reason for unknown can now be traced to what theory was culprit (currently no additional information)
This commit is contained in:
		
							parent
							
								
									6226875283
								
							
						
					
					
						commit
						1f150ecd52
					
				
					 16 changed files with 70 additions and 24 deletions
				
			
		|  | @ -69,14 +69,21 @@ namespace array { | |||
|             values.set(n->get_expr_id(), n->get_expr()); | ||||
|             return; | ||||
|         } | ||||
|              | ||||
|         theory_var v = get_th_var(n); | ||||
|         euf::enode* d = get_default(v); | ||||
| 
 | ||||
|         if (a.is_const(n->get_expr())) { | ||||
|             expr* val = values.get(d->get_root_id()); | ||||
|             SASSERT(val); | ||||
|             values.set(n->get_expr_id(), a.mk_const_array(n->get_sort(), val)); | ||||
|             return; | ||||
|         } | ||||
|          | ||||
|         unsigned arity = get_array_arity(srt); | ||||
|         func_decl * f    = mk_aux_decl_for_array_sort(m, srt); | ||||
|         func_interp * fi = alloc(func_interp, m, arity); | ||||
|         mdl.register_decl(f, fi); | ||||
| 
 | ||||
|         theory_var v = get_th_var(n); | ||||
|         euf::enode* d = get_default(v); | ||||
|         if (d && !fi->get_else()) | ||||
|             fi->set_else(values.get(d->get_root_id())); | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue