Два оператора AMPL, in и within проверяют членство в наборах. Операторы in и within это AMPL аналоги обозначений ∈ и ⊆ в традиционной алгебраической нотации.
in
Выражение: "B2" in NUTR является истиной тогда, и только тогда, если строка B2 является элементом набора NUTR. Оператор in устанавливает членство: i in PROD или (i,j) in LINKS. Его левый операнд (i) либо (i,j) является выражением, которое оценивается как строка или число, список выражений ((i) либо (i,j)) которого может быть разделен запятыми и заключен в скобки, с количеством выражений, равным измерению правого операнда PROD/LINKS, который должен быть выражением набора.
within
Выражение: MINREQ within NUTR истинно тогда, когда все элементы набора MINREQ также являются элементами NUTR. Т.е. когда MINREQ является подмножеством (либо полностью соответствует) NUTR.
Оператор within проверяет, содержится ли один набор в другом наборе. Можно применить within непосредственно к объявленному набору, чтобы сказать, что этот набор должен быть подмножеством другого набора. Левый операнд within должен быть выражением, которое оценивается как набор.
AMPL также поддерживает операторы not in и not within. Возвращаясь к примеру диеты, если все питательные вещества NUTR имеют минимальные требования, а максимальная потребность есть только у некоторого поднабора питательных веществ MAXREQ, тогда имеет смысл объявить эти наборы как:
set NUTR; set MAXREQ within NUTR;
AMPL отклонит данные для модели, если какой-либо элемент из MAXREQ, также не является элементом NUTR.