合金函​​数输出二元关系

时间:2013-03-10 19:09:43

标签: function alloy

有人能告诉我如何使用Alloy中的函数输出二元关系吗? 例如,学生与教师联系,学生也与课程相关联。 我如何将学生作为输入,然后输出教师和课程之间的二元关系?

1 个答案:

答案 0 :(得分:4)

这样的东西?

sig Course {}
sig Teacher {}
sig Student {
  teacher: one Teacher, 
  course: some Course
}

fun binrel [s: Student]: Teacher -> Course {
  s.teacher -> s.course
}

run {
  some s: Student | (#binrel[s] > 2)
}

从函数返回二元关系没有特殊规则。我假设您的问题更多是关于关系产品运算符(->),在这种情况下您需要使用它来构造来自两个标量(或两个一元关系)的二元关系