User loginNavigation |
Allowing Unsafe Rules in Datalog?Certain rules are considered "unsafe" and disallowed in Datalog because they don't restrict all of their variables to a finite domain (and therefore may not have a finite number of solutions). For instance, in: beef(X) :- lemur(X), not(alice(X, Y)), not(bahnanlagen(Y)). Y is not restricted to a finite domain, so the rule is unsafe. Additionally, no use of the beef predicate can further restrict the domain of Y. However, a rule may be unsafe only because its distinguished variables are not restricted: orange(X) :- zorro(Y), X < Y. A predicate like orange/1 doesn't seem different from a negated relational predicate or an arithmetic predicate, since its otherwise unrestricted variables can be further restricted by the context in which it is used. For instance, a rule like: fromage(X) :- elephant(X), orange(X). ...appears to be safe (where elephant/1 and zorro/1 are safe relational predicates). After all, the apparently equivalent: fromage(X) :- elephant(X), zorro(Y), X < Y. ...is safe in that case. Provided their use is restricted in the same fashion as negated and arithmetic predicates, are there any problems with permitting this latter kind of unsafe rule that I'm just not seeing? By mental at 2007-09-19 18:16 | LtU Forum | previous forum topic | next forum topic | other blogs | 8788 reads
|
Browse archives
Active forum topics |
Recent comments
33 weeks 43 min ago
33 weeks 4 hours ago
33 weeks 4 hours ago
1 year 3 weeks ago
1 year 7 weeks ago
1 year 8 weeks ago
1 year 8 weeks ago
1 year 11 weeks ago
1 year 16 weeks ago
1 year 16 weeks ago