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 | 8776 reads
|
Browse archives
Active forum topics |
Recent comments
27 weeks 1 day ago
27 weeks 2 days ago
27 weeks 2 days ago
49 weeks 3 days ago
1 year 1 week ago
1 year 3 weeks ago
1 year 3 weeks ago
1 year 5 weeks ago
1 year 10 weeks ago
1 year 10 weeks ago