首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除元素的TLA+故障

删除元素的TLA+故障
EN

Stack Overflow用户
提问于 2018-10-22 14:41:55
回答 1查看 144关注 0票数 2

目前正在学习TLA+,并且被困在这个简单的方法上,从寄存器中删除一个人。从我所能看到的情况来看,问题似乎与许可状态有关。

我的TLA+函数如下所示,并从寄存器中删除一个人以及权限。

代码语言:javascript
复制
DeRegister(p) == 
/\ p \in register
/\ register' = register \ {p}
/\ permission' = [x \in DOMAIN permission \ {p} |-> permission[x]]
/\ UNCHANGED <<location>>

我正在检查的类型有以下约束

代码语言:javascript
复制
TypeOk 
    /\ register \subseteq PERSON
    /\ permission \in [register -> SUBSET BUILDING]
    /\ location \in [register -> (BUILDING \union {OUTSIDE})]

我得到一个模型错误,typeOK被违反了。在堆栈跟踪中,错误如下所示

代码语言:javascript
复制
/\  location = [p1 |-> OUTSIDE]
/\  permission = << >>
/\  register = {}

谢谢你的洞察力

编辑:

以前的状态可能有一些用处

代码语言:javascript
复制
/\  location = [p2 |-> OUTSIDE]
/\  permission = [p2 |-> {}]
/\  register = {"p2"}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-22 15:20:49

location \in [register -> SUBSET BUILDING]的意思(除其他外)是指DOMAIN location = register。但是,在DeRegister之后,您有了DOMAIN location = {"pq"} /\ register = {},这违反了您的不变式。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52931982

复制
相关文章

相似问题

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