Рефакторинг моделей Alloy

В модели, которую я начал рисовать в Alloy на днях, я получаю следующее сообщение, когда пытаюсь найти экземпляр определенного предиката:

Объем перевода превышен. В этом контексте Вселенная содержит 34 атома и отношения арности 12 не могут быть представлены. Посетите http://alloy.mit.edu/, чтобы получить рекомендации по рефакторингу.

Любые предложения о том, где на сайте Alloy.mit.edu искать? Я не нашел ничего с очевидным ярлыком вроде «Модели рефакторинга, которые превышают возможности перевода».

Это существенный вопрос.

[Постскриптум: причиной моей проблемы, по-видимому, была неправильная начальная формулировка объявлений количественных переменных, которые я использовал в предикате; проблема исчезла, как только я правильно понял синтаксис объявлений. Полная информация недостаточно информативна, чтобы ее стоило записывать, поэтому я опускаю первоначальное описание деталей. Краткая версия такова: чтобы получить экземпляр конкретного конкретного примера, я изначально написал предикат в форме

    pred m {
      one t1 : table,
          r1, r2, r3 : row,
          c1, c2 : column,
          c11, c21 : headingcell, 
          c12, c22, c13, c23 : datacell | {

    ... // description of the example here

      }
    }

one охватывает все двенадцать переменных и [как мне сказали из надежных источников] внутренне переводится в понимание множества, определяемое отношением арности 12. Я хотел сказать нечто более похожее на следующее, что не вызывает проблема с возможностями перевода:

pred m {
   some t1 : table |
   some disj r1, r2, r3 : row |
   some disj c1, c2 : column |
   some disj c11, c21 : headingcell |
   some disj c12, c22, c13, c23 : datacell | {
     ...
   }
}

Итак: один из способов исправить некоторые модели, которые вызывают сообщение об ошибке способности к переводу, — очистить количественную оценку переменных.

Однако основной вопрос сохраняет интерес: когда модель выдает сообщение об ошибке возможности перевода, а квантификаторы уже чисты и правильны, есть ли документ для чтения?]


person C. M. Sperberg-McQueen    schedule 05.04.2014    source источник


Ответы (1)


Тип рефакторинга, необходимый в этом случае, вряд ли будет простым синтаксическим. Скорее, здесь это означает реструктуризацию модели, чтобы она не использовала отношение такой высокой арности. В приведенном выше примере я не могу увидеть, какое отношение имеет арность 12. Если вы опубликуете (или пришлете мне) автономную модель, я смогу посмотреть на нее, определить проблемное отношение и, возможно, даже предложить, как его избежать. .

person Aleksandar Milicevic    schedule 05.04.2014
comment
Я полагаю, что упомянутое отношение арности-12 — это m, которое объявляет двенадцать одноэлементных переменных. - person C. M. Sperberg-McQueen; 06.04.2014