Strategy Synthesis for Linear Arithmetic Games Azadeh Farzan 1 - - PowerPoint PPT Presentation

strategy synthesis for linear arithmetic games
SMART_READER_LITE
LIVE PREVIEW

Strategy Synthesis for Linear Arithmetic Games Azadeh Farzan 1 - - PowerPoint PPT Presentation

January 12, 2018 Strategy Synthesis for Linear Arithmetic Games Azadeh Farzan 1 Zachary Kincaid 2 1 University of Toronto 2 Princeton University Functional synthesis Reactive synthesis Many problems in formal methods can be formulated as


slide-1
SLIDE 1

Strategy Synthesis for Linear Arithmetic Games

Azadeh Farzan1 Zachary Kincaid2

1University of Toronto 2Princeton University

January 12, 2018

slide-2
SLIDE 2

Many problems in formal methods can be formulated as logical games.

  • Functional synthesis
  • inputs,
  • utput s.t. specification holds
  • Reactive synthesis
  • event ,

response s.t. avoid bad state and event , response s.t. avoid bad state and

This paper: Algorithms for synthesizing winning strategies for satisfiability and reachability games in the theory of linear arithmetic.

slide-3
SLIDE 3

Many problems in formal methods can be formulated as logical games.

  • Functional synthesis
  • ∀ inputs, ∃ output s.t. specification holds
  • Reactive synthesis
  • event ,

response s.t. avoid bad state and event , response s.t. avoid bad state and

This paper: Algorithms for synthesizing winning strategies for satisfiability and reachability games in the theory of linear arithmetic.

slide-4
SLIDE 4

Many problems in formal methods can be formulated as logical games.

  • Functional synthesis
  • ∀ inputs, ∃ output s.t. specification holds
  • Reactive synthesis
  • ∀ event1, ∃ response1 s.t. avoid bad state and

∀ event2, ∃ response2 s.t. avoid bad state and · · ·

This paper: Algorithms for synthesizing winning strategies for satisfiability and reachability games in the theory of linear arithmetic.

slide-5
SLIDE 5

Many problems in formal methods can be formulated as logical games.

  • Functional synthesis
  • ∀ inputs, ∃ output s.t. specification holds
  • Reactive synthesis
  • ∀ event1, ∃ response1 s.t. avoid bad state and

∀ event2, ∃ response2 s.t. avoid bad state and · · ·

This paper: Algorithms for synthesizing winning strategies for satisfiability and reachability games in the theory of linear arithmetic.

slide-6
SLIDE 6

Satisfjability games

slide-7
SLIDE 7

Game interpretation

ϕ ≜ ∃w.∀x.∃y.∀z.

  • quantifier prefix

(y < 1 ∨ 2w < y) ∧ (z < y ∨ x < z)

  • matrix
  • Two players: SAT and UNSAT
  • SAT wants to make the formula true
  • UNSAT wants to make the formula false
  • A play of this game: SAT and UNSAT take turns picking elements of

. w x y z The SAT player wins if the corresponding structure is a model of the matrix.

  • is satisfiable

SAT has a winning strategy

slide-8
SLIDE 8

Game interpretation

ϕ ≜ ∃w.∀x.∃y.∀z.

  • quantifier prefix

(y < 1 ∨ 2w < y) ∧ (z < y ∨ x < z)

  • matrix
  • Two players: SAT and UNSAT
  • SAT wants to make the formula true
  • UNSAT wants to make the formula false
  • A play of this game: SAT and UNSAT take turns picking elements of Q.

[ w x y z ] The SAT player wins if the corresponding structure is a model of the matrix.

  • is satisfiable

SAT has a winning strategy

slide-9
SLIDE 9

Game interpretation

ϕ ≜ ∃w.∀x.∃y.∀z.

  • quantifier prefix

(y < 1 ∨ 2w < y) ∧ (z < y ∨ x < z)

  • matrix
  • Two players: SAT and UNSAT
  • SAT wants to make the formula true
  • UNSAT wants to make the formula false
  • A play of this game: SAT and UNSAT take turns picking elements of Q.

[w → 1; x y z ] The SAT player wins if the corresponding structure is a model of the matrix.

  • is satisfiable

SAT has a winning strategy

slide-10
SLIDE 10

Game interpretation

ϕ ≜ ∃w.∀x.∃y.∀z.

  • quantifier prefix

(y < 1 ∨ 2w < y) ∧ (z < y ∨ x < z)

  • matrix
  • Two players: SAT and UNSAT
  • SAT wants to make the formula true
  • UNSAT wants to make the formula false
  • A play of this game: SAT and UNSAT take turns picking elements of Q.

