Unformatted text preview: Five Groups of Rules for Magic Construction
Let r be a typical rule
H : G1 & G2 & & G
Group I
Supplementary magic for next subgoal. If G
has IDB predicate p:
m pbound args of G : sup ,1variables
Group II
Magic 0th supplementary. If head has predicate
q:
sup 0 variables : m qbound args
Group III
i , 1st supplementary + G ith supplementary.
sup variables : sup ,1variables & G
n i i r:i r: i r:i r:i i Group IV
Last supplementary + last subgoal head.
H : sup ,1variables & G
Group V
Initialize. If query has predicate p we have the
bodyless rule
m pbound args from query
r:n n Group V is the only rule that depends on
the actual query. Others depend only on the
binding pattern. MagicSets Beats TopDown
Claim: the magic" rules implemented by
seminaive evaluation only infers facts that any
topdown implementation would infer.
3 I.e., magicsets + seminaive has the
advantages of both topdown and bottomup.
3 Well not exactly. Prolog uses a tailrecursion elimination" technique that
sometimes does in On time what takes
On2 by magicsets.
3 The same trick has been used in
deductive systems like LDL, Coral; it is
described in Ch. 15 of PDKSII.
1 Example Binary trees constructed as terms.
Leaves constructed by constant leaf .
Interior nodes constructed by function symbol
n. nT1 ; T2 is a tree with left subtree T1 and
right subtree T2 .
Predicate subT1 ; T2 true when T1 is a
subtree of T2 .
Predicate eqT1 ; T2 true when T1 and T2 are
identical trees.
Rules:
r1: eqleaf,leaf
r2: eqnT1,T2,nT3,T4 : eqT1,T3 & eqT2,T4 r3: subT1,T2 : eqT1,T2
r4: subT1,nT2,T3 : subT1,T2
r5: subT1,nT2,T3 : subT1,T3
Query: subT,nnleaf,leaf,leaf, i.e.,
nd the subtrees of a speci c tree. Adorned
goal: sub .
fb The Rule Goal Graph
sub fb r3 02j 1
T T : eq r4 02 3j 1
T ;T r5 02 3j 1 T T : ;T : fb r1j 0 r2 03 4j 1 2
T : ;T T ;T : r2 11 3 4j 2
T ;T ;T : Interesting fact: r4 and r5 are not safe.
however, for the sub binding pattern, all
variables of the head either appear in the
fb 2 T T body or are present in a bound argument of
the head.
This notion of safety with respect to a binding
pattern is appropriate when magicsets is used. The Magic Rules
Group I
m
m
m
m
m eqT3 : sup2:0T3,T4
eqT4 : sup2:1T1,T3,T4
eqT2 : sup3:0T2
subT2 : sup4:0T2,T3
subT3 : sup5:0T2,T3 Group II sup2:0T3,T4 : m eqnT3,T4
sup3:0T2 : m subT2
sup4:0T2,T3 : m subnT2,T3
sup5:0T2,T3 : m subnT2,T3 Group III sup2:1T1,T3,T4 :sup2:0T3,T4 & eqT1,T3 Group IV
eqleaf,leaf
eqnT1,T2,nT3,T4 :sup2:1T1,T3,T4 & eqT2,T4
subT1,T2 : sup3:0T2 & eqT1,T2
subT1,nT2,T3 :sup4:0T2,T3 & subT1,T2
subT1,nT2,T3 :sup5:0T2,T3 & subT1,T3 Group V m subnnleaf,leaf,leaf Simplifying Magic Rules
Use Group II rules to replace sup 0 's by
magic predicates.
If a supplementary predicate comes before an
EDB subgoal, it is used only once and may be
eliminated.
However, if it is before an IDB subgoal, it
is used twice, once in Group I and once in
Group III or IV.
r: 3 Thus, we can omit sup if i + 1st subgoal is
EDB and i 0.
We use in place of Group III rules new rules of
the form:
sup :sup ,1 & G & & G ,1
provided all of G +1; : : :; G ,1 are EDB. Also,
G is IDB, and either G is IDB or i = 1.
r:i r:j r:i i i j j j i Similarly, Group IV rules are replaced by
H : sup ,1 & G & & G
provided all of G +1; : : :; G are EDB. Also,
G is IDB or i = 1.
In the two rules above, use the appropriate
magic predicate if i = 1.
r:i i i n n i Example For the tree rules, we get:
Group I
m
m
m
m
m eqT3 : m eqnT3,T4
eqT4 : sup2:1T1,T3,T4
eqT2 : m subT2
subT2 : m subnT2,T3
subT3 : m subnT2,T3 Group III
sup2:1T1,T3,T4 :m eqnT3,T4 & eqT1,T3 Group IV
eqleaf,leaf
eqnT1,T2,nT3,T4 :sup2:1T1,T3,T4 & eqT2,T4
subT1,T2 : m subT2 & eqT1,T2
subT1,nT2,T3 :m subnT2,T3 & subT1,T2
subT1,nT2,T3 :m subnT2,T3 & subT1,T3 Group V
m subnnleaf,leaf,leaf 4 ...
View
Full
Document
This document was uploaded on 01/06/2012.
 Spring '09

Click to edit the document details