У меня есть переменная, которая должна иметь значение только при определенных условиях, поэтому, я полагаю, она должна быть необязательной переменной. Если это условие выполнено, необязательная переменная должна быть ограничена элементами набора.
Проблема в том, что MiniZin c, похоже, не любит необязательные переменные и наборы.
Как можно ли это переписать, чтобы MiniZin c не жаловался?
enum TYPES = { TYPE1, TYPE2 };
enum SUBTYPES = { SUBTYPE1, SUBTYPE2, SUBTYPE3, SUBTYPE4 };
var TYPES: mytype;
var opt SUBTYPES: subtype; % if "opt" is removed, it works
constraint mytype=TYPE1 -> subtype in { SUBTYPE1, SUBTYPE3 };