[w → 1; x → 2 3; y z ] The SAT player wins if the corresponding structure is a model of the matrix.

  • is satisfiable

SAT has a winning strategy

slide-11
SLIDE 11

Game interpretation

ϕ ≜ ∃w.∀x.∃y.∀z.

  • quantifier prefix

(y < 1 ∨ 2w < y) ∧ (z < y ∨ x < z)

  • matrix
  • Two players: SAT and UNSAT
  • SAT wants to make the formula true
  • UNSAT wants to make the formula false
  • A play of this game: SAT and UNSAT take turns picking elements of Q.

[w → 1; x → 2 3; y → −1; z ] The SAT player wins if the corresponding structure is a model of the matrix.

  • is satisfiable

SAT has a winning strategy

slide-12
SLIDE 12

Game interpretation

ϕ ≜ ∃w.∀x.∃y.∀z.

  • quantifier prefix

(y < 1 ∨ 2w < y) ∧ (z < y ∨ x < z)

  • matrix
  • Two players: SAT and UNSAT
  • SAT wants to make the formula true
  • UNSAT wants to make the formula false
  • A play of this game: SAT and UNSAT take turns picking elements of Q.

[w → 1; x → 2 3; y → −1; z → 1] The SAT player wins if the corresponding structure is a model of the matrix.

  • is satisfiable

SAT has a winning strategy

slide-13
SLIDE 13

Game interpretation

ϕ ≜ ∃w.∀x.∃y.∀z.

  • quantifier prefix

(y < 1 ∨ 2w < y) ∧ (z < y ∨ x < z)

  • matrix
  • Two players: SAT and UNSAT
  • SAT wants to make the formula true
  • UNSAT wants to make the formula false
  • A play of this game: SAT and UNSAT take turns picking elements of Q.

[w → 1; x → 2 3; y → −1; z → 1] The SAT player wins if the corresponding structure is a model of the matrix.

  • is satisfiable

SAT has a winning strategy

slide-14
SLIDE 14

Game interpretation

ϕ ≜ ∃w.∀x.∃y.∀z.

  • quantifier prefix

(y < 1 ∨ 2w < y) ∧ (z < y ∨ x < z)

  • matrix
  • Two players: SAT and UNSAT
  • SAT wants to make the formula true
  • UNSAT wants to make the formula false
  • A play of this game: SAT and UNSAT take turns picking elements of Q.

[w → 1; x → 2 3; y → −1; z → 1] The SAT player wins if the corresponding structure is a model of the matrix.

  • ϕ is satisfiable ⇐

⇒ SAT has a winning strategy

slide-15
SLIDE 15

∀x.∀y.∃lub. lub ≥ x ∧ lub ≥ y

  • upper bound

∧ [∀ub.(ub ≥ x ∧ ub ≥ y) = ⇒ ub ≥ lub]

  • least

Winning strategy: lub x y if x y then x else y

slide-16
SLIDE 16

∀x.∀y.∃lub.∀ub.lub ≥ x ∧ lub ≥ y ∧ [(ub ≥ x ∧ ub ≥ y) = ⇒ ub ≥ lub] Winning strategy: lub x y if x y then x else y

slide-17
SLIDE 17

∀x.∀y.∃lub.∀ub.lub ≥ x ∧ lub ≥ y ∧ [(ub ≥ x ∧ ub ≥ y) = ⇒ ub ≥ lub] Winning strategy: lub(x, y) = if x ≥ y then x else y

slide-18
SLIDE 18

SimSat: SAT via mutual strategy improvement

[Farzan & Kincaid, IJCAI 2016]

S0 U beats S beats U beats Sn X beats Un X beats improves improves

slide-19
SLIDE 19

SimSat: SAT via mutual strategy improvement

[Farzan & Kincaid, IJCAI 2016]

S0 U1 beats S beats U beats Sn X beats Un X beats improves improves

slide-20
SLIDE 20

SimSat: SAT via mutual strategy improvement

[Farzan & Kincaid, IJCAI 2016]

S0 U1 beats S1 beats U beats Sn X beats Un X beats improves improves

slide-21
SLIDE 21

SimSat: SAT via mutual strategy improvement

[Farzan & Kincaid, IJCAI 2016]

S0 U1 beats S1 beats U2

· · ·

beats Sn X beats Un X beats improves improves

slide-22
SLIDE 22

