Verified Decision Procedures for Monadic Second-Order Logic on - - PowerPoint PPT Presentation

verified decision procedures
SMART_READER_LITE
LIVE PREVIEW

Verified Decision Procedures for Monadic Second-Order Logic on - - PowerPoint PPT Presentation

Verified Decision Procedures for Monadic Second-Order Logic on Strings Functional Pearl Dmitriy Traytel Tobias Nipkow Isabelle = Overview MSO Overview MSO L MSO ( ) = L MSO ( )? Overview Finite Automata MSO


slide-1
SLIDE 1

Verified Decision Procedures

for

Monadic Second-Order Logic on Strings

Functional Pearl

Dmitriy Traytel Tobias Nipkow

λ → ∀

=

Isabelle

β α

slide-2
SLIDE 2

Overview

MSO

slide-3
SLIDE 3

Overview

MSO LMSO(ϕ) = LMSO(ψ)?

slide-4
SLIDE 4

Overview

MSO LMSO(ϕ) = LMSO(ψ)? Finite Automata

slide-5
SLIDE 5

Overview

MSO LMSO(ϕ) = LMSO(ψ)? Finite Automata

MONA (> 40 kLOC of C/C++)

slide-6
SLIDE 6

Overview

MSO LMSO(ϕ) = LMSO(ψ)? Regular Expressions Finite Automata

MONA (> 40 kLOC of C/C++)

slide-7
SLIDE 7

Overview

MSO LMSO(ϕ) = LMSO(ψ)? Regular Expressions L (α) = L (β)? Finite Automata

MONA (> 40 kLOC of C/C++)

slide-8
SLIDE 8

Overview

MSO LMSO(ϕ) = LMSO(ψ)? Regular Expressions L (α) = L (β)? LMSO(ϕ) = L (mkRE ϕ) Finite Automata

MONA (> 40 kLOC of C/C++)

slide-9
SLIDE 9

Overview

M2L WS1S LM2L(ϕ) = LM2L(ψ)? LWS1S(ϕ) = LWS1S(ψ)? Regular Expressions L (α) = L (β)? LM2L(ϕ) = L (mkREM2L ϕ) LWS1S(ϕ) = L (mkREWS1S ϕ) Finite Automata MONA

slide-10
SLIDE 10

Overview

M2L WS1S LM2L(ϕ) = LM2L(ψ)? LWS1S(ϕ) = LWS1S(ψ)? Regular Expressions L (α) = L (β)? LM2L(ϕ) = L (mkREM2L ϕ) LWS1S(ϕ) = L (mkREWS1S ϕ) Finite Automata MONA

λ → ∀ =

I s a b e l l e

β α
slide-11
SLIDE 11

Overview

M2L WS1S LM2L(ϕ) = LM2L(ψ)? LWS1S(ϕ) = LWS1S(ψ)? Regular Expressions L (α) = L (β)? LM2L(ϕ) = L (mkREM2L ϕ) LWS1S(ϕ) = L (mkREWS1S ϕ) Finite Automata MONA

λ → ∀ =

I s a b e l l e

β α
slide-12
SLIDE 12

Outline

Regular Expressions Equivalence MSO

slide-13
SLIDE 13

Outline

Regular Expressions Equivalence MSO

slide-14
SLIDE 14

Regular Expressions

L (∅) = {} L (ε) = {[]} L (a) = {[a ]}

a ∈ Σ

L (α+β) = L (α)∪L (β) L (α·β) = L (α)·L (β) L (α∗) = L (α)∗

slide-15
SLIDE 15

Extended Regular Expressions

L (∅) = {} L (ε) = {[]} L (a) = {[a ]}

a ∈ Σ

L (α+β) = L (α)∪L (β) L (α·β) = L (α)·L (β) L (α∗) = L (α)∗ L (α∩β) = L (α)∩L (β) L (¬ α) = Σ∗ \L (α)

slide-16
SLIDE 16

