SpaceSearch: A Library for Building and Verifying Solver-Aided Tools Konstantin Steven S. Stefan Emina Michael Zachary Weitz Lyubomirsky Heule Torlak D. Ernst Tatlock
Reduction
SMT Reduction
SMT Reduction
SpaceSearch Reduction SMT
The Border Gateway Protocol
The Border Gateway Protocol ISP ISP
The Border Gateway Protocol ISP ISP ISP ISP ISP
The Border Gateway Protocol ISP ISP ISP ISP ISP
The Border Gateway Protocol ISP ISP ISP ISP ISP
The Border Gateway Protocol configure terminal router bgp 1 ISP neighbor 8.212.226.20 remote-as 2 neighbor 172.16.254.1 remote-as 3 neighbor 95.112.23.51 remote-as 4 ISP ! prefix lists ip prefix-list outCustomer permit 0.0.0.0/0 le 32 ip prefix-list outPeer permit 8.212.226.0/24 le p prefix-list outProvider permit ISP ISP
The Border Gateway Protocol configure terminal router bgp 1 ISP neighbor 8.212.226.20 remote-as 2 neighbor 172.16.254.1 remote-as 3 neighbor 95.112.23.51 remote-as 4 ISP ! prefix lists ip prefix-list outCustomer permit 0.0.0.0/0 le 32 ip prefix-list outPeer permit 8.212.226.0/24 le p prefix-list outProvider permit ISP ISP
The Border Gateway Protocol configure terminal router bgp 1 ISP neighbor 8.212.226.20 remote-as 2 neighbor 172.16.254.1 remote-as 3 neighbor 95.112.23.51 remote-as 4 ISP ! prefix lists ip prefix-list outCustomer permit 0.0.0.0/0 le 32 ip prefix-list outPeer permit 8.212.226.0/24 le p prefix-list outProvider permit ISP ISP
The Border Gateway Protocol configure terminal router bgp 1 ISP neighbor 8.212.226.20 remote-as 2 neighbor 172.16.254.1 remote-as 3 neighbor 95.112.23.51 remote-as 4 ISP ! prefix lists ip prefix-list outCustomer permit 0.0.0.0/0 le 32 ip prefix-list outPeer permit 8.212.226.0/24 le p prefix-list outProvider permit ISP ISP
The Border Gateway Protocol configure terminal router bgp 1 ISP neighbor 8.212.226.20 remote-as 2 neighbor 172.16.254.1 remote-as 3 neighbor 95.112.23.51 remote-as 4 ISP ! prefix lists ip prefix-list outCustomer permit 0.0.0.0/0 le 32 ip prefix-list outPeer permit 8.212.226.0/24 le p prefix-list outProvider permit ISP ISP
The Border Gateway Protocol configure terminal router bgp 1 ISP neighbor 8.212.226.20 remote-as 2 neighbor 172.16.254.1 remote-as 3 neighbor 95.112.23.51 remote-as 4 ISP ! prefix lists ip prefix-list outCustomer permit 0.0.0.0/0 le 32 ip prefix-list outPeer permit 8.212.226.0/24 le p prefix-list outProvider permit ISP ISP
The Border Gateway Protocol ISP ISP ISP configure terminal router bgp 1 neighbor 8.212.226.20 remote-as 2 neighbor 172.16.254.1 remote-as 3 neighbor 95.112.23.51 remote-as 4 ! prefix lists ip prefix-list ISP outCustomer permit 0.0.0.0/0 le 32 ip prefix-list outPeer permit 8.212.226.0/24 le p prefix-list outProvider permit
Specification Spec Holds Bagpipe Bagpipe configure terminal router bgp 1 neighbor 8.212.226.20 remote-as 2 neighbor 172.16.254.1 remote-as 3 neighbor 95.112.23.51 remote-as 4 Spec ! prefix lists ip prefix-list outC permit 0.0.0.0/0 le 32 ip prefix-list outPeer permit 8.212.226.0/24 le p prefix-list ou permit Violation Configuration
Specification Spec Holds Bagpipe Bagpipe configure terminal router bgp 1 neighbor 8.212.226.20 remote-as 2 neighbor 172.16.254.1 remote-as 3 neighbor 95.112.23.51 remote-as 4 Spec ! prefix lists ip prefix-list outC permit 0.0.0.0/0 le 32 ip prefix-list outPeer permit 8.212.226.0/24 le p prefix-list ou permit Violation Configuration
Bagpipe ∀ t:trace( ), check( , t) configure terminal router bgp 1 Specification Spec Holds configure terminal router bgp 1 neighbor 8.212.226.20 remote-as 2 neighbor 172.16.254.1 remote-as 3 neighbor 95.112.23.51 remote-as 4 Spec ! prefix lists ip prefix-list outC permit 0.0.0.0/0 le 32 ip prefix-list outPeer permit 8.212.226.0/24 le p prefix-list ou permit Violation Configuration
Bagpipe ∀ t:trace( ), check( , t) configure terminal router bgp 1 ∞ Specification Spec Holds configure terminal router bgp 1 neighbor 8.212.226.20 remote-as 2 neighbor 172.16.254.1 remote-as 3 neighbor 95.112.23.51 remote-as 4 Spec ! prefix lists ip prefix-list outC permit 0.0.0.0/0 le 32 ip prefix-list outPeer permit 8.212.226.0/24 le p prefix-list ou permit Violation Configuration
Bagpipe ∀ t:trace( ), check( , t) configure terminal router bgp 1 ∞ [OOPSLA’16] Reduce Specification fin ∀ t:initTrace( ), check( , t) Spec configure terminal router bgp 1 Holds configure terminal router bgp 1 neighbor 8.212.226.20 remote-as 2 neighbor 172.16.254.1 remote-as 3 neighbor 95.112.23.51 remote-as 4 Spec ! prefix lists ip prefix-list outC permit 0.0.0.0/0 le 32 ip prefix-list outPeer permit 8.212.226.0/24 le p prefix-list ou permit Violation Configuration
Bagpipe ∀ t:trace( ), check( , t) configure terminal router bgp 1 ∞ [OOPSLA’16] Reduce Specification fin ∀ t:initTrace( ), check( , t) Spec configure terminal router bgp 1 Holds configure terminal router bgp 1 neighbor 8.212.226.20 remote-as 2 neighbor 172.16.254.1 remote-as 3 neighbor 95.112.23.51 remote-as 4 Spec ! prefix lists ip prefix-list outC permit 0.0.0.0/0 le 32 ip prefix-list outPeer permit 8.212.226.0/24 le p prefix-list ou permit Violation Configuration
Bagpipe ∀ t:trace( ), check( , t) configure terminal router bgp 1 ∞ [OOPSLA’16] Reduce Specification fin ∀ t:initTrace( ), check( , t) Spec configure terminal router bgp 1 Holds Reduce ? configure terminal router bgp 1 neighbor 8.212.226.20 remote-as 2 neighbor 172.16.254.1 remote-as 3 neighbor 95.112.23.51 remote-as 4 Spec ! prefix lists ip prefix-list outC permit 0.0.0.0/0 le 32 ip prefix-list outPeer permit 8.212.226.0/24 le p prefix-list ou permit Violation Configuration SMT
∀ t:initTrace( ), check( , t) configure terminal router bgp 1 neighbor 8.212.226.20
∀ t:initTrace( ), check( , t) configure terminal router bgp 1 neighbor 8.212.226.20 initTrace( ) configure terminal router bgp 1
∀ t:initTrace( ), check( , t) configure terminal router bgp 1 neighbor 8.212.226.20 { t:initTrace( ) | ¬check( , t) } initTrace( ) configure terminal configure terminal router bgp 1 router bgp 1
∀ t:initTrace( ), check( , t) configure terminal router bgp 1 neighbor 8.212.226.20 { t:initTrace( ) | ¬check( , t) } initTrace( ) configure terminal configure terminal router bgp 1 router bgp 1 search( ) = None
SpaceSearch Interface empty = singleton(a) = a union( , ) =
SpaceSearch Interface empty = singleton(a) = a union( , ) = f(a) a a bind(S,f) = U x:S f(x) = bind( , ) = f(b) b b
SpaceSearch Interface empty = search( ) = None a singleton(a) = search( ) = Some a a union( , ) = f(a) a a bind(S,f) = U x:S f(x) = bind( , ) = f(b) b b
Bagpipe ∀ t:trace( ), check( , t) configure terminal router bgp 1 ∞ Reduce fin Specification ∀ t:initTrace( ), check( , t) Spec configure terminal router bgp 1 Holds configure terminal router bgp 1 Spec neighbor 8.212.226.20 remote-as 2 neighbor 172.16.254.1 remote-as 3 neighbor 95.112.23.51 remote-as 4 ! prefix lists ip prefix-list outC permit 0.0.0.0/0 le 32 ip prefix-list outPeer permit 8.212.226.0/24 le p prefix-list ou Violation permit Configuration
Bagpipe ∀ t:trace( ), check( , t) configure terminal router bgp 1 ∞ Reduce fin Specification ∀ t:initTrace( ), check( , t) Spec configure terminal router bgp 1 Holds Reduce search( configure terminal router bgp 1 Spec neighbor 8.212.226.20 remote-as 2 bind(initTraceSpace( ), ( λ t. neighbor 172.16.254.1 remote-as 3 neighbor 95.112.23.51 remote-as 4 configure terminal router bgp 1 ! prefix lists ip prefix-list outC permit 0.0.0.0/0 le 32 ip prefix-list outPeer permit 8.212.226.0/24 le p prefix-list ou Violation permit if check( , t) Configuration then empty else singleton(t))) = None
Bagpipe ∀ t:trace( ), check( , t) configure terminal router bgp 1 ∞ Reduce fin Specification ∀ t:initTrace( ), check( , t) Spec configure terminal router bgp 1 Holds Reduce search( configure terminal router bgp 1 Spec neighbor 8.212.226.20 remote-as 2 bind(initTraceSpace( ), ( λ t. neighbor 172.16.254.1 remote-as 3 neighbor 95.112.23.51 remote-as 4 configure terminal router bgp 1 ! prefix lists ip prefix-list outC permit 0.0.0.0/0 le 32 ip prefix-list outPeer permit 8.212.226.0/24 le p prefix-list ou Violation permit SMT if check( , t) Configuration Extract ? then empty else singleton(t))) = None
Meet
Meet ∀ x y. (x /\ y) ⟺ ¬(¬x \/ ¬y) De Morgan's Law
Meet ∀ x y. (x /\ y) ⟺ ¬(¬x \/ ¬y) De Morgan's Law (let ((x ( symbolic-bool )) (y ( symbolic-bool )))
Recommend
More recommend