
- •Часть II. Программное исчисление.
- •Программы как математические объекты
- •5. Семантика cf pascal.
- •Глава 5 знакомит нас с концепцией значения программ. Для точного описания этой идеи используются такие математические структуры как строки, списки, множества, отношения и функции.
- •5.1. Строки символов.
- •5.1.1. Конкатенация строк.
- •5.1.2. Подстроки.
- •5.1.3. Композиция строк.
- •5.1.3. Декомпозиция строк.
- •5.2. Списковые структуры.
- •5.2.1. Списковые операции.
- •5.2.2. Описание файлов с помощью списков.
- •5.3. Множества
- •5.3.1. Правила описания множеств.
- •5.3.2. Операции над множествами.
- •5.3.3. Отношения и функции.
- •5.4. Значение программ.
- •5.4.2. Прямое определение значения программы.
- •5.5. Заключение
5.3. Множества
Множества – наборы объектов, где не имеет значение порядок и повторяемость элементов. Множества это основное математическое понятие, на котором базируются отношения и функции.
Новые идеи: Множество, принадлежность множеству, подмножество, мощность множества, операции над множествами, объединение, пересечение, разность (различность).
Строки и списки – это наборы объектов, к которых порядок и повторение элементов имеют значение. Набор данных, в котором порядок и повторение элементов не имеет значения называется множеством. Во множестве элементы просто сгруппированы и никакой не является первым или следующим и не повторяется.
Элементы множества записываются в фигурных скобках. Конечно, элементы множества имеют определенный порядок при записи, но он не существенен. Например:
{A, B} и {B, A} описывают одно и то же множество.
Любой список задает множество, элементами которого являются элементы списка (множество элементов списка). Например, список
L = <†th†, †is †, †is †, †a †, †list example†>
Имеет множество его элементов
S = {†th†, †is †, †a †, †list example†}
В котором повторяющийся элемент †is † появляется только один раз. Поскольку порядок элементов не имеет значения, это же множество может быть записано в виде
S = {†list example†, †a †, †is †,†th† } = {†th†, †a †, †list example†, †is †}
Мы будем упоминать размер, говоря о множествах, например S можно назвать 4-множеством.
Элементы множества не обязательно должны быть одного типа, например следующее 3-множество
{A, †mixed†, <†can†, {†of†, †beans†}>}
содержит элемент символ, строку, и 2-список, который в свою очередь содержит строку и 2-множество, элементы которого являются строками.
Фундаментальная связь между элементом и множеством является его принадлежность данному множеству, для обозначения используется символ . В примере приведенном выше
†list example† S
но
†list † S
Множество, не имеющее элементов называется пустым множеством и записывается {}. Пустое множество отличается от пустого списка <>. Например для <> может быть выполнена конкатенация с другим списком, но это невозможно для {}. 1-множество называется одиночка (singleton). 1-множество отличается от его единственного элемента, и от списка с таким элементом. Например:
†string† {†string†} <†string†>
Множество S является подмножеством T, S T , если каждый элемент S является элементом T. Таким образом, S T если и только если для каждого x, x T если x S.
Множества S и T равны, S = T, если им принадлежать одни и те же элементы. Таким образом, S = T, если и только если S T и T S.
Пустое множество является подмножеством любого множества, включая себя самого, поскольку оно не имеет элементов, то значит в нем нет элемента, которого может не оказаться в любом другом множестве. Таким образом {} S, для любого S.
Если множества S и T не имеют общих элементов, то говорят, что они не пересекающиеся.