δ-Complete Decision Procedure and dReal
Damien Zufferey
MIT CSAIL
-Complete Decision Procedure and dReal Damien Zufferey MIT CSAIL - - PowerPoint PPT Presentation
-Complete Decision Procedure and dReal Damien Zufferey MIT CSAIL ARSBM 2016, 20 Sept 2016 Based on the work of Sicun Gao and Soonho Kong Outline Interval constraints propagation (ICP) Branch and Prune Algorithm Completeness
MIT CSAIL
– Branch and Prune Algorithm – Completeness – dReal Example
– dReach Example – SMT encoding
– Pruning: interval arithmetic to prune the search space. – Branching: when pruning is stuck, split the domain of a
– Rounding errors taken into account – dReal uses IBEX and CAPD libraries
D prune D D branch D₁ D₂
– If we can guess a small enough box containing the solution,
– If the problem is unsatisfiable, we need to explore a
( s e t
i c Q F _ N R A ) ( d e c l a r e
u n x ( ) R e a l ) ( d e c l a r e
u n y ( ) R e a l ) ( a s s e r t ( < 2 . 4 x ) ) ( a s s e r t ( < x 2 . 6 ) ) ( a s s e r t ( <
. y ) ) ( a s s e r t ( < y 1 . ) ) ( a s s e r t ( a n d ( = y ( c
x ) ) ) ) ( c h e c k
a t ) ( e x i t ) v a r : [ 2 . 4 , 2 . 6 ] x ; [
, 1 ] y ; c t r : y = c
( x ) ;
– Int are handled in the ICP by a special contractor. – Bool are handled before the ICP by a SAT solver.
prune SAT solver NRA solver
[ , 2 ] x ; [
. 8 ] g ; [
, 1 ] v ; [ , 1 ] t i m e ;
{ m
e 1 ; i n v t : ( v < = ) ; ( x > = ) ; f l
: d / d t [ x ] = v ; d / d t [ v ] = g ; j u m p : ( x = ) = = > @ 2 ( a n d ( x ' = x ) ( v ' = (
) ) ) ; } [ , 2 ] x ; [
. 8 ] g ; [
, 1 ] v ; [ , 1 ] t i m e ; { m
e 2 ; i n v t : ( v > = ) ; ( x > = ) ; f l
: d / d t [ x ] = v ; d / d t [ v ] = g ; j u m p : ( v = ) = = > @ 1 ( a n d ( x ' = x ) ( v ' = v ) ) ; }
{ m
e 1 ; i n v t : ( v < = ) ; ( x > = ) ; f l
: d / d t [ x ] = v ; d / d t [ v ] = g ; j u m p : ( x = ) = = > @ 2 ( a n d ( x ' = x ) ( v ' = (
) ) ) ; } [ , 2 ] x ; [
. 8 ] g ; [
, 1 ] v ; [ , 1 ] t i m e ; { m
e 2 ; i n v t : ( v > = ) ; ( x > = ) ; f l
: d / d t [ x ] = v ; d / d t [ v ] = g ; j u m p : ( v = ) = = > @ 1 ( a n d ( x ' = x ) ( v ' = v ) ) ; } i n i t : @ 1 ( a n d ( x = 1 ) ( v = ) ) ; g
l : @ 2 ( a n d ( x = 1 ) ( v > = 1 ) ) ;
( d e c l a r e
u n m
e _ i ( ) R e a l ) ( d e c l a r e
u n t i m e _ i ( ) R e a l ) ( d e c l a r e
u n x _ i _ ( ) R e a l ) ( d e c l a r e
u n x _ i _ t ( ) R e a l ) ( d e c l a r e
u n v _ i _ ( ) R e a l ) ( d e c l a r e
u n v _ i _ t ( ) R e a l ) ( a s s e r t ( a n d ( f
a l l _ t 1 [ t i m e _ i ] ( > = x _ i _ t ) ( < = v _ i _ t ) ) ( f
a l l _ t 2 [ t i m e _ i ] ( > = x _ i _ t ) ( > = v _ i _ t ) ) ) )
( d e c l a r e
u n x ( ) R e a l ) ( d e c l a r e
u n v ( ) R e a l ) ( d e f i n e
e f l
_ 1 ( ( = d / d t [ x ] v ) ( = d / d t [ v ] g ) ) ) ( d e f i n e
e f l
_ 2 ( ( = d / d t [ x ] v ) ( = d / d t [ v ] g ) ) ) ( a s s e r t (
( a n d ( = m
e _ i 1 ) ( = m
e _ j 2 ) ( = x _ i _ t ) ( = x _ j _ x _ i _ t ) ( = v _ j _ (
_ i _ t ) ) ) ( a n d ( = m
e _ i 2 ) ( = m
e _ j 1 ) ( = v _ i _ t ) ( = x _ j _ x _ i _ t ) ( = v _ j _ v _ i _ t ) ) ) )
– Initial and final conditions – Bounds for all the variables – ...
( a s s e r t (
( a n d ( = m
e _ i 1 ) ( = [ x _ i _ t v _ i _ t ] ( i n t e g r a l . t i m e _ i [ x _ i _ v _ i _ ] f l
_ 1 ) ) ) ( a n d ( = m
e _ i 2 ) ( = [ x _ i _ t v _ i _ t ] ( i n t e g r a l . t i m e _ i [ x _ i _ v _ i _ ] f l
_ 2 ) ) ) ) )
– Option: -
r e c i s i
. 1
– In SMT file: (
s e t
t i
: p r e c i s i
. 1 )
– Option: -
e l
– Option: -
y t
e
– Options: -
r a d b r a n c h , -
c
i n g
c p