首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Prolog中的包冲突测试

Prolog中的包冲突测试
EN

Stack Overflow用户
提问于 2013-03-11 01:52:41
回答 1查看 83关注 0票数 1

这是一个Prolog程序,我想检查Linux包之间的依赖关系,以及是否存在冲突。

代码语言:javascript
复制
dep(gnome1,gcc7).
confl(gcc7,gcc8).

% recursive chain dependency
depend(X,Y):- dep(X,Y).
depend(X,Y):- dep(X,Z), depend(Z,Y).

% conflict(X,Y) holds if X and Y depend
on two packages which conflict, conflict between two
packages should be a symmetric relation.

% my poor attempt
conflict(X,Y):- depend(X,A), depend(Y,B), (confl(A,B) | confl(B,A)).
EN

回答 1

Stack Overflow用户

发布于 2013-03-11 05:22:21

我认为你的方法几乎是正确的:

代码语言:javascript
复制
dep(gnome1,libc7).
dep(gnome1,gcc7).

dep(gnome2,gnome1).
dep(gnome2,gcc8).

confl(gcc7,gcc8).

% recursive chain dependency
depend(X,Y):- dep(X,Y).
depend(X,Y):- dep(X,Z), depend(Z,Y).

% conflict(X,Y) holds if X and Y depend
% on two packages which conflict, conflict between two
% packages should be a symmetric relation.

conflict(X,Y) :-
    depend(X,A), depend(Y,B),
    X @< Y,  % break symmetry
    (confl(A,B) ; confl(B,A)).

我在测试中添加了一些(错误的)配置:

代码语言:javascript
复制
11 ?- conflict(X,Y).
X = gnome1,
Y = gnome2 ;
false.
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15325485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档