Π-Extended Regular Expressions

L (∅) = {} L (ε) = {[]} L (a) = {[a ]}

a ∈ Σ

L (α+β) = L (α)∪L (β) L (α·β) = L (α)·L (β) L (α∗) = L (α)∗ L (α∩β) = L (α)∩L (β) L (¬ α) = Σ∗ \L (α) L (Π α) = {

w | w ∈ L

(α)}

slide-17
SLIDE 17

Π-Extended Regular Expressions

Ln(∅) = {} Ln(ε) = {[]} Ln(a) = {[a ]}

a ∈ Σn

Ln(α+β) = Ln(α)∪Ln(β) Ln(α·β) = Ln(α)·Ln(β) Ln(α∗) = Ln(α)∗ Ln(α∩β) = Ln(α)∩Ln(β) Ln(¬ α) = Σ∗

n \Ln(α)

Ln(Π α) = {

w | w ∈ Ln+1(α)}

slide-18
SLIDE 18

Π-Extended Regular Expressions

Ln(∅) = {} Ln(ε) = {[]} Ln(a) = {[a ]}

a ∈ Σn

Ln(α+β) = Ln(α)∪Ln(β) Ln(α·β) = Ln(α)·Ln(β) Ln(α∗) = Ln(α)∗ Ln(α∩β) = Ln(α)∩Ln(β) Ln(¬ α) = Σ∗

n \Ln(α)

Ln(Π α) = {

w | w ∈ Ln+1(α)} Example Σn = {⊤, ⊥}n

  ⊤ ⊥ ⊥ ⊥ ⊤ ⊤ ⊥ ⊥ ⊤   ∈ Σ∗

3

slide-19
SLIDE 19

Π-Extended Regular Expressions

Ln(∅) = {} Ln(ε) = {[]} Ln(a) = {[a ]}

a ∈ Σn

Ln(α+β) = Ln(α)∪Ln(β) Ln(α·β) = Ln(α)·Ln(β) Ln(α∗) = Ln(α)∗ Ln(α∩β) = Ln(α)∩Ln(β) Ln(¬ α) = Σ∗

n \Ln(α)

Ln(Π α) = {

w | w ∈ Ln+1(α)} Example Σn = {⊤, ⊥}n

  ⊤ ⊥ ⊥ ⊥ ⊤ ⊤ ⊥ ⊥ ⊤   ∈ Σ∗

2

slide-20
SLIDE 20

Π-Extended Regular Expressions

Ln(∅) = {} Ln(ε) = {[]} Ln(a) = {[a ]}

a ∈ Σn

Ln(α+β) = Ln(α)∪Ln(β) Ln(α·β) = Ln(α)·Ln(β) Ln(α∗) = Ln(α)∗ Ln(α∩β) = Ln(α)∩Ln(β) Ln(¬ α) = Σ∗

n \Ln(α)

Ln(Π α) = {map π w | w ∈ Ln+1(α)} π : Σn+1 → Σn

Example Σn = {⊤, ⊥}n

  ⊤ ⊥ ⊥ ⊥ ⊤ ⊤ ⊥ ⊥ ⊤   ∈ Σ∗

2

π = tail π−1a = {⊤a, ⊥a}

slide-21
SLIDE 21

Derivatives of Regular Expressions

Characteristic property Ln(Da(α)) = {w | aw ∈ Ln(α)}

slide-22
SLIDE 22

Derivatives of Regular Expressions

Characteristic property Ln(Da(α)) = {w | aw ∈ Ln(α)}

Da(∅) = ∅ Da(ε) = ∅ Da(b) = if a = b then ε else ∅ Da(α+β) = Da(α)+Da(β) Da(α·β) = if ε ∈ L (α) then Da(α)·β+Da(β) else Da(α)·β Da(α∗) = Da(α)·α∗ Da(α∩β) = Da(α)∩Da(β) Da(¬ α) = ¬ Da(α)

