# - 1 - Using an SMT Solver and Craig Interpolation to Detect and Remove Redundant Linear Constraints in Representations of Non-Convex Polyhedra Christoph.

## Presentation on theme: "- 1 - Using an SMT Solver and Craig Interpolation to Detect and Remove Redundant Linear Constraints in Representations of Non-Convex Polyhedra Christoph."— Presentation transcript:

- 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 l6l6 1 2 3 123 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) 1111 00 1111 01 1111 10 1111 11 1110 00 1110 01 1110 10 1110 11 1101 00 1101 01 1101 10 1101 11 1100 00 1100 01 1100 10 1100 11 1011 00 1011 01 1011 10 1011 11 1010 00 1010 01 1010 10 1010 11 1001 00 1001 01 1001 10 1001 11 1000 00 1000 01 1000 10 1000 11 0111 00 0111 01 0111 10 0111 11 0110 00 0110 01 0110 10 0110 11 0101 00 0101 01 0101 10 0101 11 0100 00 0100 01 0100 10 0100 11 0011 00 0011 01 0011 10 0011 11 0010 00 0010 01 0010 10 0010 11 0001 00 0001 01 0001 10 0001 11 0000 00 0000 01 0000 10 0000 11 Function table of F(b 1,..., b 6 ): function value = 1: function value = 0:

- 6 - 0000 00 0000 01 0000 10 0000 11 0001 00 0001 01 0001 10 0001 11 0010 00 0010 01 0010 10 0010 11 0011 00 0011 01 0011 10 0011 11 0100 00 0100 01 0100 10 0100 11 0101 00 0101 01 0101 10 0101 11 0110 00 0110 01 0110 10 0110 11 0111 00 0111 01 0111 10 0111 11 1000 00 1000 01 1000 10 1000 11 1001 00 1001 01 1001 10 1001 11 1010 00 1010 01 1010 10 1010 11 1011 00 1011 01 1011 10 1011 11 1100 00 1100 01 1100 10 1100 11 1101 00 1101 01 1101 10 1101 11 1110 00 1110 01 1110 10 1110 11 1111 00 1111 01 1111 10 1111 11 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 ). 1 2 3 123 l 2 = false l 5 = true l 3 = false

- 8 - 0000 00 0000 01 0000 10 0000 11 0001 00 0001 01 0001 10 0001 11 0010 00 0010 01 0010 10 0010 11 0011 00 0011 01 0011 10 0011 11 0100 00 0100 01 0100 10 0100 11 0101 00 0101 01 0101 10 0101 11 0110 00 0110 01 0110 10 0110 11 0111 00 0111 01 0111 10 0111 11 1000 00 1000 01 1000 10 1000 11 1001 00 1001 01 1001 10 1001 11 1010 00 1010 01 1010 10 1010 11 1011 00 1011 01 1011 10 1011 11 1100 00 1100 01 1100 10 1100 11 1101 00 1101 01 1101 10 1101 11 1110 00 1110 01 1110 10 1110 11 1111 00 1111 01 1111 10 1111 11 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:

- 9 - 0000 00 0000 01 0000 10 0000 11 0001 00 0001 01 0001 10 0001 11 0010 00 0010 01 0010 10 0010 11 0011 00 0011 01 0011 10 0011 11 0100 00 0100 01 0100 10 0100 11 0101 00 0101 01 0101 10 0101 11 0110 00 0110 01 0110 10 0110 11 0111 00 0111 01 0111 10 0111 11 1000 00 1000 01 1000 10 1000 11 1001 00 1001 01 1001 10 1001 11 1010 00 1010 01 1010 10 1010 11 1011 00 1011 01 1011 10 1011 11 1100 00 1100 01 1100 10 1100 11 1101 00 1101 01 1101 10 1101 11 1110 00 1110 01 1110 10 1110 11 1111 00 1111 01 1111 10 1111 11 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:

- 10 - 0000 00 0000 01 0000 10 0000 11 0001 00 0001 01 0001 10 0001 11 0010 00 0010 01 0010 10 0010 11 0011 00 0011 01 0011 10 0011 11 0100 00 0100 01 0100 10 0100 11 0101 00 0101 01 0101 10 0101 11 0110 00 0110 01 0110 10 0110 11 0111 00 0111 01 0111 10 0111 11 1000 00 1000 01 1000 10 1000 11 1001 00 1001 01 1001 10 1001 11 1010 00 1010 01 1010 10 1010 11 1011 00 1011 01 1011 10 1011 11 1100 00 1100 01 1100 10 1100 11 1101 00 1101 01 1101 10 1101 11 1110 00 1110 01 1110 10 1110 11 1111 00 1111 01 1111 10 1111 11 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:

- 11 - 0000 00 0000 01 0000 10 0000 11 0001 00 0001 01 0001 10 0001 11 0010 00 0010 01 0010 10 0010 11 0011 00 0011 01 0011 10 0011 11 0100 00 0100 01 0100 10 0100 11 0101 00 0101 01 0101 10 0101 11 0110 00 0110 01 0110 10 0110 11 0111 00 0111 01 0111 10 0111 11 1000 00 1000 01 1000 10 1000 11 1001 00 1001 01 1001 10 1001 11 1010 00 1010 01 1010 10 1010 11 1011 00 1011 01 1011 10 1011 11 1100 00 1100 01 1100 10 1100 11 1101 00 1101 01 1101 10 1101 11 1110 00 1110 01 1110 10 1110 11 1111 00 1111 01 1111 10 1111 11 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 )

