You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Prolog学习:如何使用overlap(A,B)谓词定义disjoint(S1,S2)谓词

基于overlap谓词实现disjoint谓词的方法

两个集合不相交的定义就是不存在公共元素,恰好是你已经实现的overlap(A,B)谓词的反面,直接对overlap的结果取否定即可,代码实现如下:

disjoint(S1, S2) :- \+ overlap(S1, S2).

相关说明

  • Prolog中的\+运算符对应否定即失败的语义:当overlap(S1,S2)可以被证明为真时,\+ overlap(S1,S2)返回假;当overlap(S1,S2)无法被证明为真时,\+ overlap(S1,S2)返回真,完全符合不相交集合的判断需求。
  • 你可以直接用测试用例验证效果:disjoint([1,2],[3,4])会返回真,disjoint([1,2],[2,3])会返回假,和你预期的判断逻辑一致即可。
  • 如果你的overlap谓词支持未完全实例化的列表查询,disjoint也会继承对应的能力,不需要额外修改逻辑。

内容的提问来源于stack exchange,提问作者Cassandra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 01:57:03