slide-23
SLIDE 23

Derivatives of Regular Expressions

Characteristic property Ln(Da(α)) = {w | aw ∈ Ln(α)}

Da(∅) = ∅ Da(ε) = ∅ Da(b) = if a = b then ε else ∅ Da(α+β) = Da(α)+Da(β) Da(α·β) = if ε ∈ L (α) then Da(α)·β+Da(β) else Da(α)·β Da(α∗) = Da(α)·α∗ Da(α∩β) = Da(α)∩Da(β) Da(¬ α) = ¬ Da(α) Da(Π α) = Π

  • b∈π−1a

Db(α)

slide-24
SLIDE 24

DP by Example: a∗ ?

≡ ε+ a· a∗ for Σ = {a,b}

a∗

ε+ a· a∗

slide-25
SLIDE 25

DP by Example: a∗ ?

≡ ε+ a· a∗ for Σ = {a,b}

a∗

ε+ a· a∗ ε· a∗ ∅+ε· a∗ Da

slide-26
SLIDE 26

DP by Example: a∗ ?

≡ ε+ a· a∗ for Σ = {a,b}

a∗

ε+ a· a∗ ε· a∗ ∅+ε· a∗ ∅· a∗ ∅+∅· a∗ Da Db

slide-27
SLIDE 27

DP by Example: a∗ ?

≡ ε+ a· a∗ for Σ = {a,b}

a∗

ε+ a· a∗ ε· a∗ ∅+ε· a∗ ∅· a∗ +ε· a∗ ∅+∅· a∗ +ε· a∗ ∅· a∗ ∅+∅· a∗ Da Da Db

slide-28
SLIDE 28

DP by Example: a∗ ?

≡ ε+ a· a∗ for Σ = {a,b}

a∗

ε+ a· a∗ ε· a∗ ∅+ε· a∗ ∅· a∗ +ε· a∗ ∅+∅· a∗ +ε· a∗ ∅· a∗ +∅· a∗ +ε· a∗ ∅+∅· a∗ +∅· a∗ +ε· a∗ ∅· a∗ ∅+∅· a∗ Da Da Da Db

slide-29
SLIDE 29

DP by Example: a∗ ?

≡ ε+ a· a∗ for Σ = {a,b}

a∗

ε+ a· a∗ ε· a∗ ∅+ε· a∗ ∅· a∗ +ε· a∗ ∅+∅· a∗ +ε· a∗ ∅· a∗ +∅· a∗ +ε· a∗ ∅+∅· a∗ +∅· a∗ +ε· a∗ ∅· a∗ ∅+∅· a∗ Da Da Da

ACI

Db

slide-30
SLIDE 30

DP by Example: a∗ ?

≡ ε+ a· a∗ for Σ = {a,b}

a∗

ε+ a· a∗ ε· a∗ ∅+ε· a∗ ∅· a∗ +ε· a∗ ∅+∅· a∗ +ε· a∗ ∅· a∗ +∅· a∗ +ε· a∗ ∅+∅· a∗ +∅· a∗ +ε· a∗ ∅· a∗ ∅+∅· a∗ ∅· a∗ +∅· a∗ ∅+∅· a∗ +∅· a∗ Da Da Da

ACI

Db Db

slide-31
SLIDE 31

DP by Example: a∗ ?

≡ ε+ a· a∗ for Σ = {a,b}

a∗

ε+ a· a∗ ε· a∗ ∅+ε· a∗ ∅· a∗ +ε· a∗ ∅+∅· a∗ +ε· a∗ ∅· a∗ +∅· a∗ +ε· a∗ ∅+∅· a∗ +∅· a∗ +ε· a∗ ∅· a∗ ∅+∅· a∗ ∅· a∗ +∅· a∗ ∅+∅· a∗ +∅· a∗ Da Da Da

ACI

Db Db

ACI

slide-32
SLIDE 32

DP by Example: a∗ ?

