4

私は現在、自分のプロジェクトで Alloy api を使用しており、A4Solutions を表示する必要があります。それは、Alloy が提供するビジュアライザー (vizGUI) を使用して簡単に行うことができますが、私の目的には少し制限されすぎています。そのため、A4Solution オブジェクトから (他のグラフ API を使用して) 独自のグラフを生成したいと考えています。

問題なく Atoms を取得できました (これはかなり簡単でした) が、これらのアトム間の関係を取得する方法がわかりません。

A4Solution を解析する方法の例をオンラインで探しましたが、残念ながら何も見つかりませんでした。

4

1 に答える 1

3

リレーション、またはフィールドは、sig から取得できます。次に、それらを評価して、次のような具体的なアトムを取得できます。

A4Solution sol = ...;
SafeList<Sig> sigs = sol.getAllReachableSigs();
for (Sig sig : sigs) {
  SafeList<Field> fields = sig.getFields();
  for (Field field : fields) {
    A4TupleSet ts = (A4TupleSet)(sol.eval(field));
    for(A4Tuple t: ts)
      for(int i=0; i<t.arity(); i++) 
        t.atom(i);
  }
}
于 2013-04-11T15:50:35.913 に答える