mirror of
				https://github.com/Z3Prover/z3
				synced 2025-11-04 05:19:11 +00:00 
			
		
		
		
	#6418 - add best-effort for nested and/or (from ite literals)
This commit is contained in:
		
							parent
							
								
									071a1447e3
								
							
						
					
					
						commit
						4a1d76cf49
					
				
					 1 changed files with 29 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -155,6 +155,35 @@ namespace mbp {
 | 
			
		|||
                }
 | 
			
		||||
                SASSERT(found_eq);
 | 
			
		||||
            }
 | 
			
		||||
            else if (m.is_and(lit) && !is_not) {
 | 
			
		||||
                fmls.append(to_app(lit)->get_num_args(), to_app(lit)->get_args());
 | 
			
		||||
                return true;
 | 
			
		||||
            }
 | 
			
		||||
            else if (m.is_or(lit) && is_not) {
 | 
			
		||||
                for (expr* arg : *to_app(lit))
 | 
			
		||||
                    fmls.push_back(mk_not(m, arg));
 | 
			
		||||
                return true;
 | 
			
		||||
            }
 | 
			
		||||
            else if (m.is_or(lit) && !is_not) {
 | 
			
		||||
                for (expr* arg : *to_app(lit)) {
 | 
			
		||||
                    if (eval.is_true(arg)) {
 | 
			
		||||
                        fmls.push_back(arg);
 | 
			
		||||
                        return true;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
                TRACE("qe", tout << "Skipping " << mk_pp(lit, m) << "\n";);
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
            else if (m.is_and(lit) && is_not) {
 | 
			
		||||
                for (expr* arg : *to_app(lit)) {
 | 
			
		||||
                    if (eval.is_false(arg)) {
 | 
			
		||||
                        fmls.push_back(mk_not(m, arg));
 | 
			
		||||
                        return true;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
                TRACE("qe", tout << "Skipping " << mk_pp(lit, m) << "\n";);
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
            else {
 | 
			
		||||
                TRACE("qe", tout << "Skipping " << mk_pp(lit, m) << "\n";);
 | 
			
		||||
                return false;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue