Что значит описать множество
Что такое множество в математике и как оно обозначается
Множество – это количество предметов или чисел, обладающих общими свойствами.
Данное определение подходит к любой совокупности с одинаковыми признаками, независимо оттого, сколько предметов в нее входит: толпа людей, стог сена, звезды в небе.
В математике изучаемое понятие обозначается заглавными латинскими буквами, например: А, С, Z, N, Q, A1, A2 и т. д.
Объекты, составляющие группу, называются элементами множества и записываются строчными латинскими буквами: a, b, c, d, x, y, a1, a2 и т. д.
Границы совокупности обозначаются фигурными скобками < >.
А = <а, в, с, у>– А состоит из четырех элементов.
Записать совокупность Z согласных букв в слове «калькулятор»:
Z = <к, л, т, р>, повторяющиеся согласные записываются один раз. Z состоит из четырех элементов.
Принадлежность элементов множеству обозначается знаком – Є.
Пример: N = , а Є N – элемент «а» принадлежит N.
Выделяют три вида множеств:
пустые (обозначаются Ø) – не имеющие элементов.
Пример: А = <а, в, с, у>и В = <а, в, с, е, к>– все элементы А являются элементами совокупности В, следовательно А ⊆ В.
Если множества состоят из одинаковых элементов, их называют равными.
Пример: А = <23, 29, 48>и В = <23, 29, 48>, тогда А = В.
В математике выделяют несколько числовых совокупностей. Рассмотрим их подробнее.
Множество натуральных чисел
Относится ли ноль к натуральным числам? Это до сих пор открытый вопрос для математиков всего мира.
Множество целых чисел
Совокупность целых чисел (Z) включает в себя положительные натуральные и отрицательные числа, а также ноль:
Множество рациональных чисел
Совокупность рациональных чисел (Q) состоит из дробей (обыкновенных и десятичных), целых и смешанных чисел:
Любое рациональное число можно представить в виде дроби, у которой числителем служит любое целое число, а знаменателем – натуральное:
Следовательно, N и Z являются подмножествами Q.
Операции над множествами
Точно так же, как и все математические объекты, множества можно складывать и вычитать, то есть совершать операции.
Если две группы образуют третью, содержащую элементы исходных совокупностей – это называется суммой (объединением) множеств и обозначается знаком ∪.
Если две группы совокупностей образуют третью, состоящую только из общих элементов заданных составляющих, это называется произведением (пересечением) множеств, обозначается значком ∩.
Если две совокупности образуют третью, включающую элементы одной из заданных групп и не содержащую элементы второй, получается разность (дополнение) совокупностей, обозначается значком /.
В случае, когда В / С = С / В, получается симметричная разность и обозначается значком Δ.
Для «чайников» или кому трудно даётся данная тема операции с совокупностями можно отобразить с помощью диаграмм Венна:
Объединение
Пересечение
Дополнение
С помощью данных диаграмм можно разобраться с законами де Моргана по поводу логической интерпретации операций над множествами.
Свойства операций над множествами
Операции над множествами обладают свойствами, аналогичными правилу свойств сложения, умножения и вычитания чисел:
Коммутативность – переместительные законы:
умножения S ∩ D = D ∩ S;
сложения S ∪ D = D ∪ S.
Ассоциативность – сочетательные законы:
умножения (S ∩ F) ∩ G = S ∩ (F ∩ G);
сложения (S ∪ F) ∪ G = S ∪ (F ∪ G).
Дистрибутивность – законы распределения:
умножения относительно вычитания S ∩ (F – G) = (S ∩ F) – (S ∩ G);
умножения относительно сложения G ∩ (S ∪ F) = (G ∩ S) ∪ (G ∩ F);
сложения относительно умножения G ∪ (S ∩ F) = (G ∪ S) ∩ (G ∪ F).
если S ⊆ Fи F ⊆ J, то S ⊆ J;
если S ⊆ F и F ⊆ S, то S = F.
Идемпотентность объединения и пересечения:
О других свойствах операций можно узнать из картинки:
Счетные и несчетные множества
Если между элементами двух групп можно установить взаимное немногозначное соответствие, то эти группы чисел равномощны, при условии равного количества элементов.
Мощность данной математической единицы равна количеству элементов в ней. Например, множество всех нечетных положительных чисел равномощно группе всех четных чисел больше ста.
Но не все группы действительных чисел счетные. Примером несчетной группы предметов является бесконечная десятичная дробь.
Понятие множества. Способы задания множеств.
Данная тема содержит немало терминологии, поэтому я добавлю содержание темы, которое позволит легче ориентироваться в материале.
Однако появление парадоксов (Рассел, Бурали-Форти) положило конец «канторовскому раю». Одна из формулировок парадокса Рассела, известная под названием «парадокс брадобрея» звучит так: в некотором селе брадобрей бреет тех и только тех жителей села, которые не бреются сами. Кто же тогда бреет самого брадобрея? Допустим, он бреет себя самостоятельно. Т.е. он принадлежит к тем жителям села, которые бреются сами, – а ведь согласно условию этих жителей брадобрей не имеет права брить. Следовательно, допущение о том, что брадобрей бреется сам, приводит к противоречию. Попробуем иначе: пусть брадобрей не бреется сам. Если он сам не бреется, то согласно условию его обязан брить брадобрей – вновь противоречие! Были предприняты попытки разрешить противоречия теории множеств, предложенной Кантором. Саму канторовскую теорию множеств математики назвали «наивной». Целью многих математических трудов стало построение такой системы аксиом, в которой подобные парадоксы были бы невозможны. Но задача оказалась не столь уж проста. На данный момент, насколько мне известно, единой аксиоматики теории множеств нет. Наиболее распространенной считается система аксиом Цермело-Френкеля (ZFC), в которой особняком стоит так называемая «аксиома выбора». Есть и вариации этой системы: например, автор B-метода Жан-Раймонд Абриал предложил типизированную теорию множеств, на основании которой создал формальный метод разработки программ.
Обозначение множеств. Принадлежность элемента множеству. Пустое множество.
Обычно множества записываются в фигурных скобках. Например, множество всех гласных букв русского алфавита будет записано так:
А множество всех целых целых чисел, больших 8, но меньших 15, будет таким:
Чаще всего в математической литературе множества обозначаются с помощью больших букв латинского алфавита. Например:
Простыми числами именуют такие натуральные числа большие 1, которые делятся лишь на 1 или на самое себя. Например, 2, 3, 5, 7 и так далее. Для сравнения: число 12 не является простым числом, так как оно делится не только на 12 и 1, а ещё и на иные числа (например, на 3). Число 12 является составным.
Подмножество. Универсальное множество. Равенство множеств. Булеан.
$$A\subseteq A; \; \varnothing\subseteq A.$$
Введём ещё одно определение – универсальное множество.
Иными словами, универсум содержит в себе элементы всех множеств, которые рассматриваются в рамках некоей задачи. Например, рассмотрим такую задачу: проводится опрос студентов некоей академгруппы. Каждому студенту предлагается указать мобильных операторов РФ, сим-карты которых он использует. Данные этого опроса можно представить в виде множеств. Например, если студент Василий использует сим-карты от МТС и Life, то можно записать следующее:
Подобные множества можно составить для каждого студента. Универсумом в этой модели будет множество, в котором перечислены все операторы России. В принципе, в качестве универсума можно взять также множество, в котором перечислены все операторы СНГ, а также множество всех мобильных операторов мира. И это не будет противоречием, ибо любой оператор России входит в множество операторов как СНГ, так и всего мира. Итак, универсум определяется только в рамках некоей конкретной задачи, при этом зачастую можно рассмотреть несколько универсальных множеств.
Используя понятие равенства множеств, можно классифицировать подмножества.
Примечание относительно терминологии: показать\скрыть
Вообще говоря, тут есть некая путаница в терминологии. Приведённое выше определение несобственных множеств принято в американской и части отечественной литературы. Однако в другой части отечественной литературы есть несколько иная трактовка понятия несобственных множеств.
Иными словами, пустое множество в такой трактовке исключается из собственных подмножеств и переходит в разряд несобственных. Выбор терминологии – дело вкуса.
Рассмотрим пару примеров на использование введённых выше понятий.
Из предложенного списка выберите те утверждения, которые являются верными. Ответ аргументируйте.
Ответ: Утверждения в пунктах №1, №2, №4 – истинны.
Булеан найден, остаётся лишь записать ответ.
Способы задания множеств.
Первый способ – это простое перечисление элементов множества. Естественно, такой способ подходит лишь для конечных множеств. Например, с помощью данного способа множество первых трёх натуральных чисел будет записано так:
$$P(x)=»x\; – \;натуральное\; число,\; последняя\; цифра\; которого \;равна\; 7″$$
$$P(27)=»27\; – \;натуральное\; число,\; последняя\; цифра\; которого \;равна\; 7″$$
$$P\left(\frac<2><5>\right)=»\frac<2><5>\; – \;натуральное\; число,\; последняя\; цифра\; которого \;равна\; 7″$$
Третий способ – задать множество с помощью так называемой порождающей процедуры. Порождающая процедура описывает, как получить элементы множества из уже известных элементов или неких иных объектов (см. пример №4).
$$3^1=1; \; 3^2=9; \; 3^3=27; \; 3^4=81;\; \ldots$$
Обычно при задании множества с помощью таких правил (которые часто называют рекурсивными или индуктивными) третий пункт подразумевается, но не оговаривается явно. Но нужно иметь его в виду.
Заметили ошибку, опечатку, или некорректно отобразилась формула? Отпишите, пожалуйста, об этом в данной теме на форуме (регистрация не требуется).
Теория множеств: основы и базовые операции над множествами
Мы знаем довольно много о структурах данных, понимаем их устройство, разбираемся, какие структуры работают быстро и помогают решать конкретные задачи. Но эти знания бесполезны, если мы не понимаем, как это использовать в реальной жизни. Это похоже на изучение геометрии в школе. Вы долго считаете предмет бесполезным, пока однажды не появляется необходимость рассчитать площадь пола, чтобы заказать новое ковровое покрытие. Впрочем, пользу геометрии можно почувствовать, даже если вы никогда не считали площадь пола в комнате самостоятельно.
Сегодня поговорим о структуре данных, которая в теории очень догматична, а на практике очень популярна. На самом деле вы так или иначе уже сталкивались с этой структурой, а также слышали о ней на уроках математики в школе. Вы уже догадались, что речь идёт о множествах.
Теория множеств без страха
Прежде чем разбирать устройство множеств, давайте поймём, откуда они появляются. То есть давайте сразу погрузимся в теорию — да-да, в теорию множеств! Не бойтесь сложностей — высока вероятность того, что вы уже так или иначе использовали эту теорию. Возможно, вы сталкивались с теорией множеств, когда проходили в школе диаграмму Венна. Диаграмму Венна включили в программу изучения множеств, так как она хорошо иллюстрирует отношения подмножеств.
Мы выяснили, что теория множеств не должна никого пугать. Теперь пришло время разобраться, что это за теория на самом деле. Множество — математическая концепция. Теорией множеств описывают отношения множеств.
Множество — ни что иное, как неупорядоченная коллекция, в которой нет дублирующихся элементов.
В этом определении есть три важных слова: «неупорядоченная», «дублирующихся» и «элементов». Эти слова точно передают суть и устройство множества. Если мы это запомним, то будем знать основную информацию о том, как работает эта структура данных.
Нужно понять, почему это важно. Для начала давайте посмотрим на множества в действии. Как сказано выше, отношения множеств удачно иллюстрирует диаграмма Венна. Давайте взглянем на два множества: книги, которые есть у человека дома, и книги, которые этот человек прочитал.
Если вы знакомы с диаграммой Венна, то понимаете, что в центре в зелёном круге находятся книги, которыми человек владеет, и которые он прочитал. Здесь множества пересекаются. Также вы понимаете, что два множества — прочитанные человеком книги и книги, которые есть у человека — существуют внутри другого множества. Это все существующие в мире книги.
Диаграмма Венна — хорошая база для понимания теории множеств, так как с её помощью легче понять более сложные вещи. Допустим, вы хотите представить два множества книг в какой-то структуре данных. Вы уже знаете, что книги надо разделить на два множества: которые человек прочитал и которые есть у него дома. Для удобства назовём первое множество Set X, а второе Set Y. Эти множества после реконфигурации в структуры данных можно представить с помощью диаграммы Венна.
Можно заметить, что множества Set X и Set Y стали похожи на объекты или хэши: элементы внутри них не имеют индексов или других элементов, позволяющих их упорядочить. В них также нет повторяющихся элементов, что делает эти структуры данных множествами. Как вы уже знаете, множество — это коллекция неупорядоченных элементов, которые не повторяются.
Начните изучать разработку с бесплатного курса «Основы современной вёрстки». Вы научитесь создавать статические веб-страницы, стилизовать элементы, использовать редакторы кода с полезными расширениями. В конце курса вы опубликуете свой первый сайт на GitHub Pages.
Об операциях с множествами без боли
Какие возможности открывает представление множеств в формате структур данных? С ними теперь можно выполнять разные операции. Две самые важные операции, которые выполняются над множествами — это пересечение и объединение.
Пересечение множеств часто записывается с помощью такой нотации: X ∩ Y. Пересечение определяет, где два множества пересекаются. Другими словами, эта операция возвращает все элементы, которые входят в два множества. В нашем примере пересечение Set X и Set Y возвращает все книги, которые человек читал и которые есть у него дома. Хороший ключ к пониманию пересечения — ключевое слово «и». Мы получаем книги, которые человек читал и которые есть у него дома. Несмотря на то, что полученные с помощью пересечения книги существуют в двух множествах, мы не повторяем их, так как в множестве могут быть только уникальные элементы.
Объединение двух множеств обозначается так: X ∪ Y. Объединение возвращает общность двух множеств или объединённое множество. Иными словами, с помощью объединения множеств можно получить новое множество элементов, которые существуют хотя бы в одном исходном множестве. В нашем случае объединение вернёт все книги, которые человек читал, а также все книги, которые есть у него дома. Обратите внимание, если книга входит одновременно в Set X и Set Y, она не может дублироваться в новом множестве после объединения, так как в множества входят только уникальные элементы.
С помощью диаграммы Венна пересечение и объединение можно представить так:
Теперь давайте рассмотрим более сложные вещи. Объединение и пересечение — важные операции над множествами, но это только азы теории. Нам надо познакомиться с другими операциями, чтобы решать более серьёзные задачи. Важно понимать разность множеств и относительные дополнения множеств. Ниже мы разберём, почему это важные операции, но сначала нужно понять, как они работают.
Как понятно из названия, разность множеств определяет разницу между множествами. Иными словами, мы определяем, какие элементы останутся в множестве X, если удалить из него все элементы, которые содержатся в множестве Y. Это действие можно обозначить так: X — Y. В примере на иллюстрации ниже разница между множеством X и множеством Y — это элементы, которые существуют в Set X, но не существуют в Set Y. Они обозначены буквами C, Z и W.
Относительное дополнение — противоположность разности множеств. Например, относительное дополнение Y по сравнению с X возвращает все элементы множества Y, которые не входят в множество X. Относительное дополнение можно обозначить так: X \ Y. Относительное дополнение X \ Y фактически возвращает такой же набор элементов, как разность Y — X. В нашем примере множество Y меньше множества X. Единственный элемент, который входит в Set Y, но не входит в Set X — число 2.
По сути, мы просто вычитаем множество X из множества Y и отвечаем на вопрос: что существует в Y, чего нет в X?
Вы могли заметить, что в части примеров мы имеем дело со строками, в другой части в качестве элементов выступают буквы и числа. Здесь надо подчеркнуть важный момент: множество может включать любой тип элементов или объектов. Вы можете рассматривать множества как хэши: они включают любые сущности, если те встречаются во множестве только один раз.
Теперь давайте рассмотрим ещё одну операцию, она самая сложная из всех. Но не пугайтесь, с ней тоже можно разобраться.
В некоторых случаях требуется найти противоположность пересечению множеств. Иными словами, речь идёт о книгах, которые есть у человека, и книгах, которые он прочитал, но которые не входят одновременно в оба множества. Как назвать это подмножество? И как найти его?
Правильное название для этого кейса — симметрическая разность множеств. Также употребляют термины «дизъюнктивное объединение» и «несвязное объединение». Симметрическая разность возвращает все элементы, которые входят в одно из множеств, но не входят в пересечение этих множеств. Пример на иллюстрации поможет разобраться с дизъюнктивным объединением.
В примере выше симметрическая разность похожа на поиск относительного дополнения множества X и множества Y. Если подходить к этому с позиции математики, поиск симметричной разницы — то же самое, что и объединение относительных дополнений множества X и множества Y. Эту операцию можно записать так: X △ Y= (X ∖ Y) ∪ (Y ∖ X).
Но не дайте сбить себя с толку!
Всё, что нужно для поиска симметрической разности — найти элементы, которые есть в множестве X, но отсутствуют в множестве Y, и какие элементы есть в множестве Y, но отсутствуют в множестве X. Иными словами, надо найти уникальные элементы в каждом множестве.
В примере выше числа 1, 2 и 3 входят в множества X и Y одновременно. А буквы A, B, C, X, Y, Z входят только в множества X или Y. Поэтому они представляют симметрическую разность множеств X и Y.
Мы рассмотрели теоретические вопросы. Теперь можно посмотреть, как теория множеств работает на практике.
Множества вокруг нас
К этому моменту вы наверняка задумались, зачем надо изучать теорию множеств. Это хороший вопрос, и пришло время ответить на него.
Уже догадались? Множества повсюду. Это структуры данных, которые мы можем использовать при работе с разными языками программирования, например, Python, Java, Ruby, JavaScript и так далее. Если вы знакомы с этими или другими языками программирования, то уже вспомнили методы, которые позволяют работать с множествами.
Вот пример на JavaScript.
Очевидно, что имена методов могут меняться в зависимости от языка. Например, метод has из примера выше в Ruby называется include?, но эти методы работают практически одинаково. А в Python при работе с множествами можно использовать методы intersection, union и symmetric_difference.
Но в чём именно польза множеств? Понятно, что с ними можно работать в разных языках программирования, но зачем это нужно на практике?
Один из моментов — множества могут сэкономить вам много времени. Помните все эти сложные операции — intersection, union, difference? Уже догадались? Продолжительность выполнения этих операций зависит от размера множеств. Это связано с тем, что для выполнения операций нам надо обойти все элементы множества. Обычно даже гигантские множества можно обойти достаточно быстро.
Но как насчёт основных операций? Как насчёт добавления элементов в одно из множеств, удаления элементов, поиска конкретного элемента в множестве? Все эти операции выполняются за константное время или 0(1). Это очень мощный инструмент, и это значит, что множества могут быть даже более удобной структурой данных, чем словарь или хэш.
Но подождите, почему все операции с множествами выполняются так быстро? Как это возможно? Как оказалось, под капотом множества представляют собой хэши. Теперь вся информация собирается воедино. С хэш-таблицами знакомо большинство программистов, но почему с их помощью так удобно реализовывать множества?
Это возможно благодаря нескольким факторам. Первый: в хэш-таблицах каждый элемент всегда имеет уникальный индекс. Это очень хорошо с точки зрения реализации множеств, так как множества могут включать только уникальные элементы. Второй фактор: в хэш-таблицах порядок элементов не имеет значения. В множествах порядок элементов тоже не имеет значения. Наконец, хэш-таблицы обеспечивют константное время доступа 0(1). Это идеально для выполнения базовых операций с множествами.
Заключение
Теория множеств используется в разных областях computer science. Это важная для программистов концепция, понимание которой помогает разработчикам эффективно работать с данными.
Адаптированный перевод статьи Set Theory: the Method To Database Madness by Vaidehi Joshi.
Никогда не останавливайтесь: В программировании говорят, что нужно постоянно учиться даже для того, чтобы просто находиться на месте. Развивайтесь с нами — на Хекслете есть сотни курсов по разработке на разных языках и технологиях.
С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.
Правила описания множеств.
Альтернативой явному перечислению элементов множества является set-нотация, где мы помещаем имя обобщенного элемента множества и через двоеточие описываем его. Например:
Обычно такая запись читается как, «множество всех x, таких что…». Чтобы принадлежать множеству, элемент должен удовлетворять условию, записанному после двоеточия.
Условие, описывающее принадлежность множеству может иметь несколько частей. Например, запись для множества
z любой символ в строке †AB†>
означает, что x одновременно удовлетворяет трем условиям:
Поскольку †this one list† содержит 3 слова, а †AB† два символа, множество U будет содержать 6 элементов, а именно:
Обобщенный элемент множества может быть структурой такой как список или множество. Таким образом, форма записи обобщенного элемента может содержать в себе часть условия. Например, U может быть описано следующим образом:
Если описание обобщенного элемента может быть более информативным, это обычно делается, потому что уменьшается количество условий, следующих после двоеточия. Например:
будет записано как
Ситуация когда элементами множества являются другие множества случается настолько часто, что ей дали собственное название. Множеством мощности для любого множества S является множество всех подмножеств S, обозначаемое power(S).
Set-нотация наиболее полезна, когда описываемые множества велики или бесконечны. Например, множество
не может быть описано перечислением его элементов.
Операции над множествами.
Множества можно комбинировать для формирования новых множдеств и эти операции особенно полезны.
Разность S – T =
Эти операции легко визуализировать с помощью диаграмм Венна.
S È T | S – T | S Ç T |
Если два множества находятся внутри третьего множества, то их объединение, разность и пересечение, также остаются внутри этого множества, т.е. если S Í U и T Í U, тогда
Для любого множества S, пустое множество обнаруживает следующие свойства:
Объединение и пересечение коммутативны, т.е.
R È (S È T) = (R È T) È S
R Ç (S Ç T) = (R ÇT) È S
Таким образом, нет необходимости в скобках для указания порядка при записи нескольких объединений и пересечений.
Разность не коммутативна и не ассоциативна.
Следующая таблица обобщает характеристики операций над множествами.
Операция | Символ | Описание | Свойства |
Объединение | È | S È T = | ассоциативная, коммутативная |
Пересечение | Ç | S Ç T = | ассоциативная, коммутативная |
Разность | — | S – T = | не ассоциативная, не коммутативная |
Отношения и функции.
Любое множество 2-списокв или пар называется отношением. Отношения будут особенно полезны при обсуждении значения программ.
Слово «отношение» может означать правило сравнения, «эквивалентность» или «является подмножеством» и т.д. Формально отношения, которые являются множествами 2-списков, могут описать эти неформальные правила точно, путем включения точно тех пар, чьи элементы состоят в нужной связи друг с другом. Например, отношение между символами и 1-строками содержащими эти символы задается следующим отношением:
Поскольку отношение это множество, пустое отношение также возможно. Например, соответствие между четными натуральными числами и их нечетными квадратами – таких не существует. Более того, операции над множествами применимы к отношениям. Если s и r отношения, то существуют
поскольку это множества упорядоченных пар элементов.
Частный случай отношения – функция, отношение со специальным свойством, отличающееся тем, что каждый первый элемент находится в паре с уникальным вторым элементом. Отношение r является функцией, если и только если для любого
В таком случае каждый первый элемент может служить именем для второго в контексте отношения. Например, описанное выше отношение C между символами и 1-строками является функцией.
Операции над множествами также применимы к функциям. Хотя результат операции над множествами упорядоченных пар, которые являются функциями, будет обязательно другим множеством упорядоченных пар, а следовательно отношением, но не всегда функцией.
Если f,g –функции, то f Ç g, f – g тоже функции, но f È g, может быть а может и не быть функцией. Например, определим отношение голова
И возьмем отношение C, описанное выше. Тогда из факта, что C Í H:
является отношением, но не функцией,
является пустой функцией, и
Когда Î r и и y является единственным значением для x, value-нотация:
читается, как «y является значением r для аргумента x» или, более кратко, «y является значением r для x» (функциональная форма записи).
Зададим произвольное отношение r и аргумент x, тогда существуют три варианта их соответствия:
Таким образом, функция – это отношение, которое однозначно определено для всех элементов его области определения.
Выделяют три специальные функции:
Пустая функция <>, не имеет аргументов и значений, то есть
Функция эквивалентности (identity function), функция I такая,
что если x Î domain(r), тогда I(x) = x.
Постоянная функция, область значений которой задается 1-множеством, то есть всем аргументам соответствует одно и то же значение.
Поскольку отношения и функции являются множествами, они могут быть описаны перечислением элементов или заданием правил. Например:
Однако, r не является функцией, потому что два разных значения встречаются в паре с одним аргументом †ball†.
Пример отношения, определенного с помощью правила:
в строке †this is a relation that is not a function†>
Это отношение также может быть задано перечислением:
Следующее правило определяет функцию:
в строке †this is a relation that is also a function†>
которая также может быть задана перечислением:
Значение программ.
Отношения и функции жизненно необходимы для описания для описания значения программ. Используя эти понятия, разрабатывается нотация для описания значения программ. Для простых программ значение будет очевидным, но эти простые примеры послужат освоению теории в целом.
Новые идеи: box-нотация, программа и значение программы.
Множество пар ввод-вывод для всех возможных нормальных запусков программы называется значением программы. Также может быть использованы понятия функция программы и отношение программы. Важно различать значение программы и элементы значения. Для конкретного входа Паскаль-машина, управляемая Паскаль-программой может произвести конкретный выход. Но значение программы это гораздо больше, чем способ выражения результата одного частного выполнения. Оно выражает все возможные выполнения Паскаль-программы на Паскаль-машине.
Box-нотация.
Любая Паскаль-программа – строка символов, передаваемая для обработки Паскаль-машине. Например:
P = †PROGRAM PrintHello (INPUT, OUTPUT); BEGIN WRITELN(‘HELLO’) END.†
Представляет одну из первых программ, рассмотренных в начале части I, в виде строки.
Также эту строку можно записать, опустив маркеры строки, как
P = PROGRAM PrintHello (INPUT, OUTPUT);
Строка P представляет синтаксис программы, а ее значение мы будем записывать как P. Значение P это множество 2-списков (упорядоченных пар) списков символьных строк, в которых аргументы представляют входные данные программы, а значения представляют выходные данные программы, то есть
и возвращает список строк M>
Box-нотация для значения программы держит синтаксис и семантику программы, но ясно разграничивает одно от другого. Для программы PrintHello, приведенной выше:
< >: L – любой список строк >
Помещая текст программы в box:
P = PROGRAM PrintHello (INPUT, OUTPUT); BEGIN WRITELN(‘HELLO’) END
PROGRAM PrintHello (INPUT, OUTPUT); BEGIN WRITELN(‘HELLO’) END (L) =
для любого списка строк L.
Box-нотация скрывает способ которым программа управляет Паскаль-машиной и показывает только то что сопутствует выполнению. Термин «черный ящик» часто используется для описания механизма рассматриваемого только извне в терминах входов и выходов. Таким образом эта нотация подходит для значения программы с точки зрения ввода-вывода. Например, программа R
PROGRAM PrintHelloInSteps (INPUT, OUTPUT);
Имеет то же значение что и P, то есть R = P.
Программ R также имеет CFPascal имя PrintHelloInSteps. Но поскольку строка †PrintHelloInSteps† является частью строки R, лучше не использовать PrintHelloInSteps в качетсве названия программы R в box-нотации.