≡ ε+ a· a∗ for Σ = {a,b}

a∗

ε+ a· a∗ ε· a∗ ∅+ε· a∗ ∅· a∗ +ε· a∗ ∅+∅· a∗ +ε· a∗ ∅· a∗ +∅· a∗ +ε· a∗ ∅+∅· a∗ +∅· a∗ +ε· a∗ ∅· a∗ ∅+∅· a∗ ∅· a∗ +∅· a∗ ∅+∅· a∗ +∅· a∗ Da Da Da

ACI

Db Db

ACI

Da Db

slide-33
SLIDE 33

DP by Example: a∗ ?

≡ ε+ a· a∗ for Σ = {a,b}

a∗

ε+ a· a∗ ε· a∗ ∅+ε· a∗ ∅· a∗ +ε· a∗ ∅+∅· a∗ +ε· a∗ ∅· a∗ +∅· a∗ +ε· a∗ ∅+∅· a∗ +∅· a∗ +ε· a∗ ∅· a∗ ∅+∅· a∗ ∅· a∗ +∅· a∗ ∅+∅· a∗ +∅· a∗ ∅· a∗ +∅· a∗ +∅· a∗ ∅+∅· a∗ +∅· a∗ +∅· a∗ Da Da Da

ACI

Db Db Db

ACI

Da Db

slide-34
SLIDE 34

DP by Example: a∗ ?

≡ ε+ a· a∗ for Σ = {a,b}

a∗

ε+ a· a∗ ε· a∗ ∅+ε· a∗ ∅· a∗ +ε· a∗ ∅+∅· a∗ +ε· a∗ ∅· a∗ +∅· a∗ +ε· a∗ ∅+∅· a∗ +∅· a∗ +ε· a∗ ∅· a∗ ∅+∅· a∗ ∅· a∗ +∅· a∗ ∅+∅· a∗ +∅· a∗ ∅· a∗ +∅· a∗ +∅· a∗ ∅+∅· a∗ +∅· a∗ +∅· a∗ Da Da Da

ACI

Db Db Db

ACI ACI

Da Db

slide-35
SLIDE 35

DP by Example: a∗ ?

≡ ε+ a· a∗ for Σ = {a,b}

a∗

ε+ a· a∗ ε· a∗ ∅+ε· a∗ ∅· a∗ +ε· a∗ ∅+∅· a∗ +ε· a∗ ∅· a∗ +∅· a∗ +ε· a∗ ∅+∅· a∗ +∅· a∗ +ε· a∗ ∅· a∗ ∅+∅· a∗ ∅· a∗ +∅· a∗ ∅+∅· a∗ +∅· a∗ ∅· a∗ +∅· a∗ +∅· a∗ ∅+∅· a∗ +∅· a∗ +∅· a∗ Da Da Da

ACI

Db Db Db

ACI ACI

Da Db

slide-36
SLIDE 36

DP by Example: a∗ ?

≡ ε+ a· a∗ for Σ = {a,b}

a∗

ε+ a· a∗ ε· a∗ ∅+ε· a∗ ∅· a∗ +ε· a∗ ∅+∅· a∗ +ε· a∗ ∅· a∗ ∅+∅· a∗ ∅· a∗ +∅· a∗ ∅+∅· a∗ +∅· a∗ Da Da Db Db Da Db

a∗ a∗

∅ ∅

EQ EQ EQ EQ

slide-37
SLIDE 37

Related Work

  • Theoretical groundwork

JACM 1964 Brzozowski CONCUR 1998 Rutten

slide-38
SLIDE 38

Related Work

  • Theoretical groundwork

JACM 1964 Brzozowski CONCUR 1998 Rutten

  • FP community

JFP 2009 Owens, Reppy, and Turon ICFP 2010 Fischer, Huch, and Wilke ICFP 2010 Danielsson ICFP 2011 Might, Darais, and Spiewak

slide-39
SLIDE 39

