graph-transformation verification using monadic 2 nd -order logic

28
1 Graph-Transformation Verification using Monadic 2 nd - Order Logic Kazuhiro Inaba with S. Hidaka, Z. Hu, H. Kato (National Institute of Informatics, Japan) and K. Nakano (University of Electro-Communications) PPDP 2011, Odense Grap h MSO Verif y

Upload: brier

Post on 23-Jan-2016

54 views

Category:

Documents


0 download

DESCRIPTION

Graph-Transformation Verification using Monadic 2 nd -Order Logic. Kazuhiro Inaba with S. Hidaka, Z. Hu , H. Kato (National Institute of Informatics, Japan) and K. Nakano (University of Electro-Communications) PPDP 2011, Odense. Graph. MSO. Verify. Graph Transformation. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Graph-Transformation Verification using Monadic 2 nd -Order Logic

1

Graph-Transformation Verificationusing Monadic 2nd-Order Logic

Kazuhiro Inabawith S. Hidaka, Z. Hu, H. Kato(National Institute of Informatics, Japan)

and K. Nakano(University of Electro-Communications)

PPDP 2011, Odense

Graph

MSOVerify

Page 2: Graph-Transformation Verification using Monadic 2 nd -Order Logic

2

Graph TransformationGRoundTram ( www.biglab.org )

Page 3: Graph-Transformation Verification using Monadic 2 nd -Order Logic

3

Two Languages InvolvedTransformation: UnQL / UnCAL [Buneman&Fernandez&Suciu, 2000]

select {result: $x} where { _*: $x}, {name: John} in $x

Schema: KM3 [ATLAS Group]

class INPUT { reference SNS: SNSDB; … }

class OUTPUT { reference result*: MEM; }

Page 4: Graph-Transformation Verification using Monadic 2 nd -Order Logic

4

Today’s Topic: Static Check• Given– A graph transformation f– Input schema SI– Output schema So

• Statically verify that “there’s no type error”,i.e., “for any graph g conforming to SI , f(g) always conforms to So.”

Page 5: Graph-Transformation Verification using Monadic 2 nd -Order Logic

5

Example : SNS-MembersExtract all members using the screen-name “John”.

SNS member name John

membername Mary

mem

bername John

friend

friend

friend

info

・・・

info

・・・

info

・・・select {result: $x}

where {SNS: {member: $x}}, {name: John} in $x

・・・

Page 6: Graph-Transformation Verification using Monadic 2 nd -Order Logic

6

ExampleExtract all members using the screen-name “John”.

SNS member name John

membername Mary

mem

bername John

friend

friend

friend

info

・・・

info

・・・

info

・・・select {result: $x}

where {SNS: {member: $x}}, {name: John} in $x

result

result

・・・

Page 7: Graph-Transformation Verification using Monadic 2 nd -Order Logic

7

・・・

ExampleLazy programmer may write …

SNS member name John

membername Mary

mem

bername John

friend

friend

friend

info

・・・

info

・・・

info

・・・select {result: $x}

where { _*: $x}, {name: John} in $x

result

result

Page 8: Graph-Transformation Verification using Monadic 2 nd -Order Logic

8

ExampleIn fact, the graph contained “group” data, too!

SNS member name John

membername Mary

mem

bername John

friend

friend

friend

info

・・・

info

・・・

info

・・・

・・・

name

“Fan Club

of XXX”

group

name

“Java Programmer”

grou

p

member

member

Page 9: Graph-Transformation Verification using Monadic 2 nd -Order Logic

9

ExampleWhat happens if there’s {group: {name: John, …}}

SNS member name John

membername Mary

mem

bername John

friend

friend

friend

info

・・・

info

・・・

info

・・・

・・・

name

“Fan Club

of XXX”

group

name

“Java Programmer”

grou

p

member

member

select {result: $x}where { _*: $x}, {name: John} in $x

BUGGY!

Page 10: Graph-Transformation Verification using Monadic 2 nd -Order Logic

10

What We ProvideProgrammers specify their intention

about the structure of input/output.

// Input Schema supplied by the SNS provider

class INPUT { reference SNS: SNSDB; }class SNSDB { reference member*: MEM;

reference group*: GRP; }class MEM { reference friend*: MEM;

reference name: STRING; }class GRP { reference name: STRING;

reference member*: MEM; }

class OUTPUT { reference result*: MEM; }

Page 11: Graph-Transformation Verification using Monadic 2 nd -Order Logic

11

What We ProvideThen, our system automatically verify it!

