【问题标题】:How to solve boolean logic equation with prolog?如何用prolog求解布尔逻辑方程?
【发布时间】:2013-06-17 07:24:54
【问题描述】:

例如,如果我有一个表达式“C = A and B”,我想创建某种谓词,例如

solv(A, B, C) := C is A, B.

这样称呼它

solv(A, true, true).

这样 Prolog 就会说“B 是真的”。请帮忙。

【问题讨论】:

    标签: prolog logic expression


    【解决方案1】:

    看起来像

    and(A, B, R) :- A = true, B = true, R = true.
    or(A, B, R) :- (A = true ; B = true), R = true.
    solve(A, B, C, Result) :- or(A, B, R1), and(R1, C, Result).
    

    【讨论】:

    • 您是否正在寻找返回“真”或“假”原子作为显式结果的谓词?或者您是否想要根据被测试表达式的真值判断成功或失败的谓词?你的例子是一个混合物。如果表达式为真,它们将在R 中返回“真”并成功,但如果为假,它们将失败并且不实例化R
    • 除了@mbratch 的评论 (+1) 之外,您的 and/3 将与 and(true, true, true). 相同,您的 or/3 将与 or(true, _, true). or(_, true, true). 相同。你为了没有明显的收获而采用了更冗长/间接的表述,这也让我抬起了众所周知的眉毛。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-13
    • 1970-01-01
    • 2021-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多