ГОСТ Р HCO/HL7 27951— 2016
SET<T> element з : elementsT
IT
I S.except(52>.equal($1}; I
{ S.contdins(31};
S.except($1>.isEmpty; 1;
П ри м ечание — Эта литеральная форма практична только для относительно малых перечисляемых
множеств, но это не означает, что все множества являются относительно малым перечислением элементов.
Т аблица 8.38 — Примеры литералов множеств
ЛитералЗначение
{1; 3: 5; 7; 19}
Множество целых или вещественных чисел
{3; 1:5; 19; 7}
То же самое множество целых или вещественных чисел
{1.2
м:
2.67
m
;
17.8
m
}
Дискретное множество физических величин
{яблоко: апельсин; банан}
Множество строк символов
П ри м ечание — Если спецификация реализуемой технологии, основанной на символьном представле
нии данных, имеет более естественную форму литералов таких коллекций, то она должна использовать ее для
литералов множеств.
В.3.1.12 Преобразование значения элемента во множество: SET<T>
Значение типа Т может быть преобразовано в тривиальное множество, содержащее это значение как един
ственный элемент.
invariant(тх) {
((SET<T>}x>.contains
(х);
((SET<T>>х>.except(х>.isEmpty;
};
В.3.1.13 Выпуклая оболочка полностью упорядоченных множеств: IVL<T>
Множества величин могут быть полностью упорядоченными, если между любыми двумя элементами множе
ства определено отношение порядка. Следует учесть, что понятие «упорядоченного множества» не тождественно
списку (типданных LIST). Например, множество {3; 2: 4; 88: 1} является упорядоченным. Позиции элементов множе
ства не имеют значения, но можно провести сравнение элементов и записать их в порядке возрастания (1; 2; 4; 88).
Для полностью упорядоченных множеств можно построить выпуклую оболочку. Выпуклой оболочкой полно
стью упорядоченного множества S является наименьший интервал, содержащий множество S. Важность этого
понятия будет обсуждаться позже.
type Set<QTY> alias SET<QTY> (
BLtotallyOrderea;
IVL<T> hull;
I f
invariant(SET<QTY> s|
where s.nonNull I
s.totallyOrderecl.equal (Corall(QTY x, y>
where a.contains(x>.ana(s.contains(y{) I
x.compares(у»; |};
i ;
invariant (SET<QTY> 3}
where s.totailyOrOered )
s.hull.contains(3);
Corail(T e)
where s.contains<e) {
s.hull.low.lessOrEqual(e|;
e.lessOrEqual(s.hull.high};
};
I ;
385