class INPUT { reference SNS: SNSDB; }

class OUTPUT { reference result*: MEM; }

select {result: $x}where {SNS: {member: $x}}, {name: John} in $x

“OK!” ※ Our checker is SOUND.

If it says OK, then the program never goes wrong.

Page 12: Graph-Transformation Verification using Monadic 2 nd -Order Logic

12

What We ProvideThen, our system automatically verify it!

class INPUT { reference SNS: SNSDB; }

class OUTPUT { reference result*: MEM; }

“BUG!”select {result: $x}where { _*: $x}, {name: John} in $x

SNS

group

name

John

※ Our checker providesa COUNTER-EXAMPLE.

Page 13: Graph-Transformation Verification using Monadic 2 nd -Order Logic

13

Outline of the Rest of the Talk

How We Implemented This Verification–Monadic 2nd-Order Logic (MSO)–Schema to MSO–Transformations to MSO–Decide MSO: from Graphs to Trees

Page 14: Graph-Transformation Verification using Monadic 2 nd -Order Logic

14

Overall Picture

UnQL / UnCAL[Buneman, et.al. 00]

MSO DefinableTransduction[Courcelle 94]

KM3 Schema[ATLAS Group]

MSO Logic

Nice Properties

MONA : MSO Solver[Møller, et.al. 95-]

This Work

Bwd Inference

Page 15: Graph-Transformation Verification using Monadic 2 nd -Order Logic

15

Monadic 2nd-Order LogicMSO is a usual 1st order logic on graphs …

… extended with

(primitives) edgefoo(x, e, y) start(x)(connectives) ¬ P P&Q P Q x.P(x) ∨ ∀

x.P(x)∃

(set-quantifiers) ∀setS. P(S) ∃setS.P(S)(set-primitives) x S S T∈ ⊆

Page 16: Graph-Transformation Verification using Monadic 2 nd -Order Logic

16

Schema to MSO• Straightforward

class OUTPUT { reference result*: MEM; }class MEM { reference friend*: MEM;

reference name: STRING; }

∃setOUTPUT. ∃setMEM. ( x. start(x) ∀ x OUTPUT)∈ ( x OUTPUT. e. u.∧ ∀ ∈ ∀ ∀ edge(x,e,u) edgeresult(x,e,u) & u MEM)∈ …∧

Page 17: Graph-Transformation Verification using Monadic 2 nd -Order Logic

17

Transformation to MSOQ: What do we mean by

“representing transformations in MSO”?

A: We convert UnQL’s functional core languageinto a (kind of) logic program in MSO.

edge[OUT]b (v, e, u) ⇔ ∃v’ e’ u’. edgea(v’,e’,u’) & v=v’ & e=e’ & u=e’edge[OUT]d (v, e, u) ⇔ ∃v’ e’ u’. ¬ edgea(v’,e’,u’) & v=v’ & e=e’ & u=u’…

select {result: $x}where { _*: $x}, {name: John} in $x

Page 18: Graph-Transformation Verification using Monadic 2 nd -Order Logic

18

Transformation Language• “Core UnCAL”– Internal Representation of “UnQL”

E ::= {L1:E1, L2:E2, …, Ln:En} | if L=L then E else E | $G | & | rec(λ($L,$G). E)(E) | …L ::= (label constant) | $L

select {result: $x}where { _*: $x}, {name: John} in $x

Page 19: Graph-Transformation Verification using Monadic 2 nd -Order Logic

19

Semantics of rec in UnCALrec(λ($L,$G). if $L = a then {b: {c: &}} else {d: $G})($input_graph)

1 2

a

z

if $L = a then {b: {c: &}} else {d: $G}

b

1 2

d

1 2

c

z

a

1 2

1 2Decompose toa set of edges!

b1 2

c

d1 2

a

zGlue them!

Page 20: Graph-Transformation Verification using Monadic 2 nd -Order Logic

20More Precise, MSO-Representable “Finite-Copy” Semantics

if $L = a then {b: {c: &}} else {d: $G} b

1 2

ca

1 2

1 2

Copy as needed! Glue them!

1 2

b

c

Transform towhat we want!

edge[112]b (v, e, u) ⇔∃v’ e’ u’. edgea(v’,e’,u’) & v=v’ & e=e’ & u=e’

edge[231]c(v, e, u) ⇔∃v’ e’ u’. edgea(v’,e’,u’) & v=e’ & e=e’ & u=u’

Page 21: Graph-Transformation Verification using Monadic 2 nd -Order Logic

21