SimSat: SAT via mutual strategy improvement

[Farzan & Kincaid, IJCAI 2016]

S0 U1 beats S1 beats U2

· · ·

beats Sn X beats Un X beats improves improves

slide-23
SLIDE 23

SimSat: SAT via mutual strategy improvement

[Farzan & Kincaid, IJCAI 2016]

S0 U1 beats S1 beats U2

· · ·

beats Sn X beats Un X beats improves improves

slide-24
SLIDE 24

SimSat: SAT via mutual strategy improvement

[Farzan & Kincaid, IJCAI 2016]

S0 U1 beats S1 beats U2

· · ·

beats Sn X beats Un X beats improves improves

slide-25
SLIDE 25

Strategy skeletons

∀x.∀y.∃lub.∀ub.lub ≥ x ∧ lub ≥ y ∧ [(ub ≥ x ∧ ub ≥ y) = ⇒ ub ≥ lub] ∀x ∀y ∃lub ∀ub x

  • x

y

  • x ≥ y

y ≥ x

improves

slide-26
SLIDE 26

Strategy skeletons

∀x.∀y.∃lub.∀ub.lub ≥ x ∧ lub ≥ y ∧ [(ub ≥ x ∧ ub ≥ y) = ⇒ ub ≥ lub] ∀x ∀y ∃lub ∀ub x

  • x

y

  • x

y y x

improves

slide-27
SLIDE 27

Strategy skeletons

∀x.∀y.∃lub.∀ub.lub ≥ x ∧ lub ≥ y ∧ [(ub ≥ x ∧ ub ≥ y) = ⇒ ub ≥ lub] ∀x ∀y ∃lub ∀ub

  • x
  • x

y

  • x

y y x

improves

slide-28
SLIDE 28

From skeletons to strategies

∀x.∀y.∃lub.∀ub.lub ≥ x ∧ lub ≥ y ∧ [(ub ≥ x ∧ ub ≥ y) = ⇒ ub ≥ lub]

  • x

y

  • x

y

  • x > 0

x ≤ 0

?

slide-29
SLIDE 29

Tree interpolation (special case)

Given tree with leaves labeled by formulas s.t. the conjunction of all labels is inconsistent: n1 n2 n3 n4 n5 n6 n7 F4 F5 F6 F7 F F F We can find labels for internal nodes s.t.:

  • label of root is false
  • For all nodes ni

Fi

  • conjunction of children’s labels implies Fi
  • Fi uses only symbols common to descendents & non-descendents
slide-30
SLIDE 30

Tree interpolation (special case)

Given tree with leaves labeled by formulas s.t. the conjunction of all labels is inconsistent: n1 n2 n3 n4 n5 n6 n7 F4 F5 F6 F7 F2 F3 F1 We can find labels for internal nodes s.t.:

  • label of root is false
  • For all nodes ni

Fi

  • conjunction of children’s labels implies Fi
  • Fi uses only symbols common to descendents & non-descendents
slide-31
SLIDE 31

Tree interpolation (special case)

Given tree with leaves labeled by formulas s.t. the conjunction of all labels is inconsistent: n1 n2 n3 n4 n5 n6 n7 F4 F5 F6 F7 F2 F3 F1 We can find labels for internal nodes s.t.:

  • label of root is false
  • For all nodes ni

Fi

  • conjunction of children’s labels implies Fi
  • Fi uses only symbols common to descendents & non-descendents
slide-32
SLIDE 32

Tree interpolation (special case)

Given tree with leaves labeled by formulas s.t. the conjunction of all labels is inconsistent: n1 n2 n3 n4 n5 n6 n7 F4 F5 F6 F7 F2 F3 F1 We can find labels for internal nodes s.t.:

  • label of root is false
  • For all nodes ni : Fi
  • conjunction of children’s labels implies Fi
  • Fi uses only symbols common to descendents & non-descendents
slide-33
SLIDE 33

Tree interpolation (special case)

Given tree with leaves labeled by formulas s.t. the conjunction of all labels is inconsistent: n1 n2 n3 n4 n5 n6 n7 F4 F5 F6 F7 F2 F3 F1 We can find labels for internal nodes s.t.:

  • label of root is false
  • For all nodes ni : Fi
  • conjunction of children’s labels implies Fi
  • Fi uses only symbols common to descendents & non-descendents
slide-34
SLIDE 34

Strategy synthesis

∀x.∀y.∃lub.∀ub. lub ≥ x ∧ lub ≥ y ∧ [(ub ≥ x ∧ ub ≥ y) = ⇒ ub ≥ lub]

  • F(x,y,lub,ub)

