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 | 8697 reads
|
Browse archives
Active forum topics |
Recent comments
10 weeks 4 days ago
10 weeks 5 days ago
10 weeks 5 days ago
32 weeks 6 days ago
37 weeks 1 day ago
38 weeks 5 days ago
38 weeks 5 days ago
41 weeks 3 days ago
46 weeks 12 hours ago
46 weeks 14 hours ago