在UPPAAL中设置实现

时间:2014-05-20 05:43:37

标签: modeling verification promela uppaal

我有一个模型,其中一个过程需要从集合s中随机选择一个元素S。选择部分是单一操作。我在UPPAAL中知道的唯一类似数据结构是数组。

UPPAAL中是否存在 set 数据结构?如果没有,那么我该如何创建一个呢?

2 个答案:

答案 0 :(得分:0)

除非最近最近添加了一组数据结构(如过去10年左右),否则语言中就没有这样的内容。

我会将选择模型化为具有一个位置和| S |的过程每个边缘,将每个共享变量(选项)设置为与S不同的值。要触发选择,我将在紧急通道上使用同步。

答案 1 :(得分:0)

如果你的集合S是有限且可数的,那么尝试使用有界整数类型。 例如:

const int N = 10; // size of the whole domain
typedef int[1,N] range_t; // range of possible elements: indexed 1..N
typedef int[0,N-1] crange_t; // C-programmers may prefer indexed 0..N-1
bool S[range_t]; // boolean array encoding of membership

然后你可以选择S中的任何元素,如下所示:

select: e:range_t
guard: S[e]
sync:  hey[e]!
update: chosen_one=e