∀x ∀y ∃lub ∀ub

  • x

y

  • F x y x ub

F x y x ub x y y x false false

slide-35
SLIDE 35

Strategy synthesis

∀x.∀y.∃lub.∀ub. lub ≥ x ∧ lub ≥ y ∧ [(ub ≥ x ∧ ub ≥ y) = ⇒ ub ≥ lub]

  • F(x,y,lub,ub)

∀x ∀y ∃lub ∀ub x y x y ub1 ub2 F x y x ub F x y x ub x y y x false false

slide-36
SLIDE 36

Strategy synthesis

∀x.∀y.∃lub.∀ub. lub ≥ x ∧ lub ≥ y ∧ [(ub ≥ x ∧ ub ≥ y) = ⇒ ub ≥ lub]

  • F(x,y,lub,ub)

∀x ∀y ∃lub ∀ub x y x y ub1 ub2 ¬F(x, y, x, ub1) ¬F(x, y, x, ub1) x y y x false false

slide-37
SLIDE 37

Strategy synthesis

∀x.∀y.∃lub.∀ub. lub ≥ x ∧ lub ≥ y ∧ [(ub ≥ x ∧ ub ≥ y) = ⇒ ub ≥ lub]

  • F(x,y,lub,ub)

∀x ∀y ∃lub ∀ub x y x y ub1 ub2 ¬F(x, y, x, ub1) ¬F(x, y, x, ub1) x < y y < x false false

slide-38
SLIDE 38

Strategy synthesis

∀x.∀y.∃lub.∀ub. lub ≥ x ∧ lub ≥ y ∧ [(ub ≥ x ∧ ub ≥ y) = ⇒ ub ≥ lub]

  • F(x,y,lub,ub)

∀x ∀y ∃lub ∀ub

  • x

y

  • x ≥ y

y ≥ x ¬F(x, y, x, ub1) ¬F(x, y, x, ub1) x < y y < x false false

slide-39
SLIDE 39

Experiments

Name Alchemist-CSDT CVC4-1.5.1 SIMSYNTH max15 Timeout 3.3s Timeout array_search15 Timeout 0.1s 3.0s array_sum8_15 Timeout 0.0s 0.3s tenfunc2 0.0s 0.1s 0.1s polynomial4 0.0s 21.0s 0.0s hms Timeout Timeout 0.0s scaleweights Timeout 0.1s 0.3s lub10 Timeout 38.1s 4.0s inverse10 Timeout Timeout 2.4s round10 Error Timeout 8.8s puzzle35 Timeout Timeout 0.1s puzzle35_opt Timeout Unknown 0.2s

slide-40
SLIDE 40

Reachability games

slide-41
SLIDE 41

Definition A reachability game of dimension d consists of three formulas:

  • init(x1, ..., xd): initial game state (chosen by REACH)
  • reach(x1, ..., xd, x′

1, ..., x′ d): moves of REACH

  • safe(x1, ..., xd, x′

1, ..., x′ d): moves of SAFE

REACH and SAFE alternate picking positions in Qd r1 s1 r2 s2 · · ·

safe(r1, s1) reach(s1, r1) safe(r2, s2)

init(r1) First player to make an illegal move loses.

slide-42
SLIDE 42

Definition A reachability game of dimension d consists of three formulas:

  • init(x1, ..., xd): initial game state (chosen by REACH)
  • reach(x1, ..., xd, x′

1, ..., x′ d): moves of REACH

  • safe(x1, ..., xd, x′

1, ..., x′ d): moves of SAFE

REACH and SAFE alternate picking positions in Qd r1 s1 r2 s2 · · ·

safe(r1, s1) reach(s1, r1) safe(r2, s2)

init(r1) First player to make an illegal move loses.

slide-43
SLIDE 43

Cinderella-Stepmother

b1 b2 b3 b5 b4 capacity = 3

slide-44
SLIDE 44

Cinderella-Stepmother

b1 b2 b3 b5 b4 capacity = 3

slide-45
SLIDE 45

Cinderella-Stepmother

b1 b2 b3 b5 b4 capacity = 3

slide-46
SLIDE 46

Cinderella-Stepmother

b1 b2 b3 b5 b4 capacity = 3

slide-47
SLIDE 47

Formalizing Cinderella-Stepmother

init ≜ ( 5 ∑

i=1

bi = 1 ) ∧

5

i=1

bi ≥ 0 reach ≜

5

