mirror of
				https://github.com/Z3Prover/z3
				synced 2025-10-31 11:42:28 +00:00 
			
		
		
		
	parameter eval order
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
This commit is contained in:
		
							parent
							
								
									0fbf4010a5
								
							
						
					
					
						commit
						0a2328af1d
					
				
					 1 changed files with 9 additions and 7 deletions
				
			
		|  | @ -4393,9 +4393,10 @@ br_status seq_rewriter::mk_str_in_regexp(expr* a, expr* b, expr_ref& result) { | |||
|         expr_ref len_hd(m_autil.mk_int(re().min_length(hd)), m());  | ||||
|         expr_ref len_a(str().mk_length(a), m()); | ||||
|         expr_ref len_tl(m_autil.mk_sub(len_a, len_hd), m()); | ||||
|         result = m().mk_and(m_autil.mk_ge(len_a, len_hd), | ||||
|                             re().mk_in_re(str().mk_substr(a, zero(), len_hd), hd), | ||||
|                             re().mk_in_re(str().mk_substr(a, len_hd, len_tl), tl)); | ||||
|         auto ge_len = m_autil.mk_ge(len_a, len_hd); | ||||
|         auto prefix = re().mk_in_re(str().mk_substr(a, zero(), len_hd), hd); | ||||
|         auto suffix = re().mk_in_re(str().mk_substr(a, len_hd, len_tl), tl); | ||||
|         result = m().mk_and(ge_len, prefix, suffix); | ||||
|         return BR_REWRITE_FULL; | ||||
|     } | ||||
|     if (get_re_head_tail_reversed(b, hd, tl)) { | ||||
|  | @ -4404,10 +4405,11 @@ br_status seq_rewriter::mk_str_in_regexp(expr* a, expr* b, expr_ref& result) { | |||
|         expr_ref len_a(str().mk_length(a), m()); | ||||
|         expr_ref len_hd(m_autil.mk_sub(len_a, len_tl), m()); | ||||
|         expr* s = nullptr; | ||||
|         result = m().mk_and(m_autil.mk_ge(len_a, len_tl), | ||||
|             re().mk_in_re(str().mk_substr(a, zero(), len_hd), hd), | ||||
|             (re().is_to_re(tl, s) ? m().mk_eq(s, str().mk_substr(a, len_hd, len_tl)) : | ||||
|                 re().mk_in_re(str().mk_substr(a, len_hd, len_tl), tl))); | ||||
|         auto ge_len = m_autil.mk_ge(len_a, len_tl); | ||||
|         auto prefix = re().mk_in_re(str().mk_substr(a, zero(), len_hd), hd); | ||||
|         auto tail_seq = str().mk_substr(a, len_hd, len_tl); | ||||
|         auto tail = (re().is_to_re(tl, s) ? m().mk_eq(s, tail_seq) : re().mk_in_re(tail_seq, tl)); | ||||
|         result = m().mk_and(ge_len, prefix, tail); | ||||
|         return BR_REWRITE_FULL; | ||||
|     } | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue