prolog中的多集包含函数

prolog中的多集包含函数,prolog,Prolog,我想写一个prolog程序,检查一个列表是否包含在其他列表中 多种元素很重要 这是我写的,但输入失败-包含([a,b,b,d],[a,b,b,c,c,d,d])。这应该返回true。其他示例-包含([a,b,b,d],[a,b,b,c,c,d,d]) 应该返回false inclusion([],_). inclusion([X|L],Set):- member(X,Set),delete(Set,X,Set2), inclusion(L,Set2). 上面是我写的代码。逻辑

我想写一个prolog程序,检查一个列表是否包含在其他列表中
多种元素很重要
这是我写的,但输入失败-
包含([a,b,b,d],[a,b,b,c,c,d,d])。

这应该返回true。其他示例-包含([a,b,b,d],[a,b,b,c,c,d,d])
应该返回false

 inclusion([],_).
    inclusion([X|L],Set):-
    member(X,Set),delete(Set,X,Set2), inclusion(L,Set2).
上面是我写的代码。逻辑检查第一个元素是否在集合中
然后从集合中删除该元素,并检查剩余列表是否在集合中

但这似乎不起作用

此谓词不适用于第一个列表中多次出现的条目,因为
delete
会删除
Set
的所有外观。使用
选择
仅删除匹配的第一个元素:

inclusion([],_).
inclusion([X|L],Set):-
   member(X,Set),select(X, Set, Set2), inclusion(L,Set2).
给你:

?- inclusion([a,b,b,d],[a,b,b,c,c,d,d]).
true .

?- inclusion([a,b,b,b,d],[a,b,b,c,c,d,d]).
false.