“Finite-Copy” Semanticsif $L = a then {b: {c: &}}

else {d: $G}

d

1 2

z

1 2

Glue them!

2

Copy as needed!

2

dTransform towhat we want!

edge[110]d(v, e, u) ⇔ ∃v’ e’ u’. ¬ edgea(v’,e’,u’) & v=v’ & e=e’ & u=u’

Page 22: Graph-Transformation Verification using Monadic 2 nd -Order Logic

22

Transformation to MSO

Theorem:Nest-free UnCAL is representable byfinite-copying MSO transduction.

((Transformation = Definition of

the output-graph in terms of the input graph))

edge[112]b (v, e, u) ⇔ ∃v’ e’ u’. edgea(v’,e’,u’) & v=v’ & e=e’ & u=e’edge[231]c (v, e, u) ⇔ ∃v’ e’ u’. edgea(v’,e’,u’) & v=e’ & e=e’ & u=u’edge[110]d (v, e, u) ⇔ ∃v’ e’ u’. ¬ edgea(v’,e’,u’) & v=v’ & e=e’ & u=u’

rec(λ($L,$G). if $L = a then {b: {c: &}} else {d: $G})($input_db)

Page 23: Graph-Transformation Verification using Monadic 2 nd -Order Logic

23

“Backward” Inference [Courcelle 1994]

∃e. edgec(_, e, _)Output SchemaTransformation

rec(λ($L,$G). if $L = a then {b: {c: &}} else {d: $G})($input_db)

edge[112]b (v, e, u) ⇔ ∃v’ e’ u’. …

edge[231]c (v, e, u) ⇔ ∃v’ e’ u’. edgea(v’,e’,u’) & … & e=e’

edge[110]d (v, e, u) ⇔ ∃v’ e’ u’. …

∃e. edge[_0_]c (_, e, _) edge[_1_]∨ c (_, e, _) edge[_2_]∨ c (_, e, _) edge[_3_]∨ c (_, e, _)

∃e. edgea(_, e, _)InputSchema

∃e. false false∨ false∨ ∨ ∃v’ e’ u’. edgea(v’,e’,u’) & … & e=e’⇒

Page 24: Graph-Transformation Verification using Monadic 2 nd -Order Logic

24

Nested rec• Nested rec (arising from “cross product”)

cannot be encoded into finite-copy semantics

Currently we askprogrammer toadd annotation

rec(λ($L1,$G1). rec(λ($L2,$G2). {pair: {first: $G1, second: $G2}} )($db))($db)

select {p: {f: $G1, s:$G2}} where {_: $G1} in $db, {_ : $G2} in $db

rec(λ($L1,$G1). rec(λ($L2,$G2). {pair: {first: ($G1 :: MEM), second: $G2}} …

Page 25: Graph-Transformation Verification using Monadic 2 nd -Order Logic

25

Remark: Why MSO• It is expressive power is needed.– Schemas can encode runs of automata, which is

basically equivalent to MSO.– Transformation also requires MSO power, for

tracking edge-erasing.

• It can be made decidable!– In contrast to, e.g., FO+TCk that can capture

nested recs without annotation.

Page 26: Graph-Transformation Verification using Monadic 2 nd -Order Logic

26

Two Nice Props of UnCAL[Buneman et al. 2000] UnCAL is …

aUnCAL Transformation

b

・・・ ∞

a a a

Unfolding Unfolding

b c b

Bisimulation-generic

・・・ ∞

a

Cut

b c

CutCompact

c

a a

・・・

b c b c

・・・

Page 27: Graph-Transformation Verification using Monadic 2 nd -Order Logic

27

MSO ValidationNow we have a MSO Formula on Graphs.

MONA MSO Solver [Møller, et.al. 95-]can decide validness of MSO on Finite Trees.

!MSO (even 1st-Order Logic) on Graphsis undecidable [Trakhtenbrot 1950].

Theorem: If MSO formula is Bisimulation-Generic and Compact, it is valid on graphs iff on finite trees.

Page 28: Graph-Transformation Verification using Monadic 2 nd -Order Logic

28

ConclusionStatic verification of graph transformations via MSO

• Future work : – Complete checking w/o annotations.– Support for full UnCAL (with data value comparison).– Use MSO-Transduction semantics for checking other properties.– Comprehensive experiments on performance.

class OUTPUT { reference result*: MEM; }

select {result: $x}where { _*: $x}, {name: John} in $x

class INPUT { reference SNS: SNSDB; } MSO

“YES”/ “NO”+