mirror of
				https://github.com/Z3Prover/z3
				synced 2025-11-03 21:09:11 +00:00 
			
		
		
		
	reset backtrack level at each cube
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
		
							parent
							
								
									ee3ed3a27a
								
							
						
					
					
						commit
						cb7e53aae4
					
				
					 2 changed files with 6 additions and 4 deletions
				
			
		| 
						 | 
				
			
			@ -364,9 +364,10 @@ namespace Microsoft.Z3
 | 
			
		|||
	/// </summary>
 | 
			
		||||
	public IEnumerable<BoolExpr> Cube()
 | 
			
		||||
	{
 | 
			
		||||
             int rounds = 0;
 | 
			
		||||
	     while (true) {
 | 
			
		||||
		BoolExpr r = (BoolExpr)Expr.Create(Context, Native.Z3_solver_cube(Context.nCtx, NativeObject, BacktrackLevel));
 | 
			
		||||
                var lvl = BacktrackLevel;
 | 
			
		||||
                BacktrackLevel = uint.MaxValue;
 | 
			
		||||
		BoolExpr r = (BoolExpr)Expr.Create(Context, Native.Z3_solver_cube(Context.nCtx, NativeObject, lvl));
 | 
			
		||||
                if (r.IsFalse) {
 | 
			
		||||
                   break;
 | 
			
		||||
                }
 | 
			
		||||
| 
						 | 
				
			
			@ -374,7 +375,6 @@ namespace Microsoft.Z3
 | 
			
		|||
                     yield return r;
 | 
			
		||||
                     break;
 | 
			
		||||
                }
 | 
			
		||||
                ++rounds;
 | 
			
		||||
                yield return r;
 | 
			
		||||
	     }
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6287,7 +6287,9 @@ class Solver(Z3PPObject):
 | 
			
		|||
    def cube(self):
 | 
			
		||||
        """Get set of cubes"""
 | 
			
		||||
        while True:
 | 
			
		||||
            r = _to_expr_ref(Z3_solver_cube(self.ctx.ref(), self.solver, self.backtrack_level), self.ctx)
 | 
			
		||||
            lvl = self.backtrack_level
 | 
			
		||||
            self.backtrack_level = 4000000000
 | 
			
		||||
            r = _to_expr_ref(Z3_solver_cube(self.ctx.ref(), self.solver, lvl), self.ctx)            
 | 
			
		||||
            if (is_false(r)):
 | 
			
		||||
                return
 | 
			
		||||
            if (is_true(r)):
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue