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

Prolog沙箱限制错误:无法推导可调用谓词的解决方法

修复Prolog沙箱限制错误的方案

错误原因

沙箱限制错误是因为代码中直接将true/false布尔值当作谓词调用(比如expression1里的(C, \+J),这里变量C是布尔值,却被作为目标执行),Prolog沙箱会拦截这种无法提前静态推导的动态谓词调用。同时原代码的expression3末尾多了一个分号,存在语法错误。

修复后的完整代码

expression1(C, J) :-
    (C = true, J = false);
    (C = false, J = true).

expression2(J, D) :-
    (J = true, D = false);
    (J = false, D = true).

expression3(D, C, J) :-
    (
        D = true,
        C = false,
        J = false
    );
    (
        D = false,
        (C = true ; J = true)
    ).

values([true, false]).

combined_expression(C, J, D) :-
    write('C = '), write(C), write(', '),
    write('J = '), write(J), write(', '),
    write('D = '), writeln(D),
    expression1(C, J),
    expression2(J, D),
    expression3(D, C, J).    

solve:- 
    values(Values),
    member(A, Values),
    member(B, Values),
    member(C, Values),
    combined_expression(A, B, C).

关键修改点

  • 将所有直接使用布尔变量作为谓词的写法(比如C、\+J)替换为显式的相等判断(C = true、J = false),避免动态调用触发沙箱拦截。
  • 移除expression3末尾多余的分号,修复语法错误。

内容的提问来源于stack exchange,提问作者Станислав

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 23:16:07