Promela中的递归数据类型

时间:2013-12-31 15:30:46

标签: recursion b-tree recursive-datastructures spin promela

我正在尝试在Promela中创建一个B-Tree,以便我可以证明它的内容,但是,似乎Promela不支持递归数据类型。这不起作用:

#define n 2
typedef BTreeNode
{
    int keys[2*n-1];
    BTreeNode children[2*n];
    int c;
};

如何在Promela中制作B-Tree,如果我不能,你会建议使用哪种工具?我考虑过QuickCheck和Prolog。然而,在Prolog中制作B-Tree也很难。

1 个答案:

答案 0 :(得分:2)

您将代表使用索引进入静态定义的节点数组的子节点。像这样:

#define n 2

#define BTreeNodeId   byte
typedef BTreeNode {
  BTreeNodeId my_id;
  int keys[2*n-1];
  BTreeNodeId children[2*n];
  int c;
};

BTreeNode nodes [10];
byte next_node_id = 0;

通过这个,您可以通过递增next_node_id来“分配”节点,并可以通过使用孩子的id引用nodes来访问子节点。