Материалы этого журнала по данной теме в хронологическом порядке доступны по метке символическая_логика (внизу).
А также все материалы по теме "Программная реализация "Символической логики" Льюиса Кэрролла" теперь будут доступны на специально созданном сайте:
http://symbolic-logic.ru/ Алгоритмы 1.
Представление данных Количество, Качество; интерпретатор для одинарных имён.
Рассмотрим некоторое множество предметов с признаком (именем) Q и обозначим его буквой Q. Выделим в нём подмножество элементов с признаком (именем) X. Остальные элементы множества Q, не обладающие признаком X обозначим как не_X.
Это могут быть любые признаки (имена), например:
- Q (моя личная обувь);
- X (тапочки);
- не_X (вся остальная моя обувь, кроме тапочек).
Мы произвели дихотомическое разбиение множества Q по признаку X. В результате получили три множества Q, X, не_X. Причём, как очевидно, множество Q равно сумме множеств X и не_X.
Вернёмся к нашим тапкам. Что можно знать о каждом из этих множеств? Варианты следующие:
1. Что количество элементом множества не определено (не известно).
2. Что количество элементов множества не равно нулю (множество не является пустым и содержит минимум N элементов).
3. Что количество элементов множества точно равно N (точная информация или точное знание).
Таким образом, количественный состав любого множества можно описать двумя параметрами:
- количественным показателем, который принимает целые значения от нуля до любого большого числа;
- качественным показателем, который является характеристикой количественного показателя и может принимать два значения:
1. "количественный показатель есть нижняя граница возможного количества элементов множества (не менее)" и
2. "количественный показатель есть точное значение количества элементов множества (точно равно)".
Давайте посмотрим, какие варианты "наполнения множества" позволяет сделать такое описание.
1. Если Количество = 0, а Качество = "не менее", то
о множестве ничего не известно (неопределённое множество).
2. Если Количество = 0, а Качество = "точно равно", то
множество является пустым множеством (пустое множество).
3. Если Количество = 1, а Качество = "точно равно", то
множество содержит только один элемент (единичное множество).
4. Если Количество = N, (N > 1), а Качество = "точно равно", то
множество содержит ровно N элементов (точно определённое множество).
5. Если Количество = N, (N > 1), а Качество = "не менее", то
множество является непустым множеством (непустое множество).
Для каждого множества, а их у нас сейчас в рассмотрении три, необходимо сохранять соответствующие данные. Имена можно сохранять в строковых переменных, "Количество" в числовых. Чтобы программа могла оперировать параметром "Качество", достаточно условиться, что значение переменной "0" (ноль) соответствует значению "не менее", а значение переменной "1" (единица) соответствует значению "точно равно".
Перепишем описание наполнения множеств:
1. Если Количество = 0, а Качество = 0, то
о множестве ничего не известно (неопределённое множество).
2. Если Количество = 0, а Качество = 1, то
множество является пустым множеством (пустое множество).
3. Если Количество = 1, а Качество = 1, то
множество содержит только один элемент (единичное множество).
4. Если Количество = N, (N > 1), а Качество = 1, то
множество содержит ровно N элементов (точно определённое множество).
5. Если Количество = N, (N > 1), а Качество = 0, то
множество является непустым множеством (непустое множество).
В таком виде его можно использовать как интерпретатор для интерфейса. Пользователю достаточно будет выбрать необходимый вариант из предлагаемых и, если надо, ввести значение "Количества".
Если пользователем введено имя множества, то для него (имени) программа создаёт переменные, в которых будут учитываться количественный состав этого множества.
Для каждого имени множества программа предлагает на выбор следующие варианты:
1. неопределённое множество (пользователь ничего не выбирает, значения уже присвоены программой, это значение по умолчанию)
2. пустое множество (значения вводит программа)
3. единичное множество (значения вводит программа)
4. точно определённое множество (пользователь должен ввести числовое значение для N)
5. непустое множество (пользователь должен ввести числовое значение для N)
Необходимо уточнить, что для составных имён (что это -- объяснения будут далее, в материале, посвященном формированию программой имён) интерфейс содержит дополнительный блок ввода данных. Это замечание делаю с некоторым огорчением, но порядок изложения диктуется принципом "от простого к сложному" и не хотелось бы перепрыгивать в ущерб простоте изложения.