首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TLA+:指定函数序列中每个元素的范围为{0}

TLA+:指定函数序列中每个元素的范围为{0}
EN

Stack Overflow用户
提问于 2019-11-28 20:23:29
回答 1查看 434关注 0票数 0

我试图在TLA+中指定一个存储单元集合,每个单元单元包含256个32位整数.我想指定在初始化时所有的内存都是零的。我直觉地认为,正确的方法类似于嵌套forall语句,但我不知道如何在TLA+中表达这一点。

代码语言:javascript
复制
---------------------------- MODULE combinators ----------------------------

EXTENDS Integers, FiniteSets, Sequences

CONSTANTS Keys, Values

VARIABLES Cells

TypeOK ==
    /\ Channels = 0 .. 255
    /\ Values = -2147483648 .. 2147483647
    /\ Cells \in Seq([Keys -> Values])

Init == ???
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-28 20:43:09

几件事。

如果

  1. 是常量,则在ASSUME中指定其域,而不是在不变量中指定。Values == -2147483648 .. 2147483647.
  2. Keys意味着一些仲裁输入;如果您指的是实际的常量,那么定义IsFiniteSet).
  3. You甚至可以是无限的;您必须始终为每个常量指定一个ASSUME (甚至IsFiniteSet).
  4. You也没有声明Channels,但是,就像Values一样,它似乎应该是一个简单的定义,而不是invariant.
  5. You没有说明您开始使用多少Cells。定义了TypeOKCells的数量在每一步都可以改变,甚至是空的。

但是假设你想要N个细胞来做一些N,那么:

Cells = [c ∈ 1..N ↦ [k ∈ Keys ↦ 0]]

但是你写了“域”,这里0在范围内,所以我不确定我是否理解你的问题。你还提到了频道,所以你的意思是:

Cells = [c ∈ 1..N ↦ [k ∈ Channels ↦ 0]]

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

https://stackoverflow.com/questions/59095734

复制
相关文章

相似问题

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