database - 数据记录中的不安全表达式
问题描述
为什么这个目标不被认为是安全的?
MANAGER(Name) :- WORKER(Name, Age, _ ), ¬ SUBORDINATE (_, Name), Age <= 40
我们的老师说这是因为 SUBORDINATE 是否定的,所以它不能有未定义的(_)空格,但对我来说这个表达式似乎是逻辑。任何人都可以帮助我吗?
解决方案
Datalog 中的安全要求旨在防止无限结果。如果你有一个变量出现在头部并且只在体内取反,那么它可以绑定到无限多个值,这显然是一个问题。
安全的具体要求很难精确制定,所以通常你会看到这些要求被简化为“每个变量都必须积极地发生”。这比需要的限制更多。
对该问题的最丰富的答案将是该规则在技术上是不安全的,但它没有无限的结果。一些 Datalog 引擎将允许此规则并返回有限结果。
推荐阅读
- r - R:如何将变量作为列名进行汇总和分组
- c# - 如何使用 C# 在 Unity 中真实地反映 3d 球体
- javascript - 跟随的输出是什么,为什么?
- node.js - 使用 CSS3 支持将 HTML 页面转换为 PDF
- python - 为什么我的图像变成方形 PIL?
- perl - 我可以在 Test2 测试中指定输出吗
- excel - 如果然后用excel vba中的范围替换如何使用?给出错误 13
- powershell - PowerShell脚本检查文件夹中的文件和电子邮件(如果找到)
- python - Pandas 将带有符号(“,”,“-”)的价格转换为整数
- reactjs - React 无法获取全局变量的值