首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >处理多重关系( arity ~10)

处理多重关系( arity ~10)
EN

Stack Overflow用户
提问于 2018-08-24 12:57:08
回答 1查看 65关注 0票数 0

我有一个模型,它有一个类似于这个的sig:

代码语言:javascript
复制
sig State {
  ps: set P,
  cs: set C,
  o: set C -> set P,
  m: set M
}

像这样的谓词,处理两个State

代码语言:javascript
复制
pred my_pred [s, s': State] {
  ...
}

我正在尝试创建我的模型的参数化版本,其中我没有State签名,而是在函数和谓词中显式地传递这些字段。这意味着谓词看起来像这样

代码语言:javascript
复制
pred my_pred [(M -> P -> C -> (C -> P)) ->
              (M -> P -> C -> (C -> P))] {
  ...
}

我的问题是,如何轻松地处理相对较大的数量关系,比如my_pred中的关系?例如,我试图使用util/relation中的dom,但dom是在二元关系上定义的,不幸的是,似乎合金看到了这一点

代码语言:javascript
复制
  (M -> P -> C -> (C -> P))
  ->
  (M -> P -> C -> (C -> P))

作为一个10而不是2的关系;这意味着忽略括号。因此,使用dom将返回M类型的内容,而不是所需类型的(M -> P -> C -> (C -> P))

还有一个相关的问题,我想知道是否/如何在这样的关系上使用传递闭包运算符。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-27 15:45:04

通常情况下,数量关系大于3是不好的做法。

为什么不简单地声明谓词,如下所示:

代码语言:javascript
复制
pred my_pred [m,m':M , ps,ps':P , cs,cs':C , o,o':(C -> P)] {
  ...
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51997723

复制
相关文章

相似问题

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