Присвоить случайное значение переменным в NuSMV

У меня есть следующий код в NuSMV.

MODULE main
VAR
   x : 0..5

Таким образом, x является переменной, которая может принимать целочисленные значения 0,1,2,3,4,5. Затем я инициализирую его и устанавливаю правила перехода.

ASSIGN
    init(x):=1;
    next(x) := case
         y=1 & z=23: 4;
         TRUE: 0..5;
    esac;

Выше следует сказать, что x изначально равен 1. Тогда, если y=1 и z=23, x становится 4, в противном случае x может принимать любые случайные значения из своей области. Эта "иная" часть логики вызывает у меня сомнения. Я правильно закодировал это? y и z - переменные, коды которых здесь не показаны. Предположим, что-то для y и z.

Или я должен был написать:

TRUE: {0,1,2,3,4,5};

Потому что я точно знаю, что вышеприведенное верно на странице 4 этого документа.

Но это невозможно для очень большой области. Предположим, что x может принимать любое значение от 0 до 293.

1 ответ

Решение

Да, это правильно.

integer set{0, 1, 2, 3, 4, 5} также может быть написано как 0 .. 5согласно следующей документации:

2.1.6 Набор типов

типы набора используются для идентификации выражений, представляющих набор значений. Есть четыре set типы: boolean set, integer set, symbolic set, integers-and-symbolic set, set типы могут быть использованы очень ограниченным числом способов. В частности, переменная не может быть set тип. Только range constant а также union Оператор может быть использован для создания выражения set тип и только in, case, (• ? • : •) и выражения присваивания могут иметь непосредственные операнды set тип.

каждый set Тип имеет аналог среди других типов. Особенно,

  • аналог boolean set тип boolean,

  • аналог integer set тип integer,

  • аналог symbolic set тип symbolic enum,

  • аналог integers-and-symbolic set тип integers-and-symbolic enum,

Некоторые типы, такие как unsigned word[•] а также signed word[•] не имеют set введите аналог.

а также

Диапазон Постоянный

range constant определяет набор последовательных целых чисел. Например, константа -1..5 указывает на набор чисел -1, 0, 1, 2, 3, 4 а также 5, Другие примеры range constant может быть 1..10, -10..-10, 1..300, Синтаксическое правило range constant является следующим:

range_constant
    :: integer_number .. integer_number

с дополнительным ограничением, что первое целое число должно быть меньше или равно второму целому числу. Тип range constant является integer set,

Другие вопросы по тегам