mirror of
				https://github.com/Z3Prover/z3
				synced 2025-11-04 13:29: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);
 | 
					                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 {
 | 
					            else {
 | 
				
			||||||
                TRACE("qe", tout << "Skipping " << mk_pp(lit, m) << "\n";);
 | 
					                TRACE("qe", tout << "Skipping " << mk_pp(lit, m) << "\n";);
 | 
				
			||||||
                return false;
 | 
					                return false;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue