Tree Transformations by means of visibly pushdown transducers - - PowerPoint PPT Presentation

tree transformations by means of visibly pushdown
SMART_READER_LITE
LIVE PREVIEW

Tree Transformations by means of visibly pushdown transducers - - PowerPoint PPT Presentation

Tree Transformations by means of visibly pushdown transducers Jean-Marc Talbot Joint Work L. Dartois 1 , E. Filiot 1 , P.-A. Reynier 2 1 Universit Libre de Bruxelles 2 Universit dAix-Marseille CAALM - Jan 2019 Tree Transformations by


slide-1
SLIDE 1

Tree Transformations by means of visibly pushdown transducers

Jean-Marc Talbot Joint Work L. Dartois 1, E. Filiot 1, P.-A. Reynier 2

1Université Libre de Bruxelles 2Université d’Aix-Marseille

CAALM - Jan 2019

Tree Transformations by means of VPT CAALM - Jan 2019 1 / 34

slide-2
SLIDE 2

Outline

1 Trees as Well-nested Words 2 Tree to Word Transformations 3 Tree to Tree Transformations 4 A new Tool : (Two-way) Visibly Pushdown Parikh Automata

Tree Transformations by means of VPT CAALM - Jan 2019 2 / 34

slide-3
SLIDE 3

Outline

1 Trees as Well-nested Words

Tree Transformations by means of VPT CAALM - Jan 2019 3 / 34

slide-4
SLIDE 4

Well-nested words for trees : an example

Encoding

Linearizations of (unranked) trees ⊆ Well-nested words

family person birth name children person birth name Marie Curie 1867 Irene 1897

< family > < person > < name > MarieCurie < \name > < birth > 1867 < \birth > < children > < name > Irene < \name > < birth > 1897 < \birth > < \children > < \person > < \family >

Tree Transformations by means of VPT CAALM - Jan 2019 4 / 34

slide-5
SLIDE 5

Well-nested words for trees

Definition (Structured Alphabet)

A structured alphabet Σ is a set Σ = Σc ⊎Σr (call and return symbols resp.).

Definition (Well-nested Words)

A word is well-nested if it is generated by the following grammar W → ǫ | WW | ciW rj ci ∈ Σc,rj ∈ Σr

Σ∗

wn is the set of all well-nested words.

Tree Transformations by means of VPT CAALM - Jan 2019 5 / 34

slide-6
SLIDE 6

Well-nested words for trees

Definition (Structured Alphabet)

A structured alphabet Σ is a set Σ = Σc ⊎Σr (call and return symbols resp.).

Definition (Well-nested Words)

A word is well-nested if it is generated by the following grammar W → ǫ | WW | ciW rj ci ∈ Σc,rj ∈ Σr

Σ∗

wn is the set of all well-nested words.

Induces a matching relation c1 c2 r2 r1 c1 r2

Tree Transformations by means of VPT CAALM - Jan 2019 5 / 34

slide-7
SLIDE 7

Visibly Pushdown Automata (VPAs) [Alur,Madhusudan,04]

VPAs = Pushdown Automata running on on a structured alphabet Σ = Σc ⊎Σr: whose behavior is driven by the input

push one stack symbol on call symbols Σc pop one stack symbol on return symbols Σr

accept on empty stack and final state (accepted ⊆ Σ∗

wn) (in this talk)

q0 q1 c,+γ1 c,+γ2 r1,−γ1 r1,−γ1 r2,−γ2 L(A) = {cn ·r1 ·(r1 +r2)n−1 | n > 0}.

Tree Transformations by means of VPT CAALM - Jan 2019 6 / 34

slide-8
SLIDE 8

MSO for nested words

Logical Structure of Nested Words : c1 c2 r2 r1 c1 r2 succ succ succ succ succ M M M MSOnw formulas : laba(x) | succ(x,y) | M(x,y) | ∃x.ϕ | ∃X.ϕ | ϕ∨ϕ | ¬ϕ

Theorem [Alur,Madhusudan,04]

MSOnw definable languages ≡ VPA definable languages.

Tree Transformations by means of VPT CAALM - Jan 2019 7 / 34

slide-9
SLIDE 9

Two-way VPA (2VPA) [Madhusudan,Viswanathan,09]

Main features : directed states Q ×{←,→} (→ : read the symbol on the right, ...) Behaviour wrt the stack:

Forward (→): just as VPA Backward (←): dually, pop on call and push on return

c1 (q,→)

γ

c2 r2 r1 c1 r2

  • (q,→)

c2,+γ

− → (q,→)

(q,→)

r2,−γ

− → (q′,←)

(q′,←)

r2,+γ′′

− → (q′′,→)

(q′′,→)

r2,−γ′′

− → (q′,→)

Tree Transformations by means of VPT CAALM - Jan 2019 8 / 34

slide-10
SLIDE 10

Two-way VPA (2VPA) [Madhusudan,Viswanathan,09]

Main features : directed states Q ×{←,→} (→ : read the symbol on the right, ...) Behaviour wrt the stack:

Forward (→): just as VPA Backward (←): dually, pop on call and push on return

c1 c2 (q,→)

γγ

r2 r1 c1 r2

(q,→)

c2,+γ

− → (q,→)

  • (q,→)

r2,−γ

− → (q′,←)

(q′,←)

r2,+γ′′

− → (q′′,→)

(q′′,→)

r2,−γ′′

− → (q′,→)

Tree Transformations by means of VPT CAALM - Jan 2019 8 / 34

slide-11
SLIDE 11

Two-way VPA (2VPA) [Madhusudan,Viswanathan,09]

Main features : directed states Q ×{←,→} (→ : read the symbol on the right, ...) Behaviour wrt the stack:

Forward (→): just as VPA Backward (←): dually, pop on call and push on return

c1 c2 r2 (q′,←)

γ

r1 c1 r2

(q,→)

c2,+γ

− → (q,→)

(q,→)

r2,−γ

− → (q′,←)

  • (q′,←)

r2,+γ′′

− → (q′′,→)

(q′′,→)

r2,−γ′′

− → (q′,→)

Tree Transformations by means of VPT CAALM - Jan 2019 8 / 34

slide-12
SLIDE 12

Two-way VPA (2VPA) [Madhusudan,Viswanathan,09]

Main features : directed states Q ×{←,→} (→ : read the symbol on the right, ...) Behaviour wrt the stack:

Forward (→): just as VPA Backward (←): dually, pop on call and push on return

c1 c2 (q′′,→)

γγ′′

r2 r1 c1 r2

(q,→)

c2,+γ

− → (q,→)

(q,→)

r2,−γ

− → (q′,←)

(q′,←)

r2,+γ′′

− → (q′′,→)

  • (q′′,→)

r2,−γ′′

− → (q′,→)

Tree Transformations by means of VPT CAALM - Jan 2019 8 / 34

slide-13
SLIDE 13

Two-way VPA (2VPA) [Madhusudan,Viswanathan,09]

Main features : directed states Q ×{←,→} (→ : read the symbol on the right, ...) Behaviour wrt the stack:

Forward (→): just as VPA Backward (←): dually, pop on call and push on return

c1 c2 r2 (q′,→)

γ

r1 c1 r2

(q,→)

c2,+γ

− → (q,→)

(q,→)

r2,−γ

− → (q′,←)

(q′,←)

r2,+γ′′

− → (q′′,→)

(q′′,→)

r2,−γ′′

− → (q′,→)

Theorem

2VPA are as expressive as VPA.

Tree Transformations by means of VPT CAALM - Jan 2019 8 / 34

slide-14
SLIDE 14

Tree Transformations

Transformation : T , a function from Σ∗

wn to Γ∗

Tree Transformations by means of VPT CAALM - Jan 2019 9 / 34

slide-15
SLIDE 15

Tree Transformations

Transformation : T , a function from Σ∗

wn to Γ∗

a transducer T = (A,O) extends automata A with an output mechanism O mapping transitions of A to words from Γ∗.

Tree Transformations by means of VPT CAALM - Jan 2019 9 / 34

slide-16
SLIDE 16

Tree Transformations

Transformation : T , a function from Σ∗

wn to Γ∗

a transducer T = (A,O) extends automata A with an output mechanism O mapping transitions of A to words from Γ∗. MSO transformations (à la Courcelle) : a set of MSO formulas interpreted on a fixed number of copies of the input structure defining the predicates of some output structure.

Tree Transformations by means of VPT CAALM - Jan 2019 9 / 34

slide-17
SLIDE 17

Tree Transformations

Transformation : T , a function from Σ∗

wn to Γ∗

a transducer T = (A,O) extends automata A with an output mechanism O mapping transitions of A to words from Γ∗. MSO transformations (à la Courcelle) : a set of MSO formulas interpreted on a fixed number of copies of the input structure defining the predicates of some output structure. Interesting properties : Expressiveness Type-checking problem : T(LI) ⊆ LO Closure by composition (when possible)

Tree Transformations by means of VPT CAALM - Jan 2019 9 / 34

slide-18
SLIDE 18

Outline

2 Tree to word Transformations

Tree Transformations by means of VPT CAALM - Jan 2019 10 / 34

slide-19
SLIDE 19

2-way Visibly Pushdown Transducers (2VPT)

0,→ 1,→ 2,→ 3,← 4,← 5,← 6,← Acc

ci,+1 ci,+0 ri,−0 ri,−0 ri,−1 ri,+1 ri,+1 ri,+0 ci,−0 ci,−0 ci,−1 ri,−1 Input Tape: Output Tape:

c1 c2 c3 r3 r2 r1

(0,→) stack

Tree Transformations by means of VPT CAALM - Jan 2019 11 / 34

slide-20
SLIDE 20

2-way Visibly Pushdown Transducers (2VPT)

0,→ 1,→ 2,→ 3,← 4,← 5,← 6,← Acc

ci,+1|ci ci,+0|ǫ ri,−0|ǫ ri,−0|ǫ ri,−1|ri ri,+1|ǫ ri,+1|ǫ ri,+0|ǫ ci,−0|ǫ ci,−0|ǫ ci,−1|ǫ ri,−1|ri Input Tape: Output Tape:

c1 c2 c3 r3 r2 r1

(0,→) stack

Tree Transformations by means of VPT CAALM - Jan 2019 11 / 34

slide-21
SLIDE 21

2-way Visibly Pushdown Transducers (2VPT)

0,→ 1,→ 2,→ 3,← 4,← 5,← 6,← Acc

ci,+1|ci ci,+0|ǫ ri,−0|ǫ ri,−0|ǫ ri,−1|ri ri,+1|ǫ ri,+1|ǫ ri,+0|ǫ ci,−0|ǫ ci,−0|ǫ ci,−1|ǫ ri,−1|ri Input Tape: Output Tape:

c1 c2 c3 r3 r2 r1

c1 (1,→) stack

1

Tree Transformations by means of VPT CAALM - Jan 2019 11 / 34

slide-22
SLIDE 22

2-way Visibly Pushdown Transducers (2VPT)

0,→ 1,→ 2,→ 3,← 4,← 5,← 6,← Acc

ci,+1|ci ci,+0|ǫ ri,−0|ǫ ri,−0|ǫ ri,−1|ri ri,+1|ǫ ri,+1|ǫ ri,+0|ǫ ci,−0|ǫ ci,−0|ǫ ci,−1|ǫ ri,−1|ri Input Tape: Output Tape:

c1 c2 c3 r3 r2 r1

c1 (1,→) stack

1

Tree Transformations by means of VPT CAALM - Jan 2019 11 / 34

slide-23
SLIDE 23

2-way Visibly Pushdown Transducers (2VPT)

0,→ 1,→ 2,→ 3,← 4,← 5,← 6,← Acc

ci,+1|ci ci,+0|ǫ ri,−0|ǫ ri,−0|ǫ ri,−1|ri ri,+1|ǫ ri,+1|ǫ ri,+0|ǫ ci,−0|ǫ ci,−0|ǫ ci,−1|ǫ ri,−1|ri Input Tape: Output Tape:

c1 c2 c3 r3 r2 r1

c1 (1,→) stack

1

Tree Transformations by means of VPT CAALM - Jan 2019 11 / 34

slide-24
SLIDE 24

2-way Visibly Pushdown Transducers (2VPT)

0,→ 1,→ 2,→ 3,← 4,← 5,← 6,← Acc

ci,+1|ci ci,+0|ǫ ri,−0|ǫ ri,−0|ǫ ri,−1|ri ri,+1|ǫ ri,+1|ǫ ri,+0|ǫ ci,−0|ǫ ci,−0|ǫ ci,−1|ǫ ri,−1|ri Input Tape: Output Tape:

c1 c2 c3 r3 r2 r1

c1 (2,→) stack

1

Tree Transformations by means of VPT CAALM - Jan 2019 11 / 34

slide-25
SLIDE 25

2-way Visibly Pushdown Transducers (2VPT)

0,→ 1,→ 2,→ 3,← 4,← 5,← 6,← Acc

ci,+1|ci ci,+0|ǫ ri,−0|ǫ ri,−0|ǫ ri,−1|ri ri,+1|ǫ ri,+1|ǫ ri,+0|ǫ ci,−0|ǫ ci,−0|ǫ ci,−1|ǫ ri,−1|ri Input Tape: Output Tape:

c1 c2 c3 r3 r2 r1

c1 (2,→) stack

1

Tree Transformations by means of VPT CAALM - Jan 2019 11 / 34

slide-26
SLIDE 26

2-way Visibly Pushdown Transducers (2VPT)

0,→ 1,→ 2,→ 3,← 4,← 5,← 6,← Acc

ci,+1|ci ci,+0|ǫ ri,−0|ǫ ri,−0|ǫ ri,−1|ri ri,+1|ǫ ri,+1|ǫ ri,+0|ǫ ci,−0|ǫ ci,−0|ǫ ci,−1|ǫ ri,−1|ri Input Tape: Output Tape:

c1 c2 c3 r3 r2 r1

c1 r1 (3,←) stack

Tree Transformations by means of VPT CAALM - Jan 2019 11 / 34

slide-27
SLIDE 27

2-way Visibly Pushdown Transducers (2VPT)

0,→ 1,→ 2,→ 3,← 4,← 5,← 6,← Acc

ci,+1|ci ci,+0|ǫ ri,−0|ǫ ri,−0|ǫ ri,−1|ri ri,+1|ǫ ri,+1|ǫ ri,+0|ǫ ci,−0|ǫ ci,−0|ǫ ci,−1|ǫ ri,−1|ri Input Tape: Output Tape:

c1 c2 c3 r3 r2 r1

c1 r1 (4,←) stack

1

Tree Transformations by means of VPT CAALM - Jan 2019 11 / 34

slide-28
SLIDE 28

2-way Visibly Pushdown Transducers (2VPT)

0,→ 1,→ 2,→ 3,← 4,← 5,← 6,← Acc

ci,+1|ci ci,+0|ǫ ri,−0|ǫ ri,−0|ǫ ri,−1|ri ri,+1|ǫ ri,+1|ǫ ri,+0|ǫ ci,−0|ǫ ci,−0|ǫ ci,−1|ǫ ri,−1|ri Input Tape: Output Tape:

c1 c2 c3 r3 r2 r1

c1 r1 (5,←) stack

1 1

Tree Transformations by means of VPT CAALM - Jan 2019 11 / 34

slide-29
SLIDE 29

2-way Visibly Pushdown Transducers (2VPT)

0,→ 1,→ 2,→ 3,← 4,← 5,← 6,← Acc

ci,+1|ci ci,+0|ǫ ri,−0|ǫ ri,−0|ǫ ri,−1|ri ri,+1|ǫ ri,+1|ǫ ri,+0|ǫ ci,−0|ǫ ci,−0|ǫ ci,−1|ǫ ri,−1|ri Input Tape: Output Tape:

c1 c2 c3 r3 r2 r1

c1 r1 (5,←) stack

1 1

Tree Transformations by means of VPT CAALM - Jan 2019 11 / 34

slide-30
SLIDE 30

2-way Visibly Pushdown Transducers (2VPT)

0,→ 1,→ 2,→ 3,← 4,← 5,← 6,← Acc

ci,+1|ci ci,+0|ǫ ri,−0|ǫ ri,−0|ǫ ri,−1|ri ri,+1|ǫ ri,+1|ǫ ri,+0|ǫ ci,−0|ǫ ci,−0|ǫ ci,−1|ǫ ri,−1|ri Input Tape: Output Tape:

c1 c2 c3 r3 r2 r1

c1 r1 (6,←) stack

1 1

Tree Transformations by means of VPT CAALM - Jan 2019 11 / 34

slide-31
SLIDE 31

2-way Visibly Pushdown Transducers (2VPT)

0,→ 1,→ 2,→ 3,← 4,← 5,← 6,← Acc

ci,+1|ci ci,+0|ǫ ri,−0|ǫ ri,−0|ǫ ri,−1|ri ri,+1|ǫ ri,+1|ǫ ri,+0|ǫ ci,−0|ǫ ci,−0|ǫ ci,−1|ǫ ri,−1|ri Input Tape: Output Tape:

c1 c2 c3 r3 r2 r1

c1 r1 (0,→) stack

1

Tree Transformations by means of VPT CAALM - Jan 2019 11 / 34

slide-32
SLIDE 32

2-way Visibly Pushdown Transducers (2VPT)

0,→ 1,→ 2,→ 3,← 4,← 5,← 6,← Acc

ci,+1|ci ci,+0|ǫ ri,−0|ǫ ri,−0|ǫ ri,−1|ri ri,+1|ǫ ri,+1|ǫ ri,+0|ǫ ci,−0|ǫ ci,−0|ǫ ci,−1|ǫ ri,−1|ri Input Tape: Output Tape:

c1 c2 c3 r3 r2 r1

c1 r1 c2 (1,→) stack

1 1

Tree Transformations by means of VPT CAALM - Jan 2019 11 / 34

slide-33
SLIDE 33

2-way Visibly Pushdown Transducers (2VPT)

0,→ 1,→ 2,→ 3,← 4,← 5,← 6,← Acc

ci,+1|ci ci,+0|ǫ ri,−0|ǫ ri,−0|ǫ ri,−1|ri ri,+1|ǫ ri,+1|ǫ ri,+0|ǫ ci,−0|ǫ ci,−0|ǫ ci,−1|ǫ ri,−1|ri Input Tape: Output Tape:

c1 c2 c3 r3 r2 r1

c1 r1 c2

...

(1,→) stack

1 1

Tree Transformations by means of VPT CAALM - Jan 2019 11 / 34

slide-34
SLIDE 34

2-way Visibly Pushdown Transducers (2VPT)

0,→ 1,→ 2,→ 3,← 4,← 5,← 6,← Acc Acc

ci,+1|ci ci,+0|ǫ ri,−0|ǫ ri,−0|ǫ ri,−1|ri ri,+1|ǫ ri,+1|ǫ ri,+0|ǫ ci,−0|ǫ ci,−0|ǫ ci,−1|ǫ ri,−1|ri Input Tape: Output Tape:

c1 c2 c3 r3 r2 r1

c1 r1 c2 r2 c3 r3 stack

Tree Transformations by means of VPT CAALM - Jan 2019 11 / 34

slide-35
SLIDE 35

MSO[nw2w] transduction

c1 c2 c3 r3 r2 r1 succ succ succ succ succ M M M

Tree Transformations by means of VPT CAALM - Jan 2019 12 / 34

slide-36
SLIDE 36

MSO[nw2w] transduction

c1 c2 c3 r3 r2 r1 succ succ succ succ succ M M M succ

φlaba(x) ≡

laba(x)

φsucc(x,y) ≡

  • i,j(labci(x)∧M(x,y))∨(labrj(x)∧∃z M(z,x)∧succ(z,y))

Tree Transformations by means of VPT CAALM - Jan 2019 12 / 34

slide-37
SLIDE 37

MSO[nw2w] transduction

c1 c2 c3 r3 r2 r1 succ succ succ succ succ M M M succ succ

φlaba(x) ≡

laba(x)

φsucc(x,y) ≡

  • i,j(labci(x)∧M(x,y))∨(labrj(x)∧∃z M(z,x)∧succ(z,y))

Tree Transformations by means of VPT CAALM - Jan 2019 12 / 34

slide-38
SLIDE 38

MSO[nw2w] transduction

c1 c2 c3 r3 r2 r1 succ succ succ succ succ M M M

succ succ succ

succ succ

φlaba(x) ≡

laba(x)

φsucc(x,y) ≡

  • i,j(labci(x)∧M(x,y))∨(labrj(x)∧∃z M(z,x)∧succ(z,y))

Tree Transformations by means of VPT CAALM - Jan 2019 12 / 34

slide-39
SLIDE 39

Comparing expressiveness

MSO[nw2w] transductions are linear size increase, as "a fixed number of copies" of the input structure

Tree Transformations by means of VPT CAALM - Jan 2019 13 / 34

slide-40
SLIDE 40

Comparing expressiveness

MSO[nw2w] transductions are linear size increase, as "a fixed number of copies" of the input structure but (deterministic) 2VPT (D2VPT) are not.

0,→ 1,→ 2,→ 3,← 4,← 5,← 6,← Acc

ci,+1|a ci,+0|a ri,−0|a ri,−0|a ri,−1|a ri,+1|a ri,+1|a ri,+0|a ci,−0|a ci,−0|a ci,−1|a ri,−1|a

|T(cnrn)| = O(n2)

Tree Transformations by means of VPT CAALM - Jan 2019 13 / 34

slide-41
SLIDE 41

Single-use Property

Definition (Single-use restriction)

A D2VPT is single-use (D2VPTsu) if in any accepting run, any producing transition occur at most once at a given position.

Tree Transformations by means of VPT CAALM - Jan 2019 14 / 34

slide-42
SLIDE 42

Single-use Property

Definition (Single-use restriction)

A D2VPT is single-use (D2VPTsu) if in any accepting run, any producing transition occur at most once at a given position.

Proposition (Su decision)

Given a D2VPT, deciding if it satisfies the single-use property is Exptime-complete.

Tree Transformations by means of VPT CAALM - Jan 2019 14 / 34

slide-43
SLIDE 43

