合金映射关系

时间:2013-01-07 14:24:26

标签: verification alloy

我几乎开始研究合金做一些验证。我正在努力练习为表示编程语言的简单结构。

  

映射实体具有程序和依赖关系

     

程序具有功能

     

函数有代码行

     

依赖关系是一个实体,它在程序中的某个函数中映射2行代码

这是我尝试做的,但输出图显示了一行链接到依赖关系元组但未与该函数匹配的代码。我需要所有代码行都在函数中,它们可以是依赖关系还是不是......

abstract sig mapping{}

sig Dependency extends mapping {dep0,dep1: one line}

one sig Program extends mapping{ F: some function, D: some Dependency }

//mapping entity is composed of Dependency pairs 2 lines of code 
//and one program which has functions and dependency pairs

sig function { Line : some line}
//Function is made of line of code

abstract sig line{}

run {}

1 个答案:

答案 0 :(得分:3)

您应该添加一些可以强制执行模型约束的事实。

例如,要强制每行都有相应的功能,您可以编写类似

的内容
fact LinesBelongToFunctions {
  all ln: line | 
    one f: function | 
      ln in f.Line
}

事实上,对于每一行ln,只有一个函数ff.Lines包含行ln