Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs...
-
Upload
clarence-holt -
Category
Documents
-
view
213 -
download
0
description
Transcript of Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs...
![Page 1: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/1.jpg)
Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs
Jason Eisner and John Blatz29 July 2006
![Page 2: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/2.jpg)
May 3, 2023Jason Eisner & John Blatz
If you only see one slide…
• Weighted logic programming– Convenient language for expressing wide range
of practical problems– Dyna: a working system for evaluating (a class
of) weighted logic programs: www.dyna.org • Program transformations
– Formalizes relationships between programs– Generalizeable to discover new algorithms – Useful transformations advertised in this talk
• Please read the paper for more details
![Page 3: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/3.jpg)
May 3, 2023Jason Eisner & John Blatz
Logic Programming
• CKY parsing algorithm: constit(X,I,J) is true iff the words from position I to position J in a sentence form a grammatical constituent of type X
• Grammar (rewrite(…)) specified as input to parsing engine
• Sentence (word(…), length(…)) also given as input• Performs recognition: “is this sentence grammatical?”
goal :- constit(s,0,N), end(N).constit(X,I,J) :- rewrite(X,W), word(W,I,J).constit(X,I,K) :- rewrite(X,Y,Z),
constit(Y,I,J), constit(Z,J,K).
![Page 4: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/4.jpg)
May 3, 2023Jason Eisner & John Blatz
Logic Programming - CKY Algorithmgoal :- constit(s,0,N), end(N).constit(X,I,J) :- rewrite(X,W), word(W,I,J).constit(X,I,K) :- rewrite(X,Y,Z),
constit(Y,I,J), constit(Z,J,K).
John loves Mary0 1 2 3
constit(‘np’,0,1) constit(‘v’,1,2) constit(‘np’,1,3)
word(‘John’,0,1) word(‘loves,1,2) word(‘Mary’,2,3)
constit(‘s’,0,3)constit(‘vp’,1,3)
goal
![Page 5: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/5.jpg)
May 3, 2023Jason Eisner & John Blatz
Weighted logic programming
• Items have (numeric) values in addition to being provable/unprovable
• Computes total inside probability of all parses of a sentence
• Dynamic programming is a special case:– Only ground items are provable – Computation is stratified aggregation– Intermediate subresults are stored for reuse in
computation
goal += constit(s,0,N) if length(N).constit(X,I,J) += rewrite(X,W) if word(W,I,J).constit(X,I,K) += rewrite(X,Y,Z) *
constit(Y,I,J) * constit(Z,J,K).
![Page 6: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/6.jpg)
May 3, 2023Jason Eisner & John Blatz
Semantics of weighted logic programs
• Every item has a unique aggregation operator• Free variables on the right-hand side of a rule are
aggregated over• Examples in this talk assume that we are operating
in a semiring
program:constit(X,I,K) += rewrite(X,Y,Z) * constit(Y,I,J) * constit(Z,J,K)constit(X,I,K) += rewrite(X,W) * word(W,I,K)
semantics:[constit(X,I,K)]= YZK [rewrite(X,Y,Z)]*[constit(Y,I,J)]*[constit(Z,J,K)]
+ W [rewrite(X,W)] * [word(W,I,K)]
![Page 7: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/7.jpg)
May 3, 2023Jason Eisner & John Blatz
Evaluation of weighted logic programs
• Mostly beyond the scope of this paper, but options include…
• Backward-chaining (à la Prolog)• Forward-chaining (à la Dyna [Eisner et. al.
EMNLP ‘05], [Goodman ‘99] for semirings)
• Hybrid of backward-chaining and forward-chaining
• Something entirely different…
![Page 8: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/8.jpg)
May 3, 2023Jason Eisner & John Blatz
Runtime complexity of WLP evaluation
• Complexity of a rule = number of ways to instantiate it:
– k grammar symbols (X, Y, Z)– n words in sentence (I, J, K)– O(k3n3)
• Sparsity or use of default values may make actual runtime faster than it appears
constit(X,I,K) += rewrite(X,Y,Z) * constit(Y,I,J) * constit(Z,J,K)
![Page 9: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/9.jpg)
May 3, 2023Jason Eisner & John Blatz
Program Transformations
• Optimize performance of a program– consolidate or avoid work– especially useful for a declarative language
• Demonstrate semantic equivalence of pairs of programs
• Generalize techniques discovered for particular problems to seemingly unrelated problems
![Page 10: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/10.jpg)
May 3, 2023Jason Eisner & John Blatz
Folding
constit(X,I,K) += constit(Y,I,J) * constit(Z,J,K) * rewrite(X,Y,Z)
constit(‘s’,0,3)
constit(‘vp’,1,3)constit(‘np’,0,1)
rewrite(‘s’,‘np’,‘vp’)
![Page 11: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/11.jpg)
May 3, 2023Jason Eisner & John Blatz
Folding
constit(X,I,K) += constit(Y,I,J) * constit(Z,J,K) * rewrite(X,Y,Z)
constit(‘s’,0,3)
constit(‘vp’,1,3)constit(‘np’,0,1)
rewrite(‘s’,‘np’,‘vp’)
![Page 12: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/12.jpg)
May 3, 2023Jason Eisner & John Blatz
Folding
constit(X,I,K) += constit(Y,I,J) * constit(Z,J,K) * rewrite(X,Y,Z)temp(X,Y,Z,J,K) += constit(Z,J,K) * rewrite(X,Y,Z)
constit(‘s’,0,3)
constit(‘vp’,1,3)constit(‘np’,0,1)
rewrite(‘s’,‘np’,‘vp’)
temp(‘s’,‘np’,‘vp’,1,3)
![Page 13: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/13.jpg)
May 3, 2023Jason Eisner & John Blatz
Folding
constit(X,I,K) += constit(Y,I,J) * temp(X,Y,Z,J,K) temp(X,Y,Z,J,K) += constit(Z,J,K) * rewrite(X,Y,Z)
constit(‘s’,0,3)
constit(‘vp’,1,3)constit(‘np’,0,1)
rewrite(‘s’,‘np’,‘vp’)
temp(‘s’,‘np’,‘vp’,1,3)
![Page 14: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/14.jpg)
May 3, 2023Jason Eisner & John Blatz
Folding
constit(X,I,K) += constit(Y,I,J) * temp(X,Y,Z,J,K)temp(X,Y,Z,J,K) += constit(Z,J,K) * rewrite(X,Y,Z)
constit(‘s’,0,3)
constit(‘vp’,1,3)constit(‘np’,0,1)
rewrite(‘s’,‘np’,‘vp’)
temp(‘s’,‘np’,‘vp’,1,3)
![Page 15: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/15.jpg)
May 3, 2023Jason Eisner & John Blatz
Folding + distributive law
• Using the distributive property can reduce complexity
N multiplicationsN-1 additions
1 multiplicationN-1 additions
N2 multiplications(N-1)2 additions
N multiplications2¢(N-1) additions
![Page 16: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/16.jpg)
May 3, 2023Jason Eisner & John Blatz
Folding as categorial grammar
constit(X,I,K) += constit(Y,I,J) * temp(X,Y,J,K)temp(X,Y, J,K) += constit(Z,J,K) * rewrite(X,Y,Z)
constit(‘s’,0,3)
constit(‘vp’,1,3)constit(‘np’,0,1)
rewrite(‘s’,‘np’,‘vp’)
temp(‘s’,‘np’,1,3)
constit(‘s’,I,3)/constit(‘np’,I,1)
![Page 17: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/17.jpg)
May 3, 2023Jason Eisner & John Blatz
Folding as categorial grammar
constit(X,I,K) += constit(Y,I,J) * constit(X,I,K)/constit(Y,I,J)constit(X,I,K)/constit(Y,I,J) += constit(Z,J,K) * rewrite(X,Y,Z)
constit(‘s’,0,3)
constit(‘vp’,1,3)constit(‘np’,0,1)
rewrite(‘s’,‘np’,‘vp’)
constit(‘s’,I,3)/constit(‘np’,I,1)
![Page 18: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/18.jpg)
May 3, 2023Jason Eisner & John Blatz
Var. elimination in graphical models as folding
marginal(A,B) += p1(X,Y,A) * p2(A,Y,Z,W) * p3(B,Z,W)• Marginalize out Z,W:
temp(A,Y,B) += p2(A,Y,Z,W) * p3(Z,B,W)marginal(A,B) += p1(X,Y,A) * temp(A,Y,B)
X
A
Y
W
Z
Bp1 p2 p3
![Page 19: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/19.jpg)
May 3, 2023Jason Eisner & John Blatz
Unfolding
• Inline computation: constit(X,I,K) += constit(Y,I,J) * constit(Z,J,K) * rewrite(X,Y,Z)rewrite(‘np’,‘np’,‘pp’) := 0.4rewrite(‘np’,‘det’,‘n’) := 0.3
constit(‘np’,I,K) += constit(‘np’,I,J) * constit(‘pp’,J,K) * 0.4
constit(‘np’,I,K) += constit(‘det’,I,J) * constit(‘n’,J,K) * 0.3
![Page 20: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/20.jpg)
May 3, 2023Jason Eisner & John Blatz
Folding + Unfolding
• Folding--introduces intermediate item– Increases or does not affect asymptotic space
complexity– Decreases or does not affect asymptotic time
complexity• Unfolding--removes intermediate item
– Decreases or does not affect asymptotic space complexity
– Increases or does not affect asymptotic time complexity
• Folding + unfolding together: can improve both time and space complexity
![Page 21: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/21.jpg)
May 3, 2023Jason Eisner & John Blatz
“Middle-up” computation
• Retirement savings problem:
• deposit(X): amount invested per year by person X• rate(Prev, Year): rate of investment growth from year
Prev to year Year• value(X, Year): total value of investment in year Year
• Will iterate over the full term of the investment for every possible person X!
value(X, Year) += deposit(X) if contributed(Year).value(X, Year) += value(X, Prev) * rate(Prev, Year)
![Page 22: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/22.jpg)
May 3, 2023Jason Eisner & John Blatz
“Middle-up” computation
• growth(Year): total percentage growth up to Year
• growth is a “speculative” version of value:
value(X, Year) += deposit(X) if contributed(Year).value(X, Year) += value(X, Prev) * rate(Prev, Year)
growth(Year) += 1 if contributed (Year).growth(Year) += growth(Prev) * rate(Prev, Year).value(X, Year) += deposit(X) * growth(Year).
![Page 23: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/23.jpg)
May 3, 2023Jason Eisner & John Blatz
Speculation transformation
• Original in this work, as far as we know• Build items “speculatively”:
– Instead of using bar to build foo, build an item called foo/bar and attach bar to it later
• Generalization of classical folding:– Allows folding from recursive rules– Operates on a set of items in the program,
rather than a single rule• Generalization of gap-passing in
combinatorial grammar
![Page 24: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/24.jpg)
May 3, 2023Jason Eisner & John Blatz
From folding to speculation
a
b c
r dx
a += b * cb += rc += d * e * x
e
![Page 25: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/25.jpg)
May 3, 2023Jason Eisner & John Blatz
From folding to speculation
a
b c
r dx
a += b * cb += rc += d * e * x
e
folding
a
b c
r
d
x
e
c/x
a += b * cb += rc += c/x * xc/x += d * e
![Page 26: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/26.jpg)
May 3, 2023Jason Eisner & John Blatz
From folding to speculation
a
b c
r dx
a += b * cb += rc += d * e * x
e
![Page 27: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/27.jpg)
May 3, 2023Jason Eisner & John Blatz
From folding to speculation
a
b c
r dx
a += b * cb += rc += d * e * x
e
for each x, we must recomputeall of these items
…unless we compute them speculatively before attaching x
![Page 28: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/28.jpg)
May 3, 2023Jason Eisner & John Blatz
Gap-passing as speculation
a
b c
r dx
a += b * cb += rc += d * e * x
e
speculationa/x
b c/x
r dx/xe
a
x
1
a += a/x * x a/x += b * c/xb += rc/x += d * e * x/xx/x += 1
![Page 29: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/29.jpg)
May 3, 2023Jason Eisner & John Blatz
Gap-passing as speculation
a
b c
r dx
a += b * cb += rc += d * e * x
e
speculationa/x
b c/x
r dx/xe
a
x
1
a += a/x * x a/x += b * c/xb += rc/x += d * e * x/xx/x += 1
independentof x
![Page 30: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/30.jpg)
May 3, 2023Jason Eisner & John Blatz
Speculation on recursive rules
a
b c
r dx
a += b * cb += rc += d * e * xc += f * c
e
Even if a recursive rule depends on x, we can still build speculatively!f
![Page 31: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/31.jpg)
May 3, 2023Jason Eisner & John Blatz
Speculation on recursive rules
a
b c
r dx
a += b * cb += rc += d * e * xc += f * c
e f
a/x
b c/x
r dx/xe f
x
a
1
a += a/x * xa += b * c/xb += rc/x += d * e * x/xc/x += f * c/xx/x += 1
speculation
![Page 32: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/32.jpg)
May 3, 2023Jason Eisner & John Blatz
Why does this work?
a += b * cb += rc += d * e * xc += f * c
a += b * cb += rc += d * e * xc += f * d * e * xc += f * f * c
unfold
a += b * cb += rc += d * e * xc += f * d * e * xc += f * f * d * e * xc += f * f * f * d * e * xc += f * f * f * f * c
unfoldagain
always an x present to fold out
![Page 33: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/33.jpg)
May 3, 2023Jason Eisner & John Blatz
Difficulties of recursive speculation
a
b c
r dx
a += b * cb += rc += d * e * xc += f * cc += g
e fg
![Page 34: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/34.jpg)
May 3, 2023Jason Eisner & John Blatz
Difficulties of recursive speculation
a
b c
r dx
a += b * cb += rc += d * e * xc += f * cc += g
e fg
c += d * e * xc += f * d * e * xc += f * f * cc += f * gc += g
Part of c is derived from x,part from g
Need to separate parts of c that x contributes to from parts that it doesn’t
![Page 35: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/35.jpg)
May 3, 2023Jason Eisner & John Blatz
Folding into other() items
a
b c
r dx
a += b * cb += rc += d * e * xc += f * cc += g
e fg
Need to separate parts of c that x contributes to from parts that it doesn’t
a
b c
r
dxefg
other(c) c’
f
Now we can slash x out of c’ as before
![Page 36: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/36.jpg)
May 3, 2023Jason Eisner & John Blatz
Split head-automaton grammars
• Bilexical CFG which attaches all children right of the head before all children left of the head
• Eisner & Satta ‘99 improve runtime from O(n5) to O(n3) using the speculation transformation
r-constit(X:H,I,K) += word(H,I,K). r-constit(X:H,I,K) += rewrite(X:H,Y:H,Z:H2) * r-constit(Y:H,I,J) * constit(Z:H2,J,K). constit(X:H,I,K) += r-constit(X:H,I,K) constit(X:H,I,K) += rewrite(X:H,Y:H2,Z:H) * constit(Y:H2,I,J) * constit(Z:H,J,K) goal += constit(s:H,0,N) * length(N).
![Page 37: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/37.jpg)
May 3, 2023Jason Eisner & John Blatz
Split head-automaton grammars
r-constit(X:H,I,K) += word(H,I,K). r-constit(X:H,I,K) += rewrite(X:H,Y:H,Z:H2) * r-constit(Y:H,I,J) * constit(Z:H2,J,K). constit(X:H,I,K) += r-constit(X:H,I,K) constit(X:H,I,K) += rewrite(X:H,Y:H2,Z:H) * constit(Y:H2,I,J) * constit(Z:H,J,K) goal += constit(s:H,0,N) * length(N).
+= *
+=
+= *
![Page 38: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/38.jpg)
May 3, 2023Jason Eisner & John Blatz
Split head-automaton grammars
r-constit(X:H,I,K) += word(H,I,K). r-constit(X:H,I,K) += rewrite(X:H,Y:H,Z:H2) * r-constit(Y:H,I,J) * constit(Z:H2,J,K). constit(X:H,I,K) += r-constit(X:H,I,K) constit(X:H,I,K) += rewrite(X:H,Y:H2,Z:H) * constit(Y:H2,I,J) * constit(Z:H,J,K) goal += constit(s:H,0,N) * length(N).
+= *
+=
+= *
=
l-constit(X:H,X0,I,I0) = constit(X:H,I,J)/r-constit(X:H,I,K)
![Page 39: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/39.jpg)
May 3, 2023Jason Eisner & John Blatz
Split head-automaton grammars+= *
+=
+= *
=
l-constit(X:H,X0,I,I0) = constit(X:H,I,J)/r-constit(X:H,I,K)
+= *
+=
+= *
1
+= *
transformed program:
![Page 40: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/40.jpg)
May 3, 2023Jason Eisner & John Blatz
SHAG transformed program
r-constit(X:H,I,K) += word(H,I,K)r-constit(X:H,I,K) += rewrite(X:H,Y:H,Z:H2) * r-constit(Y:H,I,J) * constit(Z:H2,J,K).l-constit(X0:H0,X0,J0,J0) += 1l-constit(X:H0,X0,I,J0) += rewrite(X:H0,Y:H2,Z:H0) * constit(Y:H2,I,J) * l-constit(Z:H0,X0,J,J0)constit(X:H,I,K) += l-constit(X:H,X0,I,I0,K) * r-constit(X0:H,I0,K)goal += constit(s:H,0,N) * length(N)• Reduces runtime to O(n4)• Subsequent unfolding and folding can reduce runtime to O(n3)
![Page 41: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/41.jpg)
May 3, 2023Jason Eisner & John Blatz
Forward-chaining
• Greedy algorithm: – Given a set of proven items and their values– Update the values of items occuring on left-
hand side of a rule so that they match the current set
• Forward-chaining can produce (possibly infinitely) many items that we are not interested in
• We can use program transformation to control the evaluation order.
![Page 42: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/42.jpg)
May 3, 2023Jason Eisner & John Blatz
Forward-chaining example
goal += a(X) * b(X)a(X) += c(X,Y) * d(Y)d(Y) += e(Y)f(X) += c(X,X) * e(X)g(X) += f(X) * a(X)
e(2) := 2c(1,2) := 1c(3,3) := 2e(3) := 4b(1) := 1b(2) := 5b(3) := 3
goal
a(1) b(1) a(2) b(2) a(3) b(3) f(3)f(1) f(2)
c(1,2) d(2)
e(2)
c(3,3) d(3)
e(3)
c(2,2)d(1)
e(1)
g(1) g(2) g(3)
green= derived by forward chaining
![Page 43: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/43.jpg)
May 3, 2023Jason Eisner & John Blatz
Forward-chaining example
goal += a(X) * b(X)a(X) += c(X,Y) * d(Y)d(Y) += e(Y)f(X) += c(X,X) * e(X)g(X) += f(X) * a(X)
e(2) := 2c(1,2) := 1c(3,3) := 2e(3) := 4b(1) := 1b(2) := 5b(3) := 3
goal
a(1) b(1) a(2) b(2) a(3) b(3) f(3)f(1) f(2)
c(1,2) d(2)
e(2)
c(3,3) d(3)
e(3)
c(2,2)d(1)
e(1)
g(1) g(2) g(3)
green= derived by forward chaining
![Page 44: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/44.jpg)
May 3, 2023Jason Eisner & John Blatz
Forward-chaining example
goal += a(X) * b(X)a(X) += c(X,Y) * d(Y)d(Y) += e(Y)f(X) += c(X,X) * e(X)g(X) += f(X) * a(X)
e(2) := 2c(1,2) := 1c(3,3) := 2e(3) := 4b(1) := 1b(2) := 5b(3) := 3
goal
a(1) b(1) a(2) b(2) a(3) b(3) f(3)f(1) f(2)
c(1,2) d(2)
e(2)
c(3,3) d(3)
e(3)
c(2,2)d(1)
e(1)
g(1) g(2) g(3)
green= derived by forward chaining
![Page 45: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/45.jpg)
May 3, 2023Jason Eisner & John Blatz
Forward-chaining example
goal += a(X) * b(X)a(X) += c(X,Y) * d(Y)d(Y) += e(Y)f(X) += c(X,X) * e(X)g(X) += f(X) * a(X)
e(2) := 2c(1,2) := 1c(3,3) := 2e(3) := 4b(1) := 1b(2) := 5b(3) := 3
goal
a(1) b(1) a(2) b(2) a(3) b(3) f(3)f(1) f(2)
c(1,2) d(2)
e(2)
c(3,3) d(3)
e(3)
c(2,2)d(1)
e(1)
g(1) g(2) g(3)
![Page 46: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/46.jpg)
May 3, 2023Jason Eisner & John Blatz
Forward-chaining example
goal += a(X) * b(X)a(X) += c(X,Y) * d(Y)d(Y) += e(Y)f(X) += c(X,X) * e(X)g(X) += f(X) * a(X)
e(2) := 2c(1,2) := 1c(3,3) := 2e(3) := 4b(1) := 1b(2) := 5b(3) := 3
goal
a(1) b(1) a(2) b(2) a(3) b(3) f(3)f(1) f(2)
c(1,2) d(2)
e(2)
c(3,3) d(3)
e(3)
c(2,2)d(1)
e(1)
g(1) g(2) g(3)
![Page 47: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/47.jpg)
May 3, 2023Jason Eisner & John Blatz
Forward-chaining example
goal += a(X) * b(X)a(X) += c(X,Y) * d(Y)d(Y) += e(Y)f(X) += c(X,X) * e(X)g(X) += f(X) * a(X)
e(2) := 2c(1,2) := 1c(3,3) := 2e(3) := 4b(1) := 1b(2) := 5b(3) := 3
goal
a(1) b(1) a(2) b(2) a(3) b(3) f(3)f(1) f(2)
c(1,2) d(2)
e(2)
c(3,3) d(3)
e(3)
c(2,2)d(1)
e(1)
g(1) g(2) g(3)
![Page 48: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/48.jpg)
May 3, 2023Jason Eisner & John Blatz
Forward-chaining example
goal += a(X) * b(X)a(X) += c(X,Y) * d(Y)d(Y) += e(Y)f(X) += c(X,X) * e(X)g(X) += f(X) * a(X)
e(2) := 2c(1,2) := 1c(3,3) := 2e(3) := 4b(1) := 1b(2) := 5b(3) := 3
goal
a(1) b(1) a(2) b(2) a(3) b(3) f(3)f(1) f(2)
c(1,2) d(2)
e(2)
c(3,3) d(3)
e(3)
c(2,2)d(1)
e(1)
g(1) g(2) g(3)
![Page 49: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/49.jpg)
May 3, 2023Jason Eisner & John Blatz
Forward-chaining example
goal += a(X) * b(X)a(X) += c(X,Y) * d(Y)d(Y) += e(Y)f(X) += c(X,X) * e(X)g(X) += f(X) * a(X)
e(2) := 2c(1,2) := 1c(3,3) := 2e(3) := 4b(1) := 1b(2) := 5b(3) := 3
goal
a(1) b(1) a(2) b(2) a(3) b(3) f(3)f(1) f(2)
c(1,2) d(2)
e(2)
c(3,3) d(3)
e(3)
c(2,2)d(1)
e(1)
g(1) g(2) g(3)
![Page 50: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/50.jpg)
May 3, 2023Jason Eisner & John Blatz
Forward-chaining example
goal += a(X) * b(X)a(X) += c(X,Y) * d(Y)d(Y) += e(Y)f(X) += c(X,X) * e(X)g(X) += f(X) * a(X)
e(2) := 2c(1,2) := 1c(3,3) := 2e(3) := 4b(1) := 1b(2) := 5b(3) := 3
goal
a(1) b(1) a(2) b(2) a(3) b(3) f(3)f(1) f(2)
c(1,2) d(2)
e(2)
c(3,3) d(3)
e(3)
c(2,2)d(1)
e(1)
g(1) g(2) g(3)
![Page 51: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/51.jpg)
May 3, 2023Jason Eisner & John Blatz
Forward-chaining example
goal += a(X) * b(X)a(X) += c(X,Y) * d(Y)d(Y) += e(Y)f(X) += c(X,X) * e(X)g(X) += f(X) * a(X)
e(2) := 2c(1,2) := 1c(3,3) := 2e(3) := 4b(1) := 1b(2) := 5b(3) := 3
goal
a(1) b(1) a(2) b(2) a(3) b(3) f(3)f(1) f(2)
c(1,2) d(2)
e(2)
c(3,3) d(3)
e(3)
c(2,2)d(1)
e(1)
g(1) g(2) g(3)
![Page 52: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/52.jpg)
May 3, 2023Jason Eisner & John Blatz
Forward-chaining example
goal += a(X) * b(X)a(X) += c(X,Y) * d(Y)d(Y) += e(Y)f(X) += c(X,X) * e(X)g(X) += f(X) * a(X)
e(2) := 2c(1,2) := 1c(3,3) := 2e(3) := 4b(1) := 1b(2) := 5b(3) := 3
goal
a(1) b(1) a(2) b(2) a(3) b(3) f(3)f(1) f(2)
c(1,2) d(2)
e(2)
c(3,3) d(3)
e(3)
c(2,2)d(1)
e(1)
g(1) g(3) g(3)
![Page 53: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/53.jpg)
May 3, 2023Jason Eisner & John Blatz
Forward-chaining example
goal += a(X) * b(X)a(X) += c(X,Y) * d(Y)d(Y) += e(Y)f(X) += c(X,X) * e(X)g(X) += f(X) * a(X)
e(2) := 2c(1,2) := 1c(3,3) := 2e(3) := 4b(1) := 1b(2) := 5b(3) := 3
goal
a(1) b(1) a(2) b(2) a(3) b(3) f(3)f(1) f(2)
c(1,2) d(2)
e(2)
c(3,3) d(3)
e(3)
c(2,2)d(1)
e(1)
g(1) g(2) g(3)
![Page 54: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/54.jpg)
May 3, 2023Jason Eisner & John Blatz
Forward-chaining example
goal += a(X) * b(X)a(X) += c(X,Y) * d(Y)d(Y) += e(Y)f(X) += c(X,X) * e(X)g(X) += f(X) * a(X)
e(2) := 2c(1,2) := 1c(3,3) := 2e(3) := 4b(1) := 1b(2) := 5b(3) := 3
goal
a(1) b(1) a(2) b(2) a(3) b(3) f(3)f(1) f(2)
c(1,2) d(2)
e(2)
c(3,3) d(3)
e(3)
c(2,2)d(1)
e(1)
g(1) g(2) g(3)
![Page 55: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/55.jpg)
May 3, 2023Jason Eisner & John Blatz
Forward-chaining example
goal += a(X) * b(X)a(X) += c(X,Y) * d(Y)d(Y) += e(Y)f(X) += c(X,X) * e(X)g(X) += f(X) * a(X)
e(2) := 2c(1,2) := 1c(3,3) := 2e(3) := 4b(1) := 1b(2) := 5b(3) := 3
goal
a(1) b(1) a(2) b(2) a(3) b(3) f(3)f(1) f(2)
c(1,2) d(2)
e(2)
c(3,3) d(3)
e(3)
c(2,2)d(1)
e(1)
g(1) g(2) g(3)
![Page 56: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/56.jpg)
May 3, 2023Jason Eisner & John Blatz
Forward-chaining example
goal += a(X) * b(X)a(X) += c(X,Y) * d(Y)d(Y) += e(Y)f(X) += c(X,X) * e(X)g(X) += f(X) * a(X)
e(2) := 2c(1,2) := 1c(3,3) := 2e(3) := 4b(1) := 1b(2) := 5b(3) := 3
goal
a(1) b(1) a(2) b(2) a(3) b(3) f(3)f(1) f(2)
c(1,2) d(2)
e(2)
c(3,3) d(3)
e(3)
c(2,2)d(1)
e(1)
g(1) g(2) g(3)
![Page 57: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/57.jpg)
May 3, 2023Jason Eisner & John Blatz
Forward-chaining example
goal += a(X) * b(X)a(X) += c(X,Y) * d(Y)d(Y) += e(Y)f(X) += c(X,X) * e(X)g(X) += f(X) * a(X)
e(2) := 2c(1,2) := 1c(3,3) := 2e(3) := 4b(1) := 1b(2) := 5b(3) := 3
goal
a(1) b(1) a(2) b(2) a(3) b(3) f(3)f(1) f(2)
c(1,2) d(2)
e(2)
c(3,3) d(3)
e(3)
c(2,2)d(1)
e(1)
g(1) g(2) g(3)
pink derived values were irrelevant to goal
![Page 58: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/58.jpg)
May 3, 2023Jason Eisner & John Blatz
Backward-chaining
• Starting from goal, recursively compute values for all items that could be used to derive goal
• Forward-chaining: may prove items that are irrelevant to goal
• Backward-chaining: may investigate items that cannot be proven
![Page 59: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/59.jpg)
May 3, 2023Jason Eisner & John Blatz
Backward example
goal += a(X) * b(X)a(X) += c(X,Y) * d(Y)d(Y) += e(Y)f(X) += c(X,X) * e(X)g(X) += f(X) * a(X)
e(2) := 2c(1,2) := 1c(3,3) := 2e(3) := 4b(1) := 1b(2) := 5b(3) := 3
goal
a(1) b(1) a(2) b(2) a(3) b(3) f(3)f(1) f(2)
c(1,2) d(2)
e(2)
c(3,3) d(3)
e(3)
c(2,2)d(1)
e(1)
g(1) g(2) g(3)
![Page 60: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/60.jpg)
May 3, 2023Jason Eisner & John Blatz
Backward example
goal += a(X) * b(X)a(X) += c(X,Y) * d(Y)d(Y) += e(Y)f(X) += c(X,X) * e(X)g(X) += f(X) * a(X)
e(2) := 2c(1,2) := 1c(3,3) := 2e(3) := 4b(1) := 1b(2) := 5b(3) := 3
goal
a(1) b(1) a(2) b(2) a(3) b(3) f(3)f(1) f(2)
c(1,2) d(2)
e(2)
c(3,3) d(3)
e(3)
c(2,2)d(1)
e(1)
g(1) g(2) g(3)
blue nodes visited by backward chaining
![Page 61: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/61.jpg)
May 3, 2023Jason Eisner & John Blatz
Backward example
goal += a(X) * b(X)a(X) += c(X,Y) * d(Y)d(Y) += e(Y)f(X) += c(X,X) * e(X)g(X) += f(X) * a(X)
e(2) := 2c(1,2) := 1c(3,3) := 2e(3) := 4b(1) := 1b(2) := 5b(3) := 3
goal
a(1) b(1) a(2) b(2) a(3) b(3) f(3)f(1) f(2)
c(1,2) d(2)
e(2)
c(3,3) d(3)
e(3)
c(2,2)d(1)
e(1)
g(1) g(2) g(3)
blue nodes visited by backward chaining
![Page 62: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/62.jpg)
May 3, 2023Jason Eisner & John Blatz
Backward example
goal += a(X) * b(X)a(X) += c(X,Y) * d(Y)d(Y) += e(Y)f(X) += c(X,X) * e(X)g(X) += f(X) * a(X)
e(2) := 2c(1,2) := 1c(3,3) := 2e(3) := 4b(1) := 1b(2) := 5b(3) := 3
goal
a(1) b(1) a(2) b(2) a(3) b(3) f(3)f(1) f(2)
c(1,2) d(2)
e(2)
c(3,3) d(3)
e(3)
c(2,2)d(1)
e(1)
g(1) g(2) g(3)
blue nodes visited by backward chaining
![Page 63: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/63.jpg)
May 3, 2023Jason Eisner & John Blatz
Backward example
goal += a(X) * b(X)a(X) += c(X,Y) * d(Y)d(Y) += e(Y)f(X) += c(X,X) * e(X)g(X) += f(X) * a(X)
e(2) := 2c(1,2) := 1c(3,3) := 2e(3) := 4b(1) := 1b(2) := 5b(3) := 3
goal
a(1) b(1) a(2) b(2) a(3) b(3) f(3)f(1) f(2)
c(1,2) d(2)
e(2)
c(3,3) d(3)
e(3)
c(2,2)d(1)
e(1)
g(1) g(2) g(3)
blue nodes visited by backward chaining
![Page 64: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/64.jpg)
May 3, 2023Jason Eisner & John Blatz
Backward example
goal += a(X) * b(X)a(X) += c(X,Y) * d(Y)d(Y) += e(Y)f(X) += c(X,X) * e(X)g(X) += f(X) * a(X)
e(2) := 2c(1,2) := 1c(3,3) := 2e(3) := 4b(1) := 1b(2) := 5b(3) := 3
goal
a(1) b(1) a(2) b(2) a(3) b(3) f(3)f(1) f(2)
c(1,2) d(2)
e(2)
c(3,3) d(3)
e(3)
c(2,2)d(1)
e(1)
g(1) g(2) g(3)
blue nodes visited by backward chaining
![Page 65: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/65.jpg)
May 3, 2023Jason Eisner & John Blatz
Backward example
goal += a(X) * b(X)a(X) += c(X,Y) * d(Y)d(Y) += e(Y)f(X) += c(X,X) * e(X)g(X) += f(X) * a(X)
e(2) := 2c(1,2) := 1c(3,3) := 2e(3) := 4b(1) := 1b(2) := 5b(3) := 3
goal
a(1) b(1) a(2) b(2) a(3) b(3) f(3)f(1) f(2)
c(1,2) d(2)
e(2)
c(3,3) d(3)
e(3)
c(2,2)d(1)
e(1)
g(1) g(2) g(3)
backtrack up to goal += a(1) * b(1)
![Page 66: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/66.jpg)
May 3, 2023Jason Eisner & John Blatz
Backward example
goal += a(X) * b(X)a(X) += c(X,Y) * d(Y)d(Y) += e(Y)f(X) += c(X,X) * e(X)g(X) += f(X) * a(X)
e(2) := 2c(1,2) := 1c(3,3) := 2e(3) := 4b(1) := 1b(2) := 5b(3) := 3
goal
a(1) b(1) a(2) b(2) a(3) b(3) f(3)f(1) f(2)
c(1,2) d(2)
e(2)
c(3,3) d(3)
e(3)
c(2,2)d(1)
e(1)
g(1) g(2) g(3)
![Page 67: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/67.jpg)
May 3, 2023Jason Eisner & John Blatz
Backward example
goal += a(X) * b(X)a(X) += c(X,Y) * d(Y)d(Y) += e(Y)f(X) += c(X,X) * e(X)g(X) += f(X) * a(X)
e(2) := 2c(1,2) := 1c(3,3) := 2e(3) := 4b(1) := 1b(2) := 5b(3) := 3
goal
a(1) b(1) a(2) b(2) a(3) b(3) f(3)f(1) f(2)
c(1,2) d(2)
e(2)
c(3,3) d(3)
e(3)
c(2,2)d(1)
e(1)
g(1) g(2) g(3)
no way to derive c(2,2)!
![Page 68: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/68.jpg)
May 3, 2023Jason Eisner & John Blatz
Backward example
goal += a(X) * b(X)a(X) += c(X,Y) * d(Y)d(Y) += e(Y)f(X) += c(X,X) * e(X)g(X) += f(X) * a(X)
e(2) := 2c(1,2) := 1c(3,3) := 2e(3) := 4b(1) := 1b(2) := 5b(3) := 3
goal
a(1) b(1) a(2) b(2) a(3) b(3) f(3)f(1) f(2)
c(1,2) d(2)
e(2)
c(3,3) d(3)
e(3)
c(2,2)d(1)
e(1)
g(1) g(2) g(3)
no way to derive c(2,2)!
![Page 69: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/69.jpg)
May 3, 2023Jason Eisner & John Blatz
Backward example
goal += a(X) * b(X)a(X) += c(X,Y) * d(Y)d(Y) += e(Y)f(X) += c(X,X) * e(X)g(X) += f(X) * a(X)
e(2) := 2c(1,2) := 1c(3,3) := 2e(3) := 4b(1) := 1b(2) := 5b(3) := 3
goal
a(1) b(1) a(2) b(2) a(3) b(3) f(3)f(1) f(2)
c(1,2) d(2)
e(2)
c(3,3) d(3)
e(3)
c(2,2)d(1)
e(1)
g(1) g(2) g(3)
pink nodes visited but not provable
![Page 70: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/70.jpg)
May 3, 2023Jason Eisner & John Blatz
Backward example
goal += a(X) * b(X)a(X) += c(X,Y) * d(Y)d(Y) += e(Y)f(X) += c(X,X) * e(X)g(X) += f(X) * a(X)
e(2) := 2c(1,2) := 1c(3,3) := 2e(3) := 4b(1) := 1b(2) := 5b(3) := 3
goal
a(1) b(1) a(2) b(2) a(3) b(3) f(3)f(1) f(2)
c(1,2) d(2)
e(2)
c(3,3) d(3)
e(3)
c(2,2)d(1)
e(1)
g(1) g(2) g(3)
etc…
![Page 71: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/71.jpg)
May 3, 2023Jason Eisner & John Blatz
Summary
goal += a(X) * b(X)a(X) += c(X,Y) * d(Y)d(Y) += e(Y)f(X) += c(X,X) * e(X)g(X) += f(X) * a(X)
e(2) := 2c(1,2) := 1c(3,3) := 2e(3) := 4b(1) := 1b(2) := 5b(3) := 3
goal
a(1) b(1) a(2) b(2) a(3) b(3) f(3)f(1) f(2)
c(1,2) d(2)
e(2)
c(3,3) d(3)
e(3)
c(2,2)d(1)
e(1)
g(1) g(2) g(3)
light blue nodes visited by both algorithms
![Page 72: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/72.jpg)
May 3, 2023Jason Eisner & John Blatz
Simulating backward chaining
• “Magic templates” transformation [Ramakrishnan 91] simulates backward-chaining evaluation using forward-chaining strategy
• Derive “magic” filters on forward-chaining• “magic_X” “backward-chaining would
examine X”
![Page 73: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/73.jpg)
May 3, 2023Jason Eisner & John Blatz
Magic templates transformation
• “magic_X” “backward-chaining would examine X”
goal += a(X) * b(X)a(X) += c(X,Y) * d(Y)d(Y) += e(Y)f(X) += c(X,X) * e(X)g(X) += f(X) * a(X)
magic
goal += a(X) * b(X) if magic_goala(X) += c(X,Y) * d(Y) if magic_a(X)d(Y) += e(Y) if magic_d(Y)f(X) += c(X,X) * e(X) if magic_f(X)g(X) += f(X) * a(X) if magic_g(X)magic_goal.magic_a(X) :- magic_goalmagic_b(X) :- magic_goal, a(X).magic_c(X,Y) :- magic_a(X).magic_d(Y) :- magic_a(X), c(X,Y).etc…
![Page 74: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/74.jpg)
May 3, 2023Jason Eisner & John Blatz
Magic evaluationgoal += a(X) * b(X) if
magic_goala(X) += c(X,Y) * d(Y) if
magic_a(X)d(Y) += e(Y) if
magic_d(Y)f(X) += c(X,X) * e(X) if
magic_f(X)g(X) += f(X) * a(X) if
magic_g(X)magic_goal.magic_a(X) :-
magic_goalmagic_b(X) :-
magic_goal, a(X).magic_c(X,Y) :-
magic_a(X).etc.
goal
a(1) b(1) a(2) b(2) a(3) b(3) f(3)f(1) f(2)
c(1,2) d(2)
e(2)
c(3,3) d(3)
e(3)
c(2,2)d(1)
e(1)
g(1) g(2) g(3)
![Page 75: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/75.jpg)
May 3, 2023Jason Eisner & John Blatz
Magic evaluationgoal += a(X) * b(X) if
magic_goala(X) += c(X,Y) * d(Y) if
magic_a(X)d(Y) += e(Y) if
magic_d(Y)f(X) += c(X,X) * e(X) if
magic_f(X)g(X) += f(X) * a(X) if
magic_g(X)magic_goal.magic_a(X) :-
magic_goalmagic_b(X) :-
magic_goal, a(X).magic_c(X,Y) :-
magic_a(X).etc.
goal
a(1) b(1) a(2) b(2) a(3) b(3) f(3)f(1) f(2)
c(1,2) d(2)
e(2)
c(3,3) d(3)
e(3)
c(2,2)d(1)
e(1)
g(1) g(2) g(3)
blue: derived magic filter
![Page 76: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/76.jpg)
May 3, 2023Jason Eisner & John Blatz
Magic evaluationgoal += a(X) * b(X) if
magic_goala(X) += c(X,Y) * d(Y) if
magic_a(X)d(Y) += e(Y) if
magic_d(Y)f(X) += c(X,X) * e(X) if
magic_f(X)g(X) += f(X) * a(X) if
magic_g(X)magic_goal.magic_a(X) :-
magic_goalmagic_b(X) :-
magic_goal, a(X).magic_c(X,Y) :-
magic_a(X).etc.
goal
a(1) b(1) a(2) b(2) a(3) b(3) f(3)f(1) f(2)
c(1,2) d(2)
e(2)
c(3,3) d(3)
e(3)
c(2,2)d(1)
e(1)
g(1) g(2) g(3)
magic_a(X) is a single default value, which filters all three instantiations
![Page 77: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/77.jpg)
May 3, 2023Jason Eisner & John Blatz
Magic evaluationgoal += a(X) * b(X) if
magic_goala(X) += c(X,Y) * d(Y) if
magic_a(X)d(Y) += e(Y) if
magic_d(Y)f(X) += c(X,X) * e(X) if
magic_f(X)g(X) += f(X) * a(X) if
magic_g(X)magic_goal.magic_a(X) :-
magic_goalmagic_b(X) :-
magic_goal, a(X).magic_c(X,Y) :-
magic_a(X).etc.
goal
a(1) b(1) a(2) b(2) a(3) b(3) f(3)f(1) f(2)
c(1,2) d(2)
e(2)
c(3,3) d(3)
e(3)
c(2,2)d(1)
e(1)
g(1) g(2) g(3)
![Page 78: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/78.jpg)
May 3, 2023Jason Eisner & John Blatz
Magic evaluationgoal += a(X) * b(X) if
magic_goala(X) += c(X,Y) * d(Y) if
magic_a(X)d(Y) += e(Y) if
magic_d(Y)f(X) += c(X,X) * e(X) if
magic_f(X)g(X) += f(X) * a(X) if
magic_g(X)magic_goal.magic_a(X) :-
magic_goalmagic_b(X) :-
magic_goal, a(X).magic_c(X,Y) :-
magic_a(X).c(1,2) := 2. if
magic_c(X,Y).
goal
a(1) b(1) a(2) b(2) a(3) b(3) f(3)f(1) f(2)
c(1,2) d(2)
e(2)
c(3,3) d(3)
e(3)
c(2,2)d(1)
e(1)
g(1) g(2) g(3)
now we can actually build c(1,2) !
![Page 79: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/79.jpg)
May 3, 2023Jason Eisner & John Blatz
Magic evaluationgoal += a(X) * b(X) if
magic_goala(X) += c(X,Y) * d(Y) if
magic_a(X)d(Y) += e(Y) if
magic_d(Y)f(X) += c(X,X) * e(X) if
magic_f(X)g(X) += f(X) * a(X) if
magic_g(X)magic_goal.magic_a(X) :-
magic_goalmagic_b(X) :-
magic_goal, a(X).magic_c(X,Y) :-
magic_a(X).c(1,2) := 2. if
magic_c(X,Y).
goal
a(1) b(1) a(2) b(2) a(3) b(3) f(3)f(1) f(2)
c(1,2) d(2)
e(2)
c(3,3) d(3)
e(3)
c(2,2)d(1)
e(1)
g(1) g(2) g(3)
![Page 80: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/80.jpg)
May 3, 2023Jason Eisner & John Blatz
Magic evaluationgoal += a(X) * b(X) if
magic_goala(X) += c(X,Y) * d(Y) if
magic_a(X)d(Y) += e(Y) if
magic_d(Y)f(X) += c(X,X) * e(X) if
magic_f(X)g(X) += f(X) * a(X) if
magic_g(X)magic_goal.magic_a(X) :-
magic_goalmagic_b(X) :-
magic_goal, a(X).magic_c(X,Y) :-
magic_a(X).magic_d(Y) :-
magic_a(X), c(X,Y).
goal
a(1) b(1) a(2) b(2) a(3) b(3) f(3)f(1) f(2)
c(1,2) d(2)
e(2)
c(3,3) d(3)
e(3)
c(2,2)d(1)
e(1)
g(1) g(2) g(3)
![Page 81: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/81.jpg)
May 3, 2023Jason Eisner & John Blatz
Magic evaluationgoal += a(X) * b(X) if
magic_goala(X) += c(X,Y) * d(Y) if
magic_a(X)d(Y) += e(Y) if
magic_d(Y)f(X) += c(X,X) * e(X) if
magic_f(X)g(X) += f(X) * a(X) if
magic_g(X)magic_goal.magic_a(X) :-
magic_goalmagic_b(X) :-
magic_goal, a(X).magic_c(X,Y) :-
magic_a(X).magic_e(Y) :-
magic_d(Y).
goal
a(1) b(1) a(2) b(2) a(3) b(3) f(3)f(1) f(2)
c(1,2) d(2)
e(2)
c(3,3) d(3)
e(3)
c(2,2)d(1)
e(1)
g(1) g(2) g(3)
![Page 82: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/82.jpg)
May 3, 2023Jason Eisner & John Blatz
Magic evaluationgoal += a(X) * b(X) if
magic_goala(X) += c(X,Y) * d(Y) if
magic_a(X)d(Y) += e(Y) if
magic_d(Y)f(X) += c(X,X) * e(X) if
magic_f(X)g(X) += f(X) * a(X) if
magic_g(X)magic_goal.magic_a(X) :-
magic_goalmagic_b(X) :-
magic_goal, a(X).magic_c(X,Y) :-
magic_a(X).magic_e(Y) :-
magic_d(Y).
goal
a(1) b(1) a(2) b(2) a(3) b(3) f(3)f(1) f(2)
c(1,2) d(2)
e(2)
c(3,3) d(3)
e(3)
c(2,2)d(1)
e(1)
g(1) g(2) g(3)
![Page 83: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/83.jpg)
May 3, 2023Jason Eisner & John Blatz
Magic evaluationgoal += a(X) * b(X) if
magic_goala(X) += c(X,Y) * d(Y) if
magic_a(X)d(Y) += e(Y) if
magic_d(Y)f(X) += c(X,X) * e(X) if
magic_f(X)g(X) += f(X) * a(X) if
magic_g(X)magic_goal.magic_a(X) :-
magic_goalmagic_b(X) :-
magic_goal, a(X).magic_c(X,Y) :-
magic_a(X).magic_e(Y) :-
magic_d(Y).
goal
a(1) b(1) a(2) b(2) a(3) b(3) f(3)f(1) f(2)
c(1,2) d(2)
e(2)
c(3,3) d(3)
e(3)
c(2,2)d(1)
e(1)
g(1) g(2) g(3)
![Page 84: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/84.jpg)
May 3, 2023Jason Eisner & John Blatz
Magic evaluationgoal += a(X) * b(X) if
magic_goala(X) += c(X,Y) * d(Y) if
magic_a(X)d(Y) += e(Y) if
magic_d(Y)f(X) += c(X,X) * e(X) if
magic_f(X)g(X) += f(X) * a(X) if
magic_g(X)magic_goal.magic_a(X) :-
magic_goalmagic_b(X) :-
magic_goal, a(X).magic_c(X,Y) :-
magic_a(X).magic_e(Y) :-
magic_d(Y).
goal
a(1) b(1) a(2) b(2) a(3) b(3) f(3)f(1) f(2)
c(1,2) d(2)
e(2)
c(3,3) d(3)
e(3)
c(2,2)d(1)
e(1)
g(1) g(2) g(3)
![Page 85: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/85.jpg)
May 3, 2023Jason Eisner & John Blatz
Magic evaluationgoal += a(X) * b(X) if
magic_goala(X) += c(X,Y) * d(Y) if
magic_a(X)d(Y) += e(Y) if
magic_d(Y)f(X) += c(X,X) * e(X) if
magic_f(X)g(X) += f(X) * a(X) if
magic_g(X)magic_goal.magic_a(X) :-
magic_goalmagic_b(X) :-
magic_goal, a(X).magic_c(X,Y) :-
magic_a(X).magic_e(Y) :-
magic_d(Y).
goal
a(1) b(1) a(2) b(2) a(3) b(3) f(3)f(1) f(2)
c(1,2) d(2)
e(2)
c(3,3) d(3)
e(3)
c(2,2)d(1)
e(1)
g(1) g(2) g(3)
![Page 86: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/86.jpg)
May 3, 2023Jason Eisner & John Blatz
Magic evaluationgoal += a(X) * b(X) if
magic_goala(X) += c(X,Y) * d(Y) if
magic_a(X)d(Y) += e(Y) if
magic_d(Y)f(X) += c(X,X) * e(X) if
magic_f(X)g(X) += f(X) * a(X) if
magic_g(X)magic_goal.magic_a(X) :-
magic_goalmagic_b(X) :-
magic_goal, a(X).magic_c(X,Y) :-
magic_a(X).magic_e(Y) :-
magic_d(Y).
goal
a(1) b(1) a(2) b(2) a(3) b(3) f(3)f(1) f(2)
c(1,2) d(2)
e(2)
c(3,3) d(3)
e(3)
c(2,2)d(1)
e(1)
g(1) g(2) g(3)
![Page 87: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/87.jpg)
May 3, 2023Jason Eisner & John Blatz
Magic evaluationgoal += a(X) * b(X) if
magic_goala(X) += c(X,Y) * d(Y) if
magic_a(X)d(Y) += e(Y) if
magic_d(Y)f(X) += c(X,X) * e(X) if
magic_f(X)g(X) += f(X) * a(X) if
magic_g(X)magic_goal.magic_a(X) :-
magic_goalmagic_b(X) :-
magic_goal, a(X).magic_c(X,Y) :-
magic_a(X).magic_e(Y) :-
magic_d(Y).
goal
a(1) b(1) a(2) b(2) a(3) b(3) f(3)f(1) f(2)
c(1,2) d(2)
e(2)
c(3,3) d(3)
e(3)
c(2,2)d(1)
e(1)
g(1) g(2) g(3)
magic filtering avoided generating irrelevant items
![Page 88: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/88.jpg)
May 3, 2023Jason Eisner & John Blatz
Magic Templates Transformation
• 3rd argument of magic_constit always appears unbound in the head, so a single “default” value is derived for it
magic_constit(Y,I,J) :-
magic_constit(X,I,K), rewrite(X,Y,Z)
magic_constit(Z,J,K) :-
magic_constit(X,I,K), rewrite(X,Y,Z),constit(Y,I,J)
constit(X,I,K) +=
rewrite(X,Y,Z) * constit(Y,I,J) * constit(Z,J,K)
needed_only_if magic_constit(X,I,K)
![Page 89: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/89.jpg)
May 3, 2023Jason Eisner & John Blatz
Earley’s Algorithm
• constit(X,I,K) is built only if it can attach to something that is accessible from goal.
• Same operation as Earley’s algorithm [Minnen 96]• Applying the magic templates transformation
again yields the left-corner filter– only magic items are built if they will be provable
bottom-up
• Magic templates can also be used to compute values on-demand
![Page 90: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/90.jpg)
May 3, 2023Jason Eisner & John Blatz
Conclusions
• Program transformation on weighted logic programs is a useful generalization of the relationships between algorithms
• Described four useful transformations, including novel speculation transformation
• See paper for a more formal treatment• Future work:
– more transformations– automatic search for optimal transformation sequence– forward-chaining algorithm for non-ground items
![Page 91: Program Transformation for Optimization of Parsing Algorithms and other Weighted Logic Programs Jason Eisner and John Blatz 29 July 2006.](https://reader035.fdocuments.in/reader035/viewer/2022070605/5a4d1ad37f8b9ab059971f84/html5/thumbnails/91.jpg)
May 3, 2023Jason Eisner & John Blatz
Thank you!