Function ALLOY-如何设置签名的值

Function ALLOY-如何设置签名的值,function,signature,alloy,Function,Signature,Alloy,我想将从一个应用程序到另一个应用程序的数据部分的访问形式化。首先,我为请求(例如APP1想要读取APP2的数据部分)和权限(请求A可能被阻止)创建签名 我为我的想法写了两个函数,但它不起作用。有人能帮我吗 //Assign a request pred P_026 [asc: request, app1: NonTrusted, app2: OS_App, ds: app2.ownDS]{ asc.from = app1 asc.to = ds asc.act = re

我想将从一个应用程序到另一个应用程序的数据部分的访问形式化。首先,我为请求(例如APP1想要读取APP2的数据部分)和权限(请求A可能被阻止)创建签名

我为我的想法写了两个函数,但它不起作用。有人能帮我吗

//Assign a request 
pred P_026 [asc: request, app1: NonTrusted, app2: OS_App, ds: app2.ownDS]{
    asc.from = app1
    asc.to = ds
    asc.act = read
}

//If the Request is A then status is may_prevent
fun F_026[s: status, requ: request, app1: NonTrusted, app2: OS_App, ds: app2.ownDS]: set may_prevent{
    {s : requ.per | requ in P_026[requ,app1,app2,ds]} 
}

我不知道你是否还在为这个问题挣扎!!我不完全理解你的问题,因为我们没有看到所有签名的定义:“未受信任”,“操作”


但我可以看到这里有一个问题:“p_026[requ,app1,app2,ds]中的requ”你不能写这个“谓词中的原子”是荒谬的。

非常感谢你的评论。我解决了这个问题:D@TrìnhLêKhánh太棒了!!
//Assign a request 
pred P_026 [asc: request, app1: NonTrusted, app2: OS_App, ds: app2.ownDS]{
    asc.from = app1
    asc.to = ds
    asc.act = read
}

//If the Request is A then status is may_prevent
fun F_026[s: status, requ: request, app1: NonTrusted, app2: OS_App, ds: app2.ownDS]: set may_prevent{
    {s : requ.per | requ in P_026[requ,app1,app2,ds]} 
}