i=1

b′

i = 1 +

( 5 ∑

i=1

bi ) ∧

5

i=1

b′

i ≥ bi

safe ≜ ¬overflow ∧ ∨ emptyi where

  • verflow ≜

( 5 ∨

i=1

bi > 3 ) emptyi ≜ b′

i, b′ i+1, b′ i+2, b′ i+3, b′ i+4 = 0, 0, bi+2, bi+3, bi+4

slide-48
SLIDE 48

Safety trees

n1: b ≤ 3, 3, 1, 1, 1 ∧ (b3 + b5) ≤ 1 n2: b ≤ 3, 3, 2, 2, 2 ∧ (b3 + b5) ≤ 2 n3: b ≤ 1, 1, 3, 3, 3 ∧ (b3 + b5) ≤ 3 n5: b ≤ 2, 2, 1, 3, 3 n6: b ≤ 2, 2, 3, 3, 1 n9: b ≤ 3, 3, 2, 2, 2 ∧ (b3 + b5) ≤ 2 n10: b ≤ 1, 1, 3, 3, 3 ∧ (b3 + b5) ≤ 3 n11: b ≤ 3, 3, 2, 2, 2 ∧ (b3 + b5) ≤ 2 n12: b ≤ 1, 1, 3, 3, 3 ∧ (b3 + b5) ≤ 3 true : ⟨0, 0, b3, b4, b5⟩ true : ⟨0, 0, b3, b4, b5⟩ b5 ≤ 2 : ⟨b1, b2, 0, 0, b5⟩ b3 ≤ 2 : ⟨b1, b2, b3, 0, 0⟩ true : ⟨b1, b2, b3, 0, 0⟩ true : ⟨0, 0, b3, b4, b5⟩ true : ⟨b1, b2, 0, 0, b5⟩ true : ⟨0, 0, b3, b4, b5⟩

slide-49
SLIDE 49

Safety trees

n1: b ≤ 3, 3, 1, 1, 1 ∧ (b3 + b5) ≤ 1 n2: b ≤ 3, 3, 2, 2, 2 ∧ (b3 + b5) ≤ 2 n3: b ≤ 1, 1, 3, 3, 3 ∧ (b3 + b5) ≤ 3 n5: b ≤ 2, 2, 1, 3, 3 n6: b ≤ 2, 2, 3, 3, 1 n9: b ≤ 3, 3, 2, 2, 2 ∧ (b3 + b5) ≤ 2 n10: b ≤ 1, 1, 3, 3, 3 ∧ (b3 + b5) ≤ 3 n11: b ≤ 3, 3, 2, 2, 2 ∧ (b3 + b5) ≤ 2 n12: b ≤ 1, 1, 3, 3, 3 ∧ (b3 + b5) ≤ 3 true : ⟨0, 0, b3, b4, b5⟩ true : ⟨0, 0, b3, b4, b5⟩ b5 ≤ 2 : ⟨b1, b2, 0, 0, b5⟩ b3 ≤ 2 : ⟨b1, b2, b3, 0, 0⟩ true : ⟨b1, b2, b3, 0, 0⟩ true : ⟨0, 0, b3, b4, b5⟩ true : ⟨b1, b2, 0, 0, b5⟩ true : ⟨0, 0, b3, b4, b5⟩ Annotation: set of positions the game could be in

slide-50
SLIDE 50

Safety trees

n1: b ≤ 3, 3, 1, 1, 1 ∧ (b3 + b5) ≤ 1 n2: b ≤ 3, 3, 2, 2, 2 ∧ (b3 + b5) ≤ 2 n3: b ≤ 1, 1, 3, 3, 3 ∧ (b3 + b5) ≤ 3 n5: b ≤ 2, 2, 1, 3, 3 n6: b ≤ 2, 2, 3, 3, 1 n9: b ≤ 3, 3, 2, 2, 2 ∧ (b3 + b5) ≤ 2 n10: b ≤ 1, 1, 3, 3, 3 ∧ (b3 + b5) ≤ 3 n11: b ≤ 3, 3, 2, 2, 2 ∧ (b3 + b5) ≤ 2 n12: b ≤ 1, 1, 3, 3, 3 ∧ (b3 + b5) ≤ 3 true : ⟨0, 0, b3, b4, b5⟩ true : ⟨0, 0, b3, b4, b5⟩ b5 ≤ 2 : ⟨b1, b2, 0, 0, b5⟩ b3 ≤ 2 : ⟨b1, b2, b3, 0, 0⟩ true : ⟨b1, b2, b3, 0, 0⟩ true : ⟨0, 0, b3, b4, b5⟩ true : ⟨b1, b2, 0, 0, b5⟩ true : ⟨0, 0, b3, b4, b5⟩ Annotation: set of positions the game could be in Move: next position Guard: condition under which to make the move

