Присвоить случайное значение переменным в 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
,