Some results ([Dartois, Filiot, Reynier, T. 16)

Expressiveness :

D2VPTsu and MSO[nw2w] are equally expressive. Tree Transformations by means of VPT CAALM - Jan 2019 15 / 34

slide-44
SLIDE 44

Some results ([Dartois, Filiot, Reynier, T. 16)

Expressiveness :

D2VPTsu and MSO[nw2w] are equally expressive. functional VPT and order-preserving MSO[nw2w] are equally

expressive.

Tree Transformations by means of VPT CAALM - Jan 2019 15 / 34

slide-45
SLIDE 45

Some results ([Dartois, Filiot, Reynier, T. 16)

Expressiveness :

D2VPTsu and MSO[nw2w] are equally expressive. functional VPT and order-preserving MSO[nw2w] are equally

expressive.

Type-checking problem against

a regular language is Exptime-complete. a VPA language is undecidable even for deterministic (one-way) VPT

(followed from the undecidability of inclusion of CFL into VPA languages)

Tree Transformations by means of VPT CAALM - Jan 2019 15 / 34

slide-46
SLIDE 46

Some results ([Dartois, Filiot, Reynier, T. 16)

Expressiveness :

D2VPTsu and MSO[nw2w] are equally expressive. functional VPT and order-preserving MSO[nw2w] are equally

expressive.

Type-checking problem against

a regular language is Exptime-complete. a VPA language is undecidable even for deterministic (one-way) VPT

(followed from the undecidability of inclusion of CFL into VPA languages)

Composition is not possible (even for deterministic (one-way) VPT)

Tree Transformations by means of VPT CAALM - Jan 2019 15 / 34

slide-47
SLIDE 47

Outline

2 - Tree to Tree Transformations

Tree Transformations by means of VPT CAALM - Jan 2019 16 / 34

slide-48
SLIDE 48

Tree to Tree Transformations with (2)VPT

Requires :

  • utput on a structured alphabet
  • utput range in Σ∗

wn

Tree Transformations by means of VPT CAALM - Jan 2019 17 / 34

slide-49
SLIDE 49

Tree to Tree Transformations with (2)VPT

Requires :

  • utput on a structured alphabet
  • utput range in Σ∗

wn

Definition [Filiot,Raskin,Reynier,Servais,T. - ’10]

A VPT is locally well-nested if for all stack symbols γ and all transitions p1

c|w1,+γ

− − − − − → p2 and q2

r|w2,−γ

− − − − − → q1,

w1w2 ∈ Σ∗

wn

Tree Transformations by means of VPT CAALM - Jan 2019 17 / 34

slide-50
SLIDE 50

Tree to Tree Transformations with (2)VPT

Requires :

  • utput on a structured alphabet
  • utput range in Σ∗

wn

Definition [Filiot,Raskin,Reynier,Servais,T. - ’10]

A VPT is locally well-nested if for all stack symbols γ and all transitions p1

c|w1,+γ

− − − − − → p2 and q2

r|w2,−γ

− − − − − → q1,

w1w2 ∈ Σ∗

wn

syntactic restriction locally well-nested VPTs produce well-nested words closed under composition typechecking against VPA is ExpTime-complete

Tree Transformations by means of VPT CAALM - Jan 2019 17 / 34

slide-51
SLIDE 51

Well-Nested VPT

What about a semantical class {T ∈ VPT | ∀L, T(L) ⊆ Σ∗

wn} ?

Tree Transformations by means of VPT CAALM - Jan 2019 18 / 34

slide-52
SLIDE 52

Well-Nested VPT

What about a semantical class {T ∈ VPT | ∀L, T(L) ⊆ Σ∗

wn} ?

This is the class of well-nested VPT can this class be decided ? is this class closed by composition ? (and thus, has type-checking against VPA is decidable) how does it relate to locally well-nested VPT?

Tree Transformations by means of VPT CAALM - Jan 2019 18 / 34

slide-53
SLIDE 53

Locally Well-Nested vs Well-Nested VPT

q0 q1 q2 q3 q4 c,+γ|ccc c,+γ′|cr c′,+γ0|r r′,−γ0|r r,−γ′|cr r,−γ|r

T = {(cckc′r ′rkr,ccc(cr)krr(cr)kr) | k ∈ N}

Tree Transformations by means of VPT CAALM - Jan 2019 19 / 34

slide-54
SLIDE 54

Locally Well-Nested vs Well-Nested VPT

q0 q1 q2 q3 q4 c,+γ|ccc c,+γ′|cr c′,+γ0|r r′,−γ0|r r,−γ′|cr r,−γ|r

T = {(cckc′r ′rkr,ccc(cr)krr(cr)kr) | k ∈ N}

cr cr cr c’r’

cr crcr cr cr crcr

Tree Transformations by means of VPT CAALM - Jan 2019 19 / 34

slide-55
SLIDE 55

Locally Well-Nested vs Well-Nested VPT

q0 q1 q2 q3 q4 c,+γ|ccc c,+γ′|cr c′,+γ0|r r′,−γ0|r r,−γ′|cr r,−γ|r

T = {(cckc′r ′rkr,ccc(cr)krr(cr)kr) | k ∈ N}

cr cr cr c’r’

cr crcr cr cr crcr locally well-nested VPT well-nested VPT

Tree Transformations by means of VPT CAALM - Jan 2019 19 / 34

slide-56
SLIDE 56

Properties of Well-Nested VPT

Proposition (Reynier T. ’14)

The class of well-nested VPT: can be decided in PTime is effectively closed under composition has a type-checking problem against VPA in 2-ExpTime.

Tree Transformations by means of VPT CAALM - Jan 2019 20 / 34

slide-57
SLIDE 57

Properties of Well-Nested VPT

Proposition (Reynier T. ’14)

The class of well-nested VPT: can be decided in PTime is effectively closed under composition has a type-checking problem against VPA in 2-ExpTime.

Proposition

Well-nested fVPT

≡ fVPT∩(Σ∗

wn → Σ∗ wn)

Tree Transformations by means of VPT CAALM - Jan 2019 20 / 34

slide-58
SLIDE 58

Properties of Well-Nested VPT

Proposition (Reynier T. ’14)

The class of well-nested VPT: can be decided in PTime is effectively closed under composition has a type-checking problem against VPA in 2-ExpTime.

Proposition

Well-nested fVPT

≡ fVPT∩(Σ∗

wn → Σ∗ wn)

≡ order-preserving MSO[nw2w]∩(Σ∗

wn → Σ∗ wn)

Tree Transformations by means of VPT CAALM - Jan 2019 20 / 34

slide-59
SLIDE 59

Properties of Well-Nested VPT

Proposition (Reynier T. ’14)

The class of well-nested VPT: can be decided in PTime is effectively closed under composition has a type-checking problem against VPA in 2-ExpTime.

Proposition

Well-nested fVPT

≡ fVPT∩(Σ∗

wn → Σ∗ wn)

≡ order-preserving MSO[nw2w]∩(Σ∗

wn → Σ∗ wn)

≡ order-preserving MSO[nw2nw]

As, output matching is MSO-definable.

Tree Transformations by means of VPT CAALM - Jan 2019 20 / 34

slide-60
SLIDE 60

Properties of Well-Nested VPT

Proposition (Reynier T. ’14)

The class of well-nested VPT: can be decided in PTime is effectively closed under composition has a type-checking problem against VPA in 2-ExpTime.

Proposition

Well-nested fVPT

≡ fVPT∩(Σ∗

wn → Σ∗ wn)

≡ order-preserving MSO[nw2w]∩(Σ∗

wn → Σ∗ wn)

≡ order-preserving MSO[nw2nw]

As, output matching is MSO-definable. Can we decide local transformations amongst global ones ?

Tree Transformations by means of VPT CAALM - Jan 2019 20 / 34

slide-61
SLIDE 61

D2VPT for tree to tree transformations

Tree restriction

D2VPTsu

MSO[nw2w]

Tree Transformations by means of VPT CAALM - Jan 2019 21 / 34

slide-62
SLIDE 62

D2VPT for tree to tree transformations

Tree restriction

D2VPTsu ∩(Σ∗

wn → Σ∗ wn)

MSO[nw2w] ∩(Σ∗

wn → Σ∗ wn)

Tree Transformations by means of VPT CAALM - Jan 2019 21 / 34

slide-63
SLIDE 63

D2VPT for tree to tree transformations

Tree restriction

D2VPTsu ∩(Σ∗

wn → Σ∗ wn)

MSO[nw2w] ∩(Σ∗

wn → Σ∗ wn)

Some questions : is D2VPTsu ⊆ (Σ∗

wn → Σ∗ wn) is decidable (when structured output

alphabet) ? Instead of D2VPT, what about functional 2VPT? Is it a decidable class ?

Tree Transformations by means of VPT CAALM - Jan 2019 21 / 34

slide-64
SLIDE 64

D2VPT for tree to tree transformations

Tree restriction

D2VPTsu ∩(Σ∗

wn → Σ∗ wn)

MSO[nw2w] ∩(Σ∗

wn → Σ∗ wn)

Some questions : is D2VPTsu ⊆ (Σ∗

wn → Σ∗ wn) is decidable (when structured output

alphabet) ? Instead of D2VPT, what about functional 2VPT? Is it a decidable class ? Several questions but a single tool : Two-way Visibly Pushdown Parikh Automata (2VPPA)

Tree Transformations by means of VPT CAALM - Jan 2019 21 / 34

slide-65
SLIDE 65

Outline

4 - A new Tool : (Two-way) Visibly Pushdown Parikh Automata

Tree Transformations by means of VPT CAALM - Jan 2019 22 / 34

slide-66
SLIDE 66

Parikh Automata

Definition (Klaedtke, Rueß, 03)

A Parikh automaton P = (A,dim,λ,S) where A = (Σ,Q,I,F,∆) is an NFA, dim is a natural number, λ : ∆ → Ndim and S is a semi-linear subset of Ndim. Here, S as a Presburger formula with dim free variables x1,...,xdim

Tree Transformations by means of VPT CAALM - Jan 2019 23 / 34

slide-67
SLIDE 67

Parikh Automata

Definition (Klaedtke, Rueß, 03)

A Parikh automaton P = (A,dim,λ,S) where A = (Σ,Q,I,F,∆) is an NFA, dim is a natural number, λ : ∆ → Ndim and S is a semi-linear subset of Ndim. Here, S as a Presburger formula with dim free variables x1,...,xdim

1 2

a,b,c,

  • a,b,c,
  • c,
  • a,

1

  • b,

1

  • c,
  • ϕS(x1,x2) = (x1 = 2∗x2 +1)

Words containing a factor cwc with w ∈ (a+b)∗ and |w|a = 2|w|b +1

Tree Transformations by means of VPT CAALM - Jan 2019 23 / 34

slide-68
SLIDE 68

Parikh Automata

Definition (Klaedtke, Rueß, 03)

A Parikh automaton P = (A,dim,λ,S) where A = (Σ,Q,I,F,∆) is an NFA, dim is a natural number, λ : ∆ → Ndim and S is a semi-linear subset of Ndim. Here, S as a Presburger formula with dim free variables x1,...,xdim Equi-expressive to (non-deterministic) reversal-bounded counter machines [Ibarra,78] (weaker in the deterministic case [Cadilhac, Finkel, McKenzie,11]). In Parikh automata, counter values (and thus, updates) do not influence the control state evolution.

Tree Transformations by means of VPT CAALM - Jan 2019 23 / 34

slide-69
SLIDE 69

Two-way Visibly Pushdown Parikh Automata

Definition

A two-way Visibly Pushdown Parikh automaton P = (A,dim,λ,S) where A = (Σ,Q,I,F,Γ,∆) is an 2VPA, dim is a natural number, λ : ∆ → Ndim and S is a semi-linear subset of Ndim.

Tree Transformations by means of VPT CAALM - Jan 2019 24 / 34

slide-70
SLIDE 70

Two-way Visibly Pushdown Parikh Automata

Definition

A two-way Visibly Pushdown Parikh automaton P = (A,dim,λ,S) where A = (Σ,Q,I,F,Γ,∆) is an 2VPA, dim is a natural number, λ : ∆ → Ndim and S is a semi-linear subset of Ndim. Reducing (D)2VPT problems to emptiness of (D)2VPPA

Tree Transformations by means of VPT CAALM - Jan 2019 24 / 34

slide-71
SLIDE 71

Well-nestedness of (D)2VPT

Globally as many calls as returns. Locally always more calls then returns. dim = 4 q1

α,±γ|w

− − − − − − − − − → q2 :                       

q1

α,±γ,(|w|Σc ,|w|Σr ,|w|Σc ,|w|Σr )

− − − − − − − − − − − − − − − − − − − − − − − − − → q2

q1

α,±γ,(|w|Σc ,|w|Σr ,|w|Σc ,|w|Σr )

− − − − − − − − − − − − − − − − − − − − − − − − − → q′

2

q′

1 α,±γ,(0,0,|w|Σc ,|w|Σr )

− − − − − − − − − − − − − − − − − − − → q′

2

ϕ = x3 = x4 ∨x1 < x2

Not well-nested ⇔ Not empty

Tree Transformations by means of VPT CAALM - Jan 2019 25 / 34

slide-72
SLIDE 72

Functionality of 2VPT

On the same input word, there exists an output position where two different letters are output in two different computations (essentially). dim = 2 Compute a position in the output q1

α,±γ|w

− − − − − − − − − − → q2 ⇒ q1

α,±γ,(|w|,0)

− − − − − − − − − − − − − − → q2

Guess the (first half of the) mismatched q1

α,±γ|w

− − − − − − − − − − → q2 ⇒ q1

α,±γ,(|w1|,0)

− − − − − − − − − − − − − − − → qa 2

w = w1aw2 Rewind the input word and start reading again q1

α,±γ|w

− − − − − − − − − − → q2 ⇒ qa 1

α,±γ,(0,|w|)

− − − − − − − − − − − − − − → qa 2

Guess the (second half of the) mismatched q1

α,±γ|w

− − − − − − − − − − → q2 ⇒ qa 1

α,±γ,(0,|w1|)

− − − − − − − − − − − − − − − → qF

w = w1bw2 , a = b

ϕ = x1 = x2

Not functional ⇔ Not empty

Tree Transformations by means of VPT CAALM - Jan 2019 26 / 34

slide-73
SLIDE 73

Some Existing Results about the emptiness problem

Emptiness for : deterministic two-way counter machines with 2 counters and k (fixed) counter-reversals is undecidable

Tree Transformations by means of VPT CAALM - Jan 2019 27 / 34

slide-74
SLIDE 74

Some Existing Results about the emptiness problem

Emptiness for : deterministic two-way counter machines with 2 counters and k (fixed) counter-reversals is undecidable (non-deterministic) two-way reversal-bounded counter machines with finite crossing is decidable

Tree Transformations by means of VPT CAALM - Jan 2019 27 / 34

slide-75
SLIDE 75

Some Existing Results about the emptiness problem

Emptiness for : deterministic two-way counter machines with 2 counters and k (fixed) counter-reversals is undecidable (non-deterministic) two-way reversal-bounded counter machines with finite crossing is decidable (non-deterministic) two-way pushdown automata with finite crossing is undecidable

Tree Transformations by means of VPT CAALM - Jan 2019 27 / 34

slide-76
SLIDE 76

Some Bad News

Theorem

Emptiness for deterministic two-way visibly pushdown Parikh automata is undecidable.

Tree Transformations by means of VPT CAALM - Jan 2019 28 / 34

slide-77
SLIDE 77

Some Bad News

Theorem

Emptiness for deterministic two-way visibly pushdown Parikh automata is undecidable.

Proof Idea : Reduction of solvability of Diophantine Eq. : P = Q with P,Q ∈ N[X ], eg 2xy +zz = 4x +2xz +6 The automaton part encodes only of monomials; sums and equality test encoded in Presburger accepting formula, a dimension for each monomial : 2x1 +x2 = 4x3 +2x4 +6. Input nested words represent valuations of variables Encode(x ∗y ∗1,[x → 3,y → 2]) = xcc3 Encode(y ∗1,[x → 3,y → 2])r3xr Encode(1,[x → 3,y → 2]) =

1

The automaton checks well-formedness visibly pushdown "regular" sequence of monomials

  • ne dimension for each variable occurence in P and Q : test via the Presburger accepting

formula that there are valuated the same way. and evaluates monomials via counters : The dimension updated as

Encode(xcc3 Encode(y ∗1,[x → 3,y → 2])r3xr ) = 3∗Encode(y ∗1,[x → 3,y → 2])

Tree Transformations by means of VPT CAALM - Jan 2019 28 / 34

slide-78
SLIDE 78

Some (Modest) Good News

Theorem

The non-emptiness problem for (one-way) VPPA and PPA is NP-complete.

Tree Transformations by means of VPT CAALM - Jan 2019 29 / 34

slide-79
SLIDE 79

Some (Modest) Good News

Theorem

The non-emptiness problem for (one-way) VPPA and PPA is NP-complete. Upperbound : let V be the values used for update in the PPA A New alphabet Σ′ = Σ∪(ui

v) (update counter i by adding value v (v ∈ V )).

Tree Transformations by means of VPT CAALM - Jan 2019 29 / 34

slide-80
SLIDE 80

Some (Modest) Good News

Theorem

The non-emptiness problem for (one-way) VPPA and PPA is NP-complete. Upperbound : let V be the values used for update in the PPA A New alphabet Σ′ = Σ∪(ui

v) (update counter i by adding value v (v ∈ V )).

Step 1 : Define a NPA B accepting words of the form

α1u1

0u2 1α2u1 3u2 2α3u1 0u2 0α4u1 0u2 1α5 ... such that

α1α2α3α4α5 ... has a run in A from an initial to a final configuration each u1

v1u2 v2 corresponds to the update performed by the run at that

position : (v1,v2) ⇒ u1

v1u2 v2

B is of polynomial size in A Tree Transformations by means of VPT CAALM - Jan 2019 29 / 34

slide-81
SLIDE 81

Some (Modest) Good News

Theorem

The non-emptiness problem for (one-way) VPPA and PPA is NP-complete. Upperbound : let V be the values used for update in the PPA A New alphabet Σ′ = Σ∪(ui

v) (update counter i by adding value v (v ∈ V )).

Step 1 : Define a NPA B accepting words of the form

α1u1

0u2 1α2u1 3u2 2α3u1 0u2 0α4u1 0u2 1α5 ... such that

α1α2α3α4α5 ... has a run in A from an initial to a final configuration each u1

v1u2 v2 corresponds to the update performed by the run at that

position : (v1,v2) ⇒ u1

v1u2 v2

B is of polynomial size in A

Step 2 : There is an existential Presburger formula ψ((yσ)σ∈Σ′) of size polynomial in B defining the Parikh image of L(B). [Verma, et al. 05]

Tree Transformations by means of VPT CAALM - Jan 2019 29 / 34

slide-82
SLIDE 82

Some (Modest) Good News

Theorem

The non-emptiness problem for (one-way) VPPA and PPA is NP-complete. Upperbound : let V be the values used for update in the PPA A New alphabet Σ′ = Σ∪(ui

v) (update counter i by adding value v (v ∈ V )).

Step 1 : Define a NPA B accepting words of the form

α1u1

0u2 1α2u1 3u2 2α3u1 0u2 0α4u1 0u2 1α5 ... such that

α1α2α3α4α5 ... has a run in A from an initial to a final configuration each u1

v1u2 v2 corresponds to the update performed by the run at that

position : (v1,v2) ⇒ u1

v1u2 v2

B is of polynomial size in A

Step 2 : There is an existential Presburger formula ψ((yσ)σ∈Σ′) of size polynomial in B defining the Parikh image of L(B). [Verma, et al. 05] Step 3 : In NP [Scarpellini84], satisfiability test of

ψ((yσ)σ∈Σ′)∧φ(x1,...,xn)∧

  • 1≤i≤dim

xi =

  • v∈V

v.yui

v Tree Transformations by means of VPT CAALM - Jan 2019 29 / 34

slide-83
SLIDE 83

Some (Modest) Good News

Lower bound : (hardness does not rely on the acceptance set, eg Presburger satisfiability).

Tree Transformations by means of VPT CAALM - Jan 2019 30 / 34

slide-84
SLIDE 84

Some (Modest) Good News

Lower bound : (hardness does not rely on the acceptance set, eg Presburger satisfiability).

Reduction of the 2-partition problem : I a finite set of natural numbers represented in binary. Does there exists J ⊆ I such that

  • e∈J

e =

  • e∉J

e

Tree Transformations by means of VPT CAALM - Jan 2019 30 / 34

slide-85
SLIDE 85

Some (Modest) Good News

Lower bound : (hardness does not rely on the acceptance set, eg Presburger satisfiability).

Reduction of the 2-partition problem : I a finite set of natural numbers represented in binary. Does there exists J ⊆ I such that

  • e∈J

e =

  • e∉J

e One dimension for J and one for I J. Input words : T1v1L2v2T3v3T4v4L5v5 ... vk : representation of the unary encoding of the kth natural. Ti : take the ith natural (in J) - Lj : leave the jth natural vk is encoded as unun−1 ...u1u0 where uj = ǫ if the jth bit of vk is 0 and wj otherwise recursively, w0 = 1 and wl = clwl−1rlclwl−1rl and can be recognized by a small VPA.

Tree Transformations by means of VPT CAALM - Jan 2019 30 / 34

slide-86
SLIDE 86

Some (Modest) Good News

Lower bound : (hardness does not rely on the acceptance set, eg Presburger satisfiability).

Reduction of the 2-partition problem : I a finite set of natural numbers represented in binary. Does there exists J ⊆ I such that

  • e∈J

e =

  • e∉J

e One dimension for J and one for I J. Input words : T1v1L2v2T3v3T4v4L5v5 ... vk : representation of the unary encoding of the kth natural. Ti : take the ith natural (in J) - Lj : leave the jth natural vk is encoded as unun−1 ...u1u0 where uj = ǫ if the jth bit of vk is 0 and wj otherwise recursively, w0 = 1 and wl = clwl−1rlclwl−1rl and can be recognized by a small VPA. Thus, holds even if the automata are deterministic, with a fixed dimension 2, tuples of values in

{0,1}2 and with a fixed Presburger formula (x1,x2) = x1 = x2

Tree Transformations by means of VPT CAALM - Jan 2019 30 / 34

slide-87
SLIDE 87

Emptiness for single-use 2VPPA

Single-use 2VPPA : a position is visited only once per counter modifying transition.

Tree Transformations by means of VPT CAALM - Jan 2019 31 / 34

slide-88
SLIDE 88

Emptiness for single-use 2VPPA

Single-use 2VPPA : a position is visited only once per counter modifying transition.

Proposition

For any single-use 2VPPA, there exists an equivalent VPPA of at most exponential size.

Tree Transformations by means of VPT CAALM - Jan 2019 31 / 34

slide-89
SLIDE 89

Emptiness for single-use 2VPPA

Single-use 2VPPA : a position is visited only once per counter modifying transition.

Proposition

For any single-use 2VPPA, there exists an equivalent VPPA of at most exponential size.

Proof Idea Extends [Dartois, Filiot, Reynier, T. 16] following Sherpherson’s ideas (for FSA) on traversals T. ((q,d)(q′,d′)) ∈ T(u) iff some run enters u by (q,d) and leaves it by (q′,d′) c u r

γ γ γ′ γ′

(q′,→) (q′′,←) (q,→)

Tree Transformations by means of VPT CAALM - Jan 2019 31 / 34

slide-90
SLIDE 90

Emptiness for single-use 2VPPA

Single-use 2VPPA : a position is visited only once per counter modifying transition.

Proposition

For any single-use 2VPPA, there exists an equivalent VPPA of at most exponential size.

Proof Idea Extends [Dartois, Filiot, Reynier, T. 16] following Sherpherson’s ideas (for FSA) on traversals T. ((q,d)(q′,d′)) ∈ T(u) iff some run enters u by (q,d) and leaves it by (q′,d′) Productive and Non-productive traversals form a finite algebra. Consider possible decompositions of traversals ((q,→)(q′,←)) on c1rw2 into productive traversals (finitely many as single-use) reachable from each other by non-productive traversals. Using commutativity of addition over Ndim, extract a VPA and a mapping λ

Tree Transformations by means of VPT CAALM - Jan 2019 31 / 34

slide-91
SLIDE 91

Emptiness for single-use 2VPPA

Single-use 2VPPA : a position is visited only once per counter modifying transition.

Proposition

For any single-use 2VPPA, there exists an equivalent VPPA of at most exponential size.

Corollary

Emptiness for single-use 2VPPA is in NEXPtime.

Theorem

Emptiness for single-use 2VPPA is in NEXPtime-complete.

Tree Transformations by means of VPT CAALM - Jan 2019 31 / 34

slide-92
SLIDE 92

Implied Results

For well-nestedness and functionality single-use 2VPT yields single-use 2VPPA

Proposition

For single-use 2VPT, well-nestedness and functionality are in NEXPtime. Both known as EXPtime-hard.

Tree Transformations by means of VPT CAALM - Jan 2019 32 / 34

slide-93
SLIDE 93

Back to tree-to-tree transformations

Consider the D2VPTsu defining the transformation with well-nested outputs c1r1c2r2 ...cnrn → c1c2 ...cnr1r2 ...rn ci and rn−i+1 match each other. c1 r1 c2 r2

...

cn−1 rn−1 cn rn

Tree Transformations by means of VPT CAALM - Jan 2019 33 / 34

slide-94
SLIDE 94

Back to tree-to-tree transformations

Consider the D2VPTsu defining the transformation with well-nested outputs c1r1c2r2 ...cnrn → c1c2 ...cnr1r2 ...rn ci and rn−i+1 match each other. c1 r1 c2 r2

...

cn−1 rn−1 cn rn This matching relation is not MSO-definable

Tree Transformations by means of VPT CAALM - Jan 2019 33 / 34

slide-95
SLIDE 95

Back to tree-to-tree transformations

Consider the D2VPTsu defining the transformation with well-nested outputs c1r1c2r2 ...cnrn → c1c2 ...cnr1r2 ...rn ci and rn−i+1 match each other. c1 r1 c2 r2

...

cn−1 rn−1 cn rn This matching relation is not MSO-definable MSO[nw2nw] is strictly included into MSO[nw2w]∩(Σ∗

wn → Σ∗ wn)

Tree Transformations by means of VPT CAALM - Jan 2019 33 / 34

slide-96
SLIDE 96

Back to tree-to-tree transformations

Consider the D2VPTsu defining the transformation with well-nested outputs c1r1c2r2 ...cnrn → c1c2 ...cnr1r2 ...rn ci and rn−i+1 match each other. c1 r1 c2 r2

...

cn−1 rn−1 cn rn This matching relation is not MSO-definable MSO[nw2nw] is strictly included into MSO[nw2w]∩(Σ∗

wn → Σ∗ wn)

MSO[nw2w]∩(Σ∗

wn → Σ∗ wn) is not closed by composition

Tree Transformations by means of VPT CAALM - Jan 2019 33 / 34

slide-97
SLIDE 97

Back to tree-to-tree transformations

Consider the D2VPTsu defining the transformation with well-nested outputs c1r1c2r2 ...cnrn → c1c2 ...cnr1r2 ...rn ci and rn−i+1 match each other. c1 r1 c2 r2

...

cn−1 rn−1 cn rn This matching relation is not MSO-definable MSO[nw2nw] is strictly included into MSO[nw2w]∩(Σ∗

wn → Σ∗ wn)

MSO[nw2w]∩(Σ∗

wn → Σ∗ wn) is not closed by composition

A new question :

Decide MSO[nw2nw] amongst MSO[nw2w]∩(Σ∗

wn → Σ∗ wn) ?

Tree Transformations by means of VPT CAALM - Jan 2019 33 / 34

slide-98
SLIDE 98

Thank you

for your attention

Tree Transformations by means of VPT CAALM - Jan 2019 34 / 34