slide-51
SLIDE 51

n1: true ∀b0.init(b0) ⇒ ∃b1.safe(b0, b1) n : n : true true b b b b init b safe b b b b b reach b b b b b safe b b n : true b b b n : true true b b b n : true b b b n : true true b b b b b b b b b n : n : b b b b b b b b n : true true b b b n : true true b b b n : n : true b b b true b b b n : true b b b n : true b b b

slide-52
SLIDE 52

n : true b init b b safe b b n1: b ≤ 3, 3, 3, 3, 3 n2: true true : ⟨0, 0, b3, b4, b5⟩ ∀b0.init(b0) ⇒ (safe(b0, 00b3b4b5) ∧ ∀b1.reach(00b3b4b5, b1)∃b2.safe(b1, b2) n : true b b b n : true true b b b n : true b b b n : true true b b b b b b b b b n : n : b b b b b b b b n : true true b b b n : true true b b b n : n : true b b b true b b b n : true b b b n : true b b b

slide-53
SLIDE 53

n : true b init b b safe b b n1: b ≤ 3, 3, 2, 2, 2 n : true true b b b b init b safe b b b b b reach b b b b b safe b b n2: b ≤ 3, 3, 3, 3, 3 true : ⟨0, 0, b3, b4, b5⟩ n3: true true : ⟨0, 0, b3, b4, b5⟩ n : true b b b n : true true b b b b b b b b b n : n : b b b b b b b b n : true true b b b n : true true b b b n : n : true b b b true b b b n : true b b b n : true b b b

slide-54
SLIDE 54

n : true b init b b safe b b n1: b ≤ 3, 3, 1, 1, 1 n : true true b b b b init b safe b b b b b reach b b b b b safe b b n2: b ≤ 3, 3, 2, 2, 2 true : ⟨0, 0, b3, b4, b5⟩ n : true true b b b n3: b ≤ 3, 3, 3, 3, 3 true : ⟨0, 0, b3, b4, b5⟩ n4: true true : ⟨0, 0, b3, b4, b5⟩ b b b b b b n : n : b b b b b b b b n : true true b b b n : true true b b b n : n : true b b b true b b b n : true b b b n : true b b b

slide-55
SLIDE 55

n : true b init b b safe b b n1: b ≤ 3, 3, 1, 1, 1 n : true true b b b b init b safe b b b b b reach b b b b b safe b b n2: b ≤ 3, 3, 2, 2, 2 true : ⟨0, 0, b3, b4, b5⟩ n : true true b b b n3: b ≤ 3, 3, 3, 3, 3 true : ⟨0, 0, b3, b4, b5⟩ n : true true b b b ∀b0.∀b1.∀b2.∃b4.∀b5.∃b6 n : n : b b b b b b b b n : true true b b b n : true true b b b n : n : true b b b true b b b n : true b b b n : true b b b

slide-56
SLIDE 56

n : true b init b b safe b b n1: b ≤ 3, 3, 1, 1, 1 ∧ (b3 + b5) ≤ 1 n : true true b b b b init b safe b b b b b reach b b b b b safe b b n2: b ≤ 3, 3, 2, 2, 2 ∧ (b3 + b5) ≤ 2 true : ⟨0, 0, b3, b4, b5⟩ n : true true b b b n3: b ≤ 1, 1, 3, 3, 3 ∧ (b3 + b5) ≤ 3 true : ⟨0, 0, b3, b4, b5⟩ n : true true b b b b b b b b b n5: b ≤ 3, 3, 3, 3, 3 n6: b ≤ 3, 3, 3, 3, 3 b5 ≤ 2 : ⟨b1, b2, 0, 0, b5⟩ b3 ≤ 2 : ⟨b1, b2, b3, 0, 0⟩ n7: true true : ⟨0, 0, b3, b4, b5⟩ n8: true true : ⟨0, 0, b3, b4, b5⟩ n : n : true b b b true b b b n : true b b b n : true b b b

slide-57
SLIDE 57

n : true b init b b safe b b n1: b ≤ 3, 3, 1, 1, 1 ∧ (b3 + b5) ≤ 1 n : true true b b b b init b safe b b b b b reach b b b b b safe b b n2: b ≤ 3, 3, 2, 2, 2 ∧ (b3 + b5) ≤ 2 true : ⟨0, 0, b3, b4, b5⟩ n : true true b b b n3: b ≤ 1, 1, 3, 3, 3 ∧ (b3 + b5) ≤ 3 true : ⟨0, 0, b3, b4, b5⟩ n : true true b b b b b b b b b n5: b ≤ 3, 3, 3, 3, 3 n6: b ≤ 3, 3, 3, 3, 3 b5 ≤ 2 : ⟨b1, b2, 0, 0, b5⟩ b3 ≤ 2 : ⟨b1, b2, b3, 0, 0⟩ n : true true b b b n8: true true : ⟨0, 0, b3, b4, b5⟩ n : n : true b b b true b b b n : true b b b n : true b b b

slide-58
SLIDE 58

n : true b init b b safe b b n1: b ≤ 3, 3, 1, 1, 1 ∧ (b3 + b5) ≤ 1 n : true true b b b b init b safe b b b b b reach b b b b b safe b b n2: b ≤ 3, 3, 2, 2, 2 ∧ (b3 + b5) ≤ 2 true : ⟨0, 0, b3, b4, b5⟩ n : true true b b b n3: b ≤ 1, 1, 3, 3, 3 ∧ (b3 + b5) ≤ 3 true : ⟨0, 0, b3, b4, b5⟩ n : true true b b b b b b b b b n5: b ≤ 2, 2, 2, 3, 3 n6: b ≤ 3, 3, 3, 3, 3 b5 ≤ 2 : ⟨b1, b2, 0, 0, b5⟩ b3 ≤ 2 : ⟨b1, b2, b3, 0, 0⟩ n : true true b b b n8: true true : ⟨0, 0, b3, b4, b5⟩ n9: b ≤ 3, 3, 3, 3, 3 n10: true true : ⟨b1, b2, b3, 0, 0⟩ true : ⟨0, 0, b3, b4, b5⟩ n : true b b b n : true b b b

slide-59
SLIDE 59

n : true b init b b safe b b n1: b ≤ 3, 3, 1, 1, 1 ∧ (b3 + b5) ≤ 1 n : true true b b b b init b safe b b b b b reach b b b b b safe b b n2: b ≤ 3, 3, 2, 2, 2 ∧ (b3 + b5) ≤ 2 true : ⟨0, 0, b3, b4, b5⟩ n : true true b b b n3: b ≤ 1, 1, 3, 3, 3 ∧ (b3 + b5) ≤ 3 true : ⟨0, 0, b3, b4, b5⟩ n : true true b b b b b b b b b n5: b ≤ 2, 2, 1, 3, 3 n6: b ≤ 3, 3, 3, 3, 3 b5 ≤ 2 : ⟨b1, b2, 0, 0, b5⟩ b3 ≤ 2 : ⟨b1, b2, b3, 0, 0⟩ n : true true b b b n8: true true : ⟨0, 0, b3, b4, b5⟩ n9: b ≤ 3, 3, 2, 2, 2 ∧ (b3 + b5) ≤ 2 n10: b ≤ 1, 1, 3, 3, 3 ∧ (b3 + b5) ≤ 3 true : ⟨b1, b2, b3, 0, 0⟩ true : ⟨0, 0, b3, b4, b5⟩ n : true b b b n : true b b b

slide-60
SLIDE 60

n : true b init b b safe b b n1: b ≤ 3, 3, 1, 1, 1 ∧ (b3 + b5) ≤ 1 n : true true b b b b init b safe b b b b b reach b b b b b safe b b n2: b ≤ 3, 3, 2, 2, 2 ∧ (b3 + b5) ≤ 2 true : ⟨0, 0, b3, b4, b5⟩ n : true true b b b n3: b ≤ 1, 1, 3, 3, 3 ∧ (b3 + b5) ≤ 3 true : ⟨0, 0, b3, b4, b5⟩ n : true true b b b b b b b b b n5: b ≤ 2, 2, 1, 3, 3 n6: b ≤ 3, 3, 3, 3, 3 b5 ≤ 2 : ⟨b1, b2, 0, 0, b5⟩ b3 ≤ 2 : ⟨b1, b2, b3, 0, 0⟩ n : true true b b b n : true true b b b n9: b ≤ 3, 3, 2, 2, 2 ∧ (b3 + b5) ≤ 2 n10: b ≤ 1, 1, 3, 3, 3 ∧ (b3 + b5) ≤ 3 true : ⟨b1, b2, b3, 0, 0⟩ true : ⟨0, 0, b3, b4, b5⟩ n : true b b b n : true b b b

slide-61
SLIDE 61

n : true b init b b safe b b n1: b ≤ 3, 3, 1, 1, 1 ∧ (b3 + b5) ≤ 1 n : true true b b b b init b safe b b b b b reach b b b b b safe b b n2: b ≤ 3, 3, 2, 2, 2 ∧ (b3 + b5) ≤ 2 true : ⟨0, 0, b3, b4, b5⟩ n : true true b b b n3: b ≤ 1, 1, 3, 3, 3 ∧ (b3 + b5) ≤ 3 true : ⟨0, 0, b3, b4, b5⟩ n : true true b b b b b b b b b n5: b ≤ 2, 2, 1, 3, 3 n6: b ≤ 2, 2, 3, 3, 2 b5 ≤ 2 : ⟨b1, b2, 0, 0, b5⟩ b3 ≤ 2 : ⟨b1, b2, b3, 0, 0⟩ n : true true b b b n : true true b b b n9: b ≤ 3, 3, 2, 2, 2 ∧ (b3 + b5) ≤ 2 n10: b ≤ 1, 1, 3, 3, 3 ∧ (b3 + b5) ≤ 3 true : ⟨b1, b2, b3, 0, 0⟩ true : ⟨0, 0, b3, b4, b5⟩ n11: b ≤ 3, 3, 3, 3, 3 true : ⟨b1, b2, 0, 0, b5⟩ n12: true true : ⟨0, 0, b3, b4, b5⟩

slide-62
SLIDE 62

n : true b init b b safe b b n1: b ≤ 3, 3, 1, 1, 1 ∧ (b3 + b5) ≤ 1 n : true true b b b b init b safe b b b b b reach b b b b b safe b b n2: b ≤ 3, 3, 2, 2, 2 ∧ (b3 + b5) ≤ 2 true : ⟨0, 0, b3, b4, b5⟩ n : true true b b b n3: b ≤ 1, 1, 3, 3, 3 ∧ (b3 + b5) ≤ 3 true : ⟨0, 0, b3, b4, b5⟩ n : true true b b b b b b b b b n5: b ≤ 2, 2, 1, 3, 3 n6: b ≤ 2, 2, 3, 3, 2 b5 ≤ 2 : ⟨b1, b2, 0, 0, b5⟩ b3 ≤ 2 : ⟨b1, b2, b3, 0, 0⟩ n : true true b b b n : true true b b b n9: b ≤ 3, 3, 2, 2, 2 ∧ (b3 + b5) ≤ 2 n10: b ≤ 1, 1, 3, 3, 3 ∧ (b3 + b5) ≤ 3 true : ⟨b1, b2, b3, 0, 0⟩ true : ⟨0, 0, b3, b4, b5⟩ n11: b ≤ 3, 3, 2, 2, 2 ∧ (b3 + b5) ≤ 2 true : ⟨b1, b2, 0, 0, b5⟩ n12: b ≤ 1, 1, 3, 3, 3 ∧ (b3 + b5) ≤ 2 true : ⟨0, 0, b3, b4, b5⟩

slide-63
SLIDE 63

Cinderella-Stepmother

Capacity Winner Time c=3 Cinderella 2.2s c=2.5 Cinderella 53.8s c=2 Cinderella 68.9s c=1.8 — Timeout c=1.7 Stepmother 2.5s c=1.6 Stepmother 1.5s c=1.5 Stepmother 1.4s c=1.4 Stepmother 0.2s

slide-64
SLIDE 64

Cinderella-Stepmother

Capacity Winner Time c=3 Cinderella 2.2s c=2.5 Cinderella 53.8s c=2 Cinderella 68.9s c=1.8 — Timeout c=1.7 Stepmother 2.5s c=1.6 Stepmother 1.5s c=1.5 Stepmother 1.4s c=1.4 Stepmother 0.2s

“the problem becomes more challenging for 1.5 ≤ c < 3 …in such cases fully automated strategy synthesis seems unrealistic, and computer-assisted proofs driven by user-provided hints or templates are more plausible.”

– Beyene, Chaudhuri, Popeea & Rybalchenko; POPL’14

slide-65
SLIDE 65

Summary

  • Complete procedure for satisfiability games
  • Extends LRA decision procedure to strategy synthesis
  • Semi-algorithm for reachability games
  • Synthesize strategies for bounded games, then generalize
  • Complete for finite REACH strategies