Предположим, что C
- это класс всех объектов, которые имеют какое-либо свойство (например, свойство быть разрешимым языком). Также предположим, что у вас есть операция ·
, которая берет два из этих объектов и возвращает другой объект (число два - просто пример). Мы говорим, что C
закрывается в ·
, когда: если дано два объекта x
и y
в C
, применение к ним оператора дает объект, который также находится в C
: x · y \in C
. (Это просто определение, приведенное в вашем вопросе.)
Например, набор B
объектов со свойством «это логическое значение» { true, false }
закрывается при дополнении. Для любого значения b
из B
дополнение ! b
имеет свойство «это логическое значение», поэтому оно также находится в B
. Таким образом, множество B
всех логических значений закрыто для дополнения. В этом случае доказательством может быть таблица, в которой перечислены все комбинации входных данных для операции и проверены выходные данные в каждом случае.
Другой пример: набор S
всех объектов, имеющих свойство «это строка из одной или нескольких букв из AZ "закрыта при конкатенации: для любых двух строк x
и y
в S
конкатенация x + y
также является строкой, поэтому она должна содержаться в наборе S
объектов, которые имеют свойство «это строка из одной или нескольких букв AZ». В этом случае доказательством может быть аргумент, показывающий, что вывод удовлетворяет свойству, основанному на определении операции конкатенации строк.
В вопросе заголовка предлагается показать (доказать), что класс разрешимых языков закрывается в операции дополнения, в операции конкатенации и в операции пересечения. То есть: показать, что конкатенация двух разрешимых языков является разрешимым языком, что пересечение двух разрешимых языков является разрешимыми языками и т. Д. c.