- 12 - 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.

- 13 - 0000 00 0000 01 0000 10 0000 11 Example 0001 00 0001 01 0001 10 0001 11 0010 00 0010 01 0010 10 0010 11 0011 00 0011 01 0011 10 0011 11 0100 00 0100 01 0100 10 0100 11 0101 00 0101 01 0101 10 0101 11 0110 00 0110 01 0110 10 0110 11 0111 00 0111 01 0111 10 0111 11 1000 00 1000 01 1000 10 1000 11 1001 00 1001 01 1001 10 1001 11 1010 00 1010 01 1010 10 1010 11 1011 00 1011 01 1011 10 1011 11 1100 00 1100 01 1100 10 1100 11 1101 00 1101 01 1101 10 1101 11 1110 00 1110 01 1110 10 1110 11 1111 00 1111 01 1111 10 1111 11 F(b 1,..., b 6 ) = b 1 b 2 b 3 + b 4 b 5 b 6 DC = 0 0 0 0 1 1 1 1 0 0 0 1 1 function value = 1: function value = 0:

- 14 - 0000 00 0000 01 0000 10 0000 11 Example 0001 00 0001 01 0001 10 0001 11 0010 00 0010 01 0010 10 0010 11 0011 00 0011 01 0011 10 0011 11 0100 00 0100 01 0100 10 0100 11 0101 00 0101 01 0101 10 0101 11 0110 00 0110 01 0110 10 0110 11 0111 00 0111 01 0111 10 0111 11 1000 00 1000 01 1000 10 1000 11 1001 00 1001 01 1001 10 1001 11 1010 00 1010 01 1010 10 1010 11 1011 00 1011 01 1011 10 1011 11 1100 00 1100 01 1100 10 1100 11 1101 00 1101 01 1101 10 1101 11 1110 00 1110 01 1110 10 1110 11 1111 00 1111 01 1111 10 1111 11 F(b 1,..., b 6 ) = b 1 b 2 b 3 + b 4 b 5 b 6 DC = : b 5 : b 6 0 0 0 0 1 1 1 1 0 0 0 1 1 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!

- 15 - 0000 00 0000 01 0000 10 0000 11 Example 0001 00 0001 01 0001 10 0001 11 0010 00 0010 01 0010 10 0010 11 0011 00 0011 01 0011 10 0011 11 0100 00 0100 01 0100 10 0100 11 0101 00 0101 01 0101 10 0101 11 0110 00 0110 01 0110 10 0110 11 0111 00 0111 01 0111 10 0111 11 1000 00 1000 01 1000 10 1000 11 1001 00 1001 01 1001 10 1001 11 1010 00 1010 01 1010 10 1010 11 1011 00 1011 01 1011 10 1011 11 1100 00 1100 01 1100 10 1100 11 1101 00 1101 01 1101 10 1101 11 1110 00 1110 01 1110 10 1110 11 1111 00 1111 01 1111 10 1111 11 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:

- 16 - 0000 00 0000 01 0000 10 0000 11 Example 0001 00 0001 01 0001 10 0001 11 0010 00 0010 01 0010 10 0010 11 0011 00 0011 01 0011 10 0011 11 0100 00 0100 01 0100 10 0100 11 0101 00 0101 01 0101 10 0101 11 0110 00 0110 01 0110 10 0110 11 0111 00 0111 01 0111 10 0111 11 1000 00 1000 01 1000 10 1000 11 1001 00 1001 01 1001 10 1001 11 1010 00 1010 01 1010 10 1010 11 1011 00 1011 01 1011 10 1011 11 1100 00 1100 01 1100 10 1100 11 1101 00 1101 01 1101 10 1101 11 1110 00 1110 01 1110 10 1110 11 1111 00 1111 01 1111 10 1111 11 F(b 1,..., b 6 ) = b 1 b 2 b 3 + b 4 b 5 b 6 DC = : b 5 : b 6 0 0 0 0 1 1 1 1 0 0 1 1 1

- 17 - Example...

- 18 - 0000 00 0000 01 0000 10 0000 11 Example – Final Result 0001 00 0001 01 0001 10 0001 11 0010 00 0010 01 0010 10 0010 11 0011 00 0011 01 0011 10 0011 11 0100 00 0100 01 0100 10 0100 11 0101 00 0101 01 0101 10 0101 11 0110 00 0110 01 0110 10 0110 11 0111 00 0111 01 0111 10 0111 11 1000 00 1000 01 1000 10 1000 11 1001 00 1001 01 1001 10 1001 11 1010 00 1010 01 1010 10 1010 11 1011 00 1011 01 1011 10 1011 11 1100 00 1100 01 1100 10 1100 11 1101 00 1101 01 1101 10 1101 11 1110 00 1110 01 1110 10 1110 11 1111 00 1111 01 1111 10 1111 11 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

- 19 - 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.

- 20 - 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.

- 21 - Experimental results: Redundancy elimination - Existential quantification versus Craig interpolation

- 22 - Experimental results: Comparison with other solvers LinAIG: Our tool Redlog (Dolzmann, Sturm, ACM SIGSAM Bulletin 1997) LIRA (Eisinger, Klaedtke, CAV 2006)

- 23 - 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?

Similar presentations