在序言中使用统一项操纵器创建延迟约束
这是我在序言中的算术不等式表达式:
2*X + 3*Y > 4*Z
我使用了单位项操纵器,如下所示:
Expr =.. [Op, Lhs, Rhs]
现在我有 Lhs = 2*X + 3*Y,Rhs 为 4*Z,Op 为 > 到现在为止一切都很好。
我想要的是使用 Eclipse Prolog 中的 IC 库为此表达式构建一个延迟目标。 例如,我希望像这样分配一个新创建的变量:
Eq = (Lhs #Op Rhs) %meaning, Eq = (2*X + 3*Y #> 4*Z)
现在,由于所需的不等式(在本例中为 >)存储在 Op 中,尽管我使用 Eq = (Lhs #Op Rhs)
,eclipse 返回错误。
当我的运算符要从变量 Op 中获取时,如何创建这个延迟约束? 谢谢。
This is my arithmetic inequality expression in prolog:
2*X + 3*Y > 4*Z
I used the unity term manipulator like this:
Expr =.. [Op, Lhs, Rhs]
And now I have Lhs = 2*X + 3*Y, Rhs as 4*Z and Op as >
Everything fine till now.
What I want is to construct a delayed goal using the IC library in Eclipse Prolog for this expression.
Example, I want a newly created variable to assigned like this:
Eq = (Lhs #Op Rhs) %meaning, Eq = (2*X + 3*Y #> 4*Z)
Now, since the required inequality (in this case >), is stored in Op, though I use Eq = (Lhs #Op Rhs)
, eclipse is returning error.
How do i create this delayed constraint, when my operator is to be taken from the variable Op?
Thank You.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以使用事实来定义关系:
或者使用
concat_atom/2
:例如:
请注意,这仅适用于基本的相等/不等运算符。您不能将
#
添加到任何运算符并期望它充当约束!You could use facts to define the relations:
Or use
concat_atom/2
:E.g.:
Note that this only works for the basic equality/inequality operators. You cannot add
#
to just any operator and expect it to work as a constraint!