Related Work

  • Theoretical groundwork

JACM 1964 Brzozowski CONCUR 1998 Rutten

  • FP community

JFP 2009 Owens, Reppy, and Turon ICFP 2010 Fischer, Huch, and Wilke ICFP 2010 Danielsson ICFP 2011 Might, Darais, and Spiewak

  • ITP community

ITP 2010 Braibant and Pous JAR 2011 Krauss and Nipkow CPP 2011 Coquand and Siles ITP 2012 Asperti RAMiCS 2012 Moreira, Pereira, and de Sousa

slide-40
SLIDE 40

Outline

Regular Expressions Equivalence MSO

slide-41
SLIDE 41

MSO Formulas

formula

=

Qa(x)

|

x < y

|

x ∈ X

| ¬ formula |

formula ∨ formula

|

formula ∧ formula

| ∃x.formula | ∃X.formula

slide-42
SLIDE 42

MSO Formulas

formula

=

Qa(x)

|

x < y

|

x ∈ X

| ¬ formula |

formula ∨ formula

|

formula ∧ formula

| ∃x.formula | ∃X.formula (w,I) Qa(x) ⇔ w !! I x = a

slide-43
SLIDE 43

MSO Formulas

formula

=

Qa(x)

|

x < y

|

x ∈ X

| ¬ formula |

formula ∨ formula

|

formula ∧ formula

| ∃x.formula | ∃X.formula (w,I) Qa(x) ⇔ w !! I x = a LM2L(ϕ) = {enc(w,I) | (w,I) ϕ}

slide-44
SLIDE 44

Representation of Interpretations as Words

(w = aba, I = {x → 0, X → {1,2}, y → 2})

slide-45
SLIDE 45

Representation of Interpretations as Words

(w = aba, I = {x → 0, X → {1,2}, y → 2})

x X y

   

a b a

⊤ ⊥ ⊥ ⊥ ⊤ ⊤ ⊥ ⊥ ⊤    

enc

Σn =Σ×{⊤, ⊥}n

slide-46
SLIDE 46

Representation of Interpretations as Words

(w = aba, I = {x → 0, X → {1,2}, y → 2})

x X y

   

a b a

⊤ ⊥ ⊥ ⊥ ⊤ ⊤ ⊥ ⊥ ⊤    

enc

Σn =Σ×{⊤, ⊥}n π (a, bs) = (a, tail bs) π−1(a, bs) = {(a, ⊤bs), (a, ⊥bs)}

slide-47
SLIDE 47

From MSO Formulas to Regular Expressions

mkRE n (Qa(m)) =

Σ∗

n ·

   

a

⊤/⊥

⊤/⊥

   ·Σ∗

n ∩ WF n {m}

slide-48
SLIDE 48

From MSO Formulas to Regular Expressions

mkRE n (Qa(m)) =

Σ∗

n ·

   

a

⊤/⊥

⊤/⊥

   ·Σ∗

n ∩ WF n {m}

. . .

mkRE n (ϕ1 ∨ϕ2) = (mkRE n ϕ1 + mkRE n ϕ2) ∩ WF n (FV (ϕ1 ∨ϕ2))

slide-49
SLIDE 49

From MSO Formulas to Regular Expressions

mkRE n (Qa(m)) =

Σ∗

n ·

   

a

⊤/⊥

⊤/⊥

   ·Σ∗

n ∩ WF n {m}

. . .

mkRE n (ϕ1 ∨ϕ2) = (mkRE n ϕ1 + mkRE n ϕ2) ∩ WF n (FV (ϕ1 ∨ϕ2))

. . .

mkRE n (∃x.ϕ) =

Π (mkRE (n + 1) ϕ)

mkRE n (∃X.ϕ) =

Π (mkRE (n + 1) ϕ)

slide-50
SLIDE 50

From MSO Formulas to Regular Expressions

mkRE n (Qa(m)) =

Σ∗

n ·

   

a

⊤/⊥

⊤/⊥

   ·Σ∗

n

. . .

mkRE n (ϕ1 ∨ϕ2) = mkRE n ϕ1 + mkRE n ϕ2

. . .

mkRE n (∃x.ϕ) =

Π (mkRE (n + 1) ϕ ∩ WF (n + 1) {x})

mkRE n (∃X.ϕ) =

Π (mkRE (n + 1) ϕ)

slide-51
SLIDE 51

From MSO Formulas to Regular Expressions

mkRE n (Qa(m)) =

Σ∗

n ·

   

a

⊤/⊥

⊤/⊥

   ·Σ∗

n

. . .

mkRE n (ϕ1 ∨ϕ2) = mkRE n ϕ1 + mkRE n ϕ2

. . .

mkRE n (∃x.ϕ) =

Π (mkRE (n + 1) ϕ ∩ WF (n + 1) {x})

mkRE n (∃X.ϕ) =

Π (mkRE (n + 1) ϕ)

Theorem

LM2L(ϕ) = Ln(mkRE n ϕ ∩ WF n (FV ϕ))−{ε}

slide-52
SLIDE 52

Head to Head

M2L WS1S Regular Expressions Finite Automata MONA

λ → ∀

=

Isabelle

β α

slide-53
SLIDE 53

Head to Head

M2L WS1S Regular Expressions Finite Automata MONA

λ → ∀

=

Isabelle

β α

efficient

slide-54
SLIDE 54

Head to Head

M2L WS1S Regular Expressions Finite Automata MONA

λ → ∀

=

Isabelle

β α

efficient unverified

slide-55
SLIDE 55

Head to Head

M2L WS1S Regular Expressions Finite Automata MONA

λ → ∀

=

Isabelle

β α

efficient unverified 40 kLOC

slide-56
SLIDE 56

Head to Head

M2L WS1S Regular Expressions Finite Automata MONA

λ → ∀

=

Isabelle

β α

efficient unverified 40 kLOC 40 kLOC of C/C++

slide-57
SLIDE 57

Head to Head

M2L WS1S Regular Expressions Finite Automata MONA

λ → ∀

=

Isabelle

β α

efficient unverified 40 kLOC 40 kLOC of C/C++ inefficient

slide-58
SLIDE 58

Head to Head

M2L WS1S Regular Expressions Finite Automata MONA

λ → ∀

=

Isabelle

β α

efficient unverified 40 kLOC 40 kLOC of C/C++ inefficient simple: 350 LOC of

Isabelle/HOL

slide-59
SLIDE 59

Head to Head

M2L WS1S Regular Expressions Finite Automata MONA

λ → ∀

=

Isabelle

β α

efficient unverified 40 kLOC 40 kLOC of C/C++ inefficient simple: 350 LOC of

Isabelle/HOL

functional: 2,5 kLOC of

generated Haskell

slide-60
SLIDE 60

Head to Head

M2L WS1S Regular Expressions Finite Automata MONA

λ → ∀

=

Isabelle

β α

efficient unverified 40 kLOC 40 kLOC of C/C++ inefficient simple: 350 LOC of

Isabelle/HOL

functional: 2,5 kLOC of

generated Haskell

sound, complete, and

terminating: 5 kLOP

slide-61
SLIDE 61

Head to Head

M2L WS1S Regular Expressions Finite Automata MONA

λ → ∀

=

Isabelle

β α

efficient unverified 40 kLOC 40 kLOC of C/C++ inefficient simple: 350 LOC of

Isabelle/HOL

functional: 2,5 kLOC of

generated Haskell

sound, complete, and

terminating: 5 kLOP

Thanks for listening!

slide-62
SLIDE 62

Verified Decision Procedures

for

Monadic Second-Order Logic on Strings

Functional Pearl

Dmitriy Traytel Tobias Nipkow

λ → ∀

=

Isabelle

β α