Prolog 从跟踪中隐藏模块/包

Prolog 从跟踪中隐藏模块/包,prolog,trace,swi-prolog,Prolog,Trace,Swi Prolog,如何隐藏模块或整个包以防止跟踪。 我有这个问题,我想逐步解决,但是 我对CLP(X)所做的事情不感兴趣,只对我的查询失败的地方感兴趣 ?- X in 0..5, X in 7..8. fail. ?- dif(A, 1), A = 1. fail. 如果我在SWI Prolog中运行这个查询,它会显示每个漂亮的东西 模块CLP(X)的详细信息,而不仅仅是一些内联 与约束相关,但也与CLP(X)的所有其他内容相关: 是否有抑制CLP(X)内部的方法。对于 例如,如果我使用另一个Prolog系统

如何隐藏模块或整个包以防止跟踪。 我有这个问题,我想逐步解决,但是 我对CLP(X)所做的事情不感兴趣,只对我的查询失败的地方感兴趣

?- X in 0..5, X in 7..8.
fail.

?- dif(A, 1), A = 1.
fail.
如果我在SWI Prolog中运行这个查询,它会显示每个漂亮的东西 模块CLP(X)的详细信息,而不仅仅是一些内联 与约束相关,但也与CLP(X)的所有其他内容相关:

是否有抑制CLP(X)内部的方法。对于 例如,如果我使用另一个Prolog系统,我看不到任何 中电内部(X)(预览):


是否有一种优雅的方法可以禁用模块/包,但仍可以看到模块/包的顶级调用/退出?

在SWI Prolog中有多种方法可以控制调试过程,请参阅。在这个can中,您可以使用
跳过
选项,该选项将“跳过此呼叫的退出端口或唤醒端口”。在Enter的跟踪输入期间按s可激活该选项

在本例中,跳过所有调用会产生一个与您的Jekejeke示例非常相似的跟踪(尽管格式不太好):


追踪CPLFD导致任何地方,而不是考虑推广和专业化!大多数情况下,它会显示标记失败。我通常希望使用
跟踪。
并仅隐藏clpfd。并不是所有的工作都在clpfd中进行。看起来建议不要使用
跟踪。
而是使用
跟踪(mypred/2,+all)。
SICStus的指令
module/3
带有第三个参数
[hidden(true)]
purpose@false注意那里的标签。
Welcome to SWI-Prolog (threaded, 64 bits, version 8.1.2)

?- trace.
true.

[trace]  ?- X in 0..5, X in 7..8.
   Call: (9) clpfd:clpfd_in(_2662, 0..5) ? creep
   Call: (10) clpfd:fd_variable(_2662) ? creep
   Call: (11) var(_2662) ? creep
   Exit: (11) var(_2662) ? creep
   Call: (11) true ? creep
   Exit: (11) true ? creep

[trace]  ?- dif(A, 1), A=1.
   Call: (9) dif:dif(_3044, 1) ? creep
   Exit: (9) dif:dif(_3410{dif = ...}, 1) ? creep
   Call: (9) _3410{dif = ...}=1 ? creep
Jekejeke Prolog 3, Development Environment 1.3.6

?- trace.
Yes

?- X in 0..5, X in 7..8.
    0 Call X in 0..5 ? 
    0 Exit X in 0..5 ? 
    0 Call X in 7..8 ? 
    0 Fail X in 7..8 ? 
No

?- neq(A, 1), A = 1.
    0 Call neq(A, 1) ? 
    0 Exit neq(A, 1) ? 
    0 Call A = 1 ? 
    0 Fail A = 1 ? 
No
?- use_module(library(clpfd)).
true.

?- trace.
true.

[trace]  ?- X in 0..5, X in 7..8.
   Call: (9) clpfd:clpfd_in(_7788, 0..5) ? skip
   Exit: (9) clpfd:clpfd_in(_8226{clpfd = ...}, 0..5) ? creep
   Call: (9) integer(_8226{clpfd = ...}) ? skip
   Fail: (9) integer(_8226{clpfd = ...}) ? creep
   Call: (9) clpfd:clpfd_in(_8226{clpfd = ...}, 7..8) ? skip
   Fail: (9) clpfd:clpfd_in(_8226{clpfd = ...}, 7..8) ? creep
false.