- 1 - Using an SMT Solver and Craig Interpolation to Detect and Remove Redundant Linear Constraints in Representations of Non-Convex Polyhedra Christoph Scholl, Stefan Disch, Florian Pigorsch, Stefan Kupferschmid Albert-Ludwigs-University Freiburg, Germany
- 2 - Background and Motivation Non-convex polyhedra = Arbitrary boolean combinations (including conjunction, disjunction and negation) of linear constraints (Extended) non-convex polyhedra = arbitrary boolean combinations of linear constraints and boolean variables Used in the context of model checking of hybrid systems by backward analysis Single symbolic representation for sets of states of hybrid systems with large discrete state spaces [Damm et al. ATVA06, ATVA07] We represent (extended) non-convex polyhedra by a data structure called LinAIGs (AIGs = And-Inverter- Graphs)
- 3 - Problem: Optimization of non-convex polyhedra A linear constraint is redundant for a non-convex polyhedron iff the non- convex polyhedron can be described without using this linear constraint. Question: How to remove redundant linear constraints from representations efficiently? c1c1 c2c2 c1c1 c2c2
- 4 - Example l1l1 l2l2 l5l5 l3l3 l4l4 l6l F= (y ¸ 0) ¢ (-2x – y + 3 ¸ 0) ¢ (y – x ¸ 0) + (x ¸ 0) ¢ (-1/2 x – y + 3/2) ¢ (x – y ¸ 0) Question: Are l 5 and l 6 redundant? I.e.: Is there a boolean function G with F(l 1,..., l 6 ) = G(l 1,..., l 4 )? x y
- 5 - Example l1l1 l2l2 l5l5 l3l3 l4l4 l6l6 Is there a boolean function G with F(l 1,..., l 6 ) = G(l 1,..., l 4 )? In order to solve the problem consider the boolean abstraction (boolean variable b 1 for l 1,..., b 6 for l 6 ): F(b 1,..., b 6 ) = b 1 ¢ b 2 ¢ b 5 + b 3 ¢ b 4 ¢ b 6 F= (y ¸ 0) ¢ (-2x – y + 3 ¸ 0) ¢ (y – x ¸ 0) + (x ¸ 0) ¢ (-1/2 x – y + 3/2) ¢ (x – y ¸ 0) Function table of F(b 1,..., b 6 ): function value = 1: function value = 0:
Example l1l1 l2l2 l5l5 l3l3 l4l4 l6l6 F= (y ¸ 0) ¢ (-2x – y + 3 ¸ 0) ¢ (y – x ¸ 0) + (x ¸ 0) ¢ (-1/2 x – y + 3/2) ¢ (x – y ¸ 0) Function table of F(b 1,..., b 6 ): function value = 1: function value = 0: Partition into orbits F(b 1,..., b 6 ) = b 1 ¢ b 2 ¢ b 5 + b 3 ¢ b 4 ¢ b 6
- 7 - Example l1l1 l2l2 l5l5 l3l3 l4l4 l6l6 F= (y ¸ 0) ¢ (-2x – y + 3 ¸ 0) ¢ (y – x ¸ 0) + (x ¸ 0) ¢ (-1/2 x – y + 3/2) ¢ (x – y ¸ 0) Is there a boolean function G with F(l 1,..., l 6 ) = G(l 1,..., l 4 )? Problem is turned into logic synthesis problem with dont cares. Dont cares correspond to inconsistent assignments to Boolean abstraction variables. Example: b 2 =0, b 5 = 1, b 3 = 0 is inconsistent, because l 2 = false, l 5 = true, l 3 = false can not be true at the same time. ) For b 2 =0, b 5 = 1, b 3 = 0 we can change F(b 1,..., b 6 ) without changing the predicate F(l 1,..., l 6 ) l 2 = false l 5 = true l 3 = false
Example l1l1 l2l2 l5l5 l3l3 l4l4 l6l6 F= (y ¸ 0) ¢ (-2x – y + 3 ¸ 0) ¢ (y – x ¸ 0) + (x ¸ 0) ¢ (-1/2 x – y + 3/2) ¢ (x – y ¸ 0) Function table of F(b 1,..., b 6 ): function value = 1: function value = 0: Inconsistent assignment ) dont care:
Example l1l1 l2l2 l5l5 l3l3 l4l4 l6l6 F= (y ¸ 0) ¢ (-2x – y + 3 ¸ 0) ¢ (y – x ¸ 0) + (x ¸ 0) ¢ (-1/2 x – y + 3/2) ¢ (x – y ¸ 0) Function table of F(b 1,..., b 6 ): function value = 1: function value = 0: Inconsistent assignment ) dont care:
Example l1l1 l2l2 l5l5 l3l3 l4l4 l6l6 F= (y ¸ 0) ¢ (-2x – y + 3 ¸ 0) ¢ (y – x ¸ 0) + (x ¸ 0) ¢ (-1/2 x – y + 3/2) ¢ (x – y ¸ 0) Function table of F(b 1,..., b 6 ): function value = 1: function value = 0: Inconsistent assignment ) dont care:
Example l1l1 l2l2 l5l5 l3l3 l4l4 l6l6 F= (y ¸ 0) ¢ (-2x – y + 3 ¸ 0) ¢ (y – x ¸ 0) + (x ¸ 0) ¢ (-1/2 x – y + 3/2) ¢ (x – y ¸ 0) Function table of G(b 1,..., b 4 ): function value = 1: function value = 0: Changed function G does not depend on b 5 and b 6 ! G(b 1,..., b 4 ) = b 1 ¢ b 3 ¢ (b 2 + b 4 ) G(l 1,..., l 4 ) = F(l 1,..., l 6 )
Redundancy check using an SMT solver For large examples we are not able to enumerate the function tables with dont cares. ) We need a more efficient method for detecting and removing redundant linear constraints. Three key results: Detecting redundancy of a set of linear constraints can be reduced to the solution of one SMT formula. The dont cares needed to compute G(b 1,..., b 4 ) can be extracted from conflict clauses generated by the SMT solver while solving this formula! Removal of redundant constraints can be performed efficiently based on Craig interpolation.
Example F(b 1,..., b 6 ) = b 1 b 2 b 3 + b 4 b 5 b 6 DC = function value = 1: function value = 0:
Example F(b 1,..., b 6 ) = b 1 b 2 b 3 + b 4 b 5 b 6 DC = : b 5 : b l 5 and l 6 can not be false at the same time! ) Minimized conflict clause (b 5 + b 6 ) inserted by SMT solver ) Insert : b 5 : b 6 into dont care representation!
Example F(b 1,..., b 6 ) = b 1 b 2 b 3 + b 4 b 5 b 6 DC = : b 5 : b 6 function value = 1: function value = 0: Inconsistent assignment ) dont care:
Example F(b 1,..., b 6 ) = b 1 b 2 b 3 + b 4 b 5 b 6 DC = : b 5 : b
Example...
Example – Final Result F(b 1,..., b 6 ) = b 1 b 2 b 3 + b 4 b 5 b 6 DC = : b 5 : b 6 + : b 1 : b 2 b 4 + : b 1 b 3 b 6 + : b 2 b 4 : b 6 + b 2 : b 3 : b 4 + b 1 : b 3 b 5 + b 2 : b 4 : b 5
Redundancy Removal How to remove redundant constraints efficiently (i.e. compute G(b 1,..., b 4 ) efficiently)? Approach 1- Existential quantification: G(b 1,..., b 4 ) = 9 b 5 b 6 (F ¢ : DC) 9 b i F = F| b i = 0 + F| b i = 1. Risk of doubling AIG representation with quantification of one variable. Potential problem for large numbers of redundant constraints. Observation: Approach 1 provides only one of a number of appropriate dont care assignments. Approach 2: Craig interpolation Obtain appropriate function G by one Craig interpolation for F(b 1,..., b 4, b 5, b 6 ) ¢ : DC(b 1,..., b 4, b 5, b 6 ) : F(b 1,..., b 4, b´ 5, b´ 6 ) ¢ : DC(b 1,..., b 4, b´ 5, b´ 6 ) In contrast to the work of McMillan [CAV2003] Craig interpolation is not an approximation method in this context, but it makes use of existing degrees of freedom.
Experimental results – Model checking with and without redundancy removal Early removal of redundant constraints pays off. Avoids blow-up due to a series of further substitutions into the removed constraints in the following steps.
Experimental results: Redundancy elimination - Existential quantification versus Craig interpolation
Experimental results: Comparison with other solvers LinAIG: Our tool Redlog (Dolzmann, Sturm, ACM SIGSAM Bulletin 1997) LIRA (Eisinger, Klaedtke, CAV 2006)
Conclusions and future work Approach for optimizing non-convex polyhedra based on removal of redundant constraints Successfully applied to solving of quantified formulas including linear real arithmetic and boolean variables Accelerate approach by using state-of-the-art SMT solver for dont care computation, too. Fast preprocessor for more general formulas by simplifying subformulas from the subclass considered in this paper? Apply methods to underlying theories different from linear arithmetic?