Calculating Graph Algorithms for Dominance and Shortest Path
Ilya Sergey Jan Midtgaard Dave Clarke
MPC 2012
Calculating Graph Algorithms for Dominance and Shortest Path Ilya - - PowerPoint PPT Presentation
Calculating Graph Algorithms for Dominance and Shortest Path Ilya Sergey Jan Midtgaard Dave Clarke MPC 2012 How to derive two graph algorithms by means of Abstract Interpretation ? Abstract Interpretation Abstract Interpretation
Ilya Sergey Jan Midtgaard Dave Clarke
MPC 2012
(a brief history)
P . Cousot, R. Cousot, Abstract Interpretation: A Unified Lattice Model for Static Analysis of Programs by Construction or Approximation of Fixpoints. POPL’77 P . Cousot, R. Cousot, Systematic Design of Program Analysis Frameworks. POPL’79
... ... ... ... ... ... ... ... ...
(a brief list of applications in PL)
(an essence)
(an essence)
Complete lattice
hC; v, ?, >, t, ui
Partial order
hC; vi
Least upper bound Greatest lower bound Bottom Top
t u > = tC ? = uC
hC, vi hA, i f : C → A [ x v y = ) f(x) f(y) ]
lfpvf = u{x | f(x) v x} f : hC, vi ! hC, vi
Kleene iteration
lfpvf = G
n0
f n(⊥)
hC, vi, f : C ! C f is monotone
(an example)*
* P . Cousot, R. Cousot, Basic concepts of abstract interpretation
System states Transition relation Initial states
Partial trace
σ = s0s1 . . . sn, si ∈ Σ
Semantic functional
F : ℘(Σ+) → ℘(Σ+)
F(X) = {s | s 2 Σ0} [ {σss0 | σs 2 X ^ hs, s0i 2 t}
Lattice
lfp⊆F = [
n≥0
Fn(∅)
Interpretation
(an example)
Σ0 = {s0}
t = {hs0, s1i, hs1, s1i, hs1, s2i}
Σ = {s0, s1, s2}
F0(∅) = ∅ F1(∅) = {s0} F2(∅) = {s0, s0s1} F3(∅) = {s0, s0s1, s0s1s2, s0s1s1} . . . F4(∅) = {s0, s0s1, s0s1s2, s0s1s1, s0s1s1s1, s0s1s1s2}
c1 c2 c3 a1 a2
c1 c2 c3 a1 a2
Compositional construction
hC, vi
γ1
hA1, 1i hA1, 1i
γ2
hA2, 2i hC, vi
γ1γ2
hA2, 2i
Fixed point fusion
α Fc ˙ ≤ Fa α = ⇒ α(lfp Fc) ≤ lfp Fa
Fc, Fa are monotone
α Fc = Fa α = ⇒ α(lfp Fc) = lfp Fa
Fa : hA, i ! hA, i
Fc : hC, vi ! hC, vi
| {z }
usually finite
(a recipe)
(abstracted)
α(X) = last states of all traces in X
α(X) = {s | σs ∈ X for some σ}
h℘(Σ+), ✓, ;, Σ+, [, \i
| {z }
| {z }
Partial traces Reachable states
h℘(Σ), ✓, ;, Σ, [, \i − − − → ← − − −
α γ
(abstracted)
h℘(Σ+), ✓, ;, Σ+, [, \i
γ
h℘(Σ), ✓, ;, Σ, [, \i
| {z }
| {z }
Partial traces
| {z }
Reachable states
F(X) = {s | s 2 Σ0} [ {σss0 | σs 2 X ^ hs, s0i 2 t} b F(X) = {s | s 2 Σ0} [ {s0 | s 2 X ^ hs, s0i 2 t}
α F = b F α
* Proof: P . Cousot, R. Cousot, Basic concepts of abstract interpretation
* =
⇒ α(lfp⊆F) = lfp⊆ b F
(an example)
Σ0 = {s0}
t = {hs0, s1i, hs1, s1i, hs1, s2i}
Σ = {s0, s1, s2}
b F0(∅) = ∅
b F1(∅) = {s0} b F2(∅) = {s0, s1}
b F3(∅) = {s0, s1, s2}
b F4(∅) = {s0, s1, s2} = b
F3(∅) = lfp⊆( b F)
Edges: Root node:
(u ! v) ( ) hu, vi 2 E
Finite non-empty paths
∀i ∈ 1 . . . n, (ui−1 → ui)
pG : ℘(V +) → ℘(V +)
A finite path functional
pG(X) = {σ, v : σ ∈ X ∧ (last(σ) → v) : σv} last : V + → V
last(σu) = u
A lattice
PG = lfp(λX.{v0} ∪ pG(X))
A node u dominates node v if u belongs to every path from the initial node v0 to v.
graph
dom : ℘(V +) → ℘(V × V ) [ u dom(X) v = h8σ : σ 2 X ^ last(σ) = v : u in σi ]
where
in ⊆ V × V + in = lfp(λX.last ∪ X pre)
and
pre ⊆ V + × V + pre = {σ, v : σ 2 V + ^ σv 2 V + : hσ, σvi}
| {z }
for every σ∈X
v is a last node of σ
z }| {
X is a set of paths
z}|{
| {z }
u∈σ
[ u dom(X) v = h8σ : σ 2 X ^ last(σ) = v : u in σi ]
v0 a b c d
p0
G(∅) = ∅
dom
G(;)
ha, v0i, ha, ai, ha, bi, ha, ci, ha, di, hb, v0i, hb, ai, hb, bi, hb, ci, hb, di, hc, v0i, hc, ai, hc, bi, hc, ci, hc, di, hd, v0i, hd, ai, hd, bi, hd, ci, hd, di}
v0 a b c d
p1
G(∅) = {v0}
dom
G(;)
ha, ai, ha, bi, ha, ci, ha, di, hb, ai, hb, bi, hb, ci, hb, di, hc, ai, hc, bi, hc, ci, hc, di, hd, ai, hd, bi, hd, ci, hd, di}
v0 a b c d
p2
G(∅) = {v0, v0a, v0d}
dom
G(;)
ha, ai, ha, bi, ha, ci, hb, bi, hb, ci, hc, bi, hc, ci, hd, bi, hd, ci, hd, di}
v0 a b c d
p3
G(∅) = {v0, v0a, v0d, v0ab, v0dc}
dom
G(;)
ha, ai, ha, bi, hb, bi, hc, ci, hd, ci, hd, di}
v0 a b c d
A fixed point for dominance is reached
dom
G(;)
ha, ai, ha, bi, hb, bi, hc, ci, hd, di}
p4
G(∅) = {v0, v0a, v0d, v0ab, v0dc, v0abc, v0dca}
can only decrease
Connection
| {z }
Finite paths
| {z }
Dominance relations
What is α?
γ
Recall:
dom : ℘(V +) → ℘(V × V ) [ u dom(X) v = h8σ : σ 2 X ^ last(σ) = v : u in σi ]
such that
FD
dom pG = FD dom
then
dom(PG) = lfp⊇(λX.dom({v0}) ∩ FD(X))
h℘(V +), ✓i
dom
h℘(V ⇥ V ), ◆i
To do
Establish a connection compositionally
* With gratitude to Reviewer #1
*
R S ⌘ {x, y, z : hx, yi 2 R ^ hy, zi 2 S : hx, zi}
R ⊆ A × B S ⊆ B × C
R ⊆ A × B S ⊆ B × C T ⊆ A × C
Left factor: Right factor:
[ x T/S y ⌘ h8z : y S z : x T zi ]
[ x R\T y ⌘ h8z : z R x : z T yi ]
R ⊆ A × B S ⊆ B × C T ⊆ A × C
[ T/S ⊇ R ⇐ ⇒ S ⊆ R\T ]
≤ α(S)
R ⇐
⇒
[
S v γ(R) ]
α(X) = T/X
γ(X) = X\T
R ⊆ A × B S ⊆ B × C T ⊆ A × C
h℘(B ⇥ C), ✓i
(\T )
h℘(A ⇥ B), ◆i
(T/) = λX.T/X (\T) = λX.X\T
[ T/S ⊇ R ⇐ ⇒ S ⊆ R\T ]
≤ α(S)
R ⇐
⇒
[
S v γ(R) ]
α(X) = T/X
γ(X) = X\T
[u dom(X) v = h8σ : σ ∈ X ∧ last(σ) = v : u in σi] f(X) = {σ : σ 2 X : hlast(σ), σi} v f(X) σ | {z }
in/f(X)
f(X) = {σ : σ 2 X : hlast(σ), σi} dom = (in/) f [u dom(X) v = h8σ : : u in σi] v f(X) σ | {z }
in/f(X)
dom = (in/) f
Factors In the paper
h℘(V +), ✓i
dom
h℘(V ⇥ V ), ◆i
f(X) = {σ : σ 2 X : hlast(σ), σi}
h℘(last), ✓i
(\in)
h℘(V ⇥ V ), ◆i
h℘(V +) ✓i
f
h℘(last), ✓i
such that
FD
dom pG = FD dom
Done
h℘(V +), ✓i
dom
h℘(V ⇥ V ), ◆i
To do
dom pG = (in/) f pG f pG = k f
k(X) = {σ, u, v : hu, σi 2 X ^ (u ! v) : hv, σvi}
dom pG = (in/) f pG = k f
k(X) = {σ, u, v : hu, σi 2 X ^ (u ! v) : hv, σvi}
(in/) k f
Details in the paper
f pG
dom pG = (in/) k f (in/) k = FD (in/) FD(X) = id ∪ X/pred [ v pred u ≡ u → v ] f pG = k f
k(X) = {σ, u, v : hu, σi 2 X ^ (u ! v) : hv, σvi}
Details in the paper
dom pG = FD(X) = id ∪ X/pred [ v pred u ≡ u → v ]
Details in the paper
(in/) k = FD (in/) (in/) k f
dom pG = FD(X) = id ∪ X/pred [ v pred u ≡ u → v ]
(in/) k = FD (in/)
Details in the paper
dom pG =
dom(PG) = lfp⊇(λX.dom({v0}) ∩ FD(X))
FD(X) = id ∪ X/pred [ v pred u ≡ u → v ] (in/) k = FD (in/)
such that
FD
dom pG = FD dom
Done
h℘(V +), ✓i
dom
h℘(V ⇥ V ), ◆i
Done
dom(PG) = lfp⊇(λX.dom({v0}) ∩ FD(X))
Dom(v) = {u : u dom(PG) v : u}
for v 2 V do Dom[v] V Dom’ dom({v0}) \ FD(Dom) while Dom 6= Dom’ do Dom Dom’ Dom’ dom({v0}) \ FD(Dom)
dom({v0}) t lfp(. . .)
[ u dom(PG) v ( ) u = v _ h8w : w ! v : u dom(PG) wi ]
[ u dom(PG) v0 ⇐ ⇒ u = v0 ]
Dom(v0) = {v0} Dom(v) = \
w∈pred(v)
Dom(w) ∪ {v}
for v 2 V do Dom[v] V Dom[v0] {v0} Changed true while Changed do Changed false for v 2 V do newSet ⇣T
w∈pred(v) Dom[w]
⌘ [ {v} if newSet 6= Dom[v] then Dom[v] newSet Changed true
* K. D. Cooper, T. J. Harvey, and K. Kennedy. A simple, fast dominance algorithm.
for v 2 V do Dom[v] V Dom[v0] {v0} Changed true while Changed do Changed false for v 2 V do newSet ⇣T
w∈pred(v) Dom[w]
⌘ [ {v} if newSet 6= Dom[v] then Dom[v] newSet Changed true
O(|V |2)
for v 2 V do Dom[v] V Dom[v0] {v0} Changed true while Changed do Changed false for v 2 V do newSet ⇣T
w∈pred(v) Dom[w]
⌘ [ {v} if newSet 6= Dom[v] then Dom[v] newSet Changed true
O(|V | × |E|)
O(|V |2)
for v 2 V do Dom[v] V Dom[v0] {v0} Changed true while Changed do Changed false for v 2 V do newSet ⇣T
w∈pred(v) Dom[w]
⌘ [ {v} if newSet 6= Dom[v] then Dom[v] newSet Changed true
O(|V |3 × |E|) O(|V |2)
for v 2 V do Dom[v] V Dom[v0] {v0} Changed true while Changed do Changed false for v 2 V do newSet ⇣T
w∈pred(v) Dom[w]
⌘ [ {v} if newSet 6= Dom[v] then Dom[v] newSet Changed true
Reverse postorder
Using priority queue
* K. D. Cooper, T. J. Harvey, and K. Kennedy. A simple, fast dominance algorithm.
h℘(V ⇥ V ), ◆i h℘(V +), ✓i
pG : ℘(V +) → ℘(V +)
dom pG = FD dom
lfp⊇FD
dom = (in/) f
h℘(V +), ✓i
dom
h℘(V ⇥ V ), ◆i
pGw : ℘(V +
w ) → ℘(V + w )
h℘(V +
w ), ✓i
dist(X) = λv. min{τ : τ 2 X ^ last(τ) = v : kτk}
dist pGw = Fδ dist
lfp ˙
≥Fδ
hV ! (N [ {1}), ˙ i
Details in the paper
h℘(V +
w ), ✓i
dist
hV ! (N [ {1}), ˙ i
for u ∈ V do δ[u] ← ∞ δ[v0] ← 0 Changed ← true while Changed do Changed ← false for v ∈ V do for u ∈ pred(v) do if δ[u] + W[u, v] < δ[v] then δ[v] ← δ[u] + W[u, v] Changed ← true
* R. Bellman. On a routing problem. 1958
properties of sets of finite paths
to be a lower adjoint in a Galois connection
¡Gracias!