<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Roman+Livarsky</id>
		<title>Викиконспекты - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Roman+Livarsky"/>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/Roman_Livarsky"/>
		<updated>2026-06-11T17:18:15Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:%D0%97%D0%B0%D0%BC%D0%BA%D0%BD%D1%83%D1%82%D0%BE%D1%81%D1%82%D1%8C_%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B8%D0%BC%D1%8B%D1%85_%D0%B8_%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D1%85_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%BE%D1%82%D0%BD%D0%BE%D1%81%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE_%D1%82%D0%B5%D0%BE%D1%80%D0%B5%D1%82%D0%B8%D0%BA%D0%BE-%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B8_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B9&amp;diff=14973</id>
		<title>Обсуждение:Замкнутость разрешимых и перечислимых языков относительно теоретико-множественных и алгебраических операций</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:%D0%97%D0%B0%D0%BC%D0%BA%D0%BD%D1%83%D1%82%D0%BE%D1%81%D1%82%D1%8C_%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B8%D0%BC%D1%8B%D1%85_%D0%B8_%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D1%85_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%BE%D1%82%D0%BD%D0%BE%D1%81%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE_%D1%82%D0%B5%D0%BE%D1%80%D0%B5%D1%82%D0%B8%D0%BA%D0%BE-%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B8_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B9&amp;diff=14973"/>
				<updated>2011-12-20T23:06:10Z</updated>
		
		<summary type="html">&lt;p&gt;Roman Livarsky: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== ToDo ===&lt;br /&gt;
«РазрешАтель». Ты серьёзно?&amp;lt;br&amp;gt;&lt;br /&gt;
Разрешимые языки, &amp;lt;tex&amp;gt;L_{1}^*&amp;lt;/tex&amp;gt;: во-первых, мы должны посмотреть не на одно разбиение, а на все возможные (кстати, как написано в описании, но не в коде), во-вторых, там в коде бред написан.&amp;lt;br&amp;gt;&lt;br /&gt;
Разрешимые языки, &amp;lt;tex&amp;gt;L_1 L_2&amp;lt;/tex&amp;gt;: в коде тоже не перебираются разбиения.&amp;lt;br&amp;gt;&lt;br /&gt;
Не понятно, зачем в полуразрешителе для пересечения тайм-лимиты.&amp;lt;br&amp;gt;&lt;br /&gt;
То же самое для полуразрешителя для &amp;lt;tex&amp;gt;L_1 \times L_2&amp;lt;/tex&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Для языка &amp;lt;tex&amp;gt;L_{1}^*&amp;lt;/tex&amp;gt; по аналогии с разрешимостью. Разбиения не перебираются. Ну и тоже бред в коде. Ну и в описании тоже бред: какой тайм-лимит, если его нет??&amp;lt;br&amp;gt;&lt;br /&gt;
Что за бред вообще с последней программой? Говорится про перечислитель, написан полуразрешитель.&amp;lt;br&amp;gt;&lt;br /&gt;
А ещё меня глобально не устраивают эти фигурные скобки в каждой теореме.    [[Участник:Leugenea|Евгений Лукьянец]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Возможно исправил.&lt;br /&gt;
[[Участник:Roman Livarsky|Рома]]&lt;br /&gt;
&lt;br /&gt;
=== ToDo2 ===&lt;br /&gt;
Полуразрешители для объединения, замыкания Клини и конкатенации языков неверные.&amp;lt;br&amp;gt;&lt;br /&gt;
Волевым решением я считаю, что надо приводить либо полуразрешитель, либо перечислитель, потому что мы умеем делать из одного другое.&amp;lt;br&amp;gt;&lt;br /&gt;
В конце: «Тогда имея какое-либо слово» {{---}} продолбана запятая.&amp;lt;br&amp;gt;&lt;br /&gt;
«…мы знаем, что существуют перечислимые, но не разрешимые языки…» {{---}} сделать ссылку на соответствующий факт. [[Участник:Leugenea|Евгений Лукьянец]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Исправил полуразрешитель для объединения. Для всех языков оставил только полуразрешитель. Сделал ссылку. [[Участник:Roman Livarsky|Рома]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Исправил полуразрешитель для Клини и конкатенации. [[Участник:Roman Livarsky|Рома]]&lt;/div&gt;</summary>
		<author><name>Roman Livarsky</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%97%D0%B0%D0%BC%D0%BA%D0%BD%D1%83%D1%82%D0%BE%D1%81%D1%82%D1%8C_%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B8%D0%BC%D1%8B%D1%85_%D0%B8_%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D1%85_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%BE%D1%82%D0%BD%D0%BE%D1%81%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE_%D1%82%D0%B5%D0%BE%D1%80%D0%B5%D1%82%D0%B8%D0%BA%D0%BE-%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B8_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B9&amp;diff=14972</id>
		<title>Замкнутость разрешимых и перечислимых языков относительно теоретико-множественных и алгебраических операций</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%97%D0%B0%D0%BC%D0%BA%D0%BD%D1%83%D1%82%D0%BE%D1%81%D1%82%D1%8C_%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B8%D0%BC%D1%8B%D1%85_%D0%B8_%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D1%85_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%BE%D1%82%D0%BD%D0%BE%D1%81%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE_%D1%82%D0%B5%D0%BE%D1%80%D0%B5%D1%82%D0%B8%D0%BA%D0%BE-%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B8_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B9&amp;diff=14972"/>
				<updated>2011-12-20T22:53:28Z</updated>
		
		<summary type="html">&lt;p&gt;Roman Livarsky: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
 Языки &amp;lt;tex&amp;gt; L_1, L_2 &amp;lt;/tex&amp;gt; {{---}} разрешимы, тогда следующие языки разрешимы:&lt;br /&gt;
&lt;br /&gt;
* Объединение &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \cup L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Пересечение &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \cap L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Дополнение &amp;lt;tex&amp;gt;L_1\ (\overline{L_1})&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Разность &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \backslash L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Декартово произведение &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \times L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Замыкание Клини &amp;lt;tex&amp;gt;L_1\ (L_1^*)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Конкатенация &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_2&amp;lt;/tex&amp;gt; {{---}} разрешающие программы для языков  &lt;br /&gt;
&amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt; соответственно. Для доказательства достаточно написать разрешающую программу (разрешитель) для каждого случая. &lt;br /&gt;
&lt;br /&gt;
* Разрешающая программа для языка &amp;lt;tex&amp;gt; L_1 \cup L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \lor (p_2(x) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \cap L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \land (p_2(x) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; \overline{L_1} :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 0)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \backslash L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \land (p_2(x) == 0)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \times L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(\langle x, y \rangle)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \land (p_2(y) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt;L_1^* :&amp;lt;/tex&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''forall''' &amp;lt;tex&amp;gt;{\{x_i\}}_{i=1}^n \in P &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; {{---}} множество всех возможных разбиений слова &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt; на подстроки&lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_1) == 1) \land (p_1(x_2) == 1) \land \ ... \ \land (p_1(x_n) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
             '''return''' 1&lt;br /&gt;
     '''return''' 0  &lt;br /&gt;
&lt;br /&gt;
Разрешитель будет перебирать все возможные разбиения данного ему слова на подстроки и для каждой проверять принадлежность &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;. Если хотя бы в одном разбиении все подстроки будут принадлежать &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;, то все слово принадлежит &amp;lt;tex&amp;gt; L_1^* &amp;lt;/tex&amp;gt;, иначе {{---}} не принадлежит. &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 L_2 : &amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''forall''' &amp;lt;tex&amp;gt;{\{x_i\}}_{i=1}^2 \in P &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; {{---}} множество всех возможных разбиений слова &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt; на две подстроки&lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_1) == 1) \land (p_2(x_2) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
             '''return''' 1&lt;br /&gt;
     '''return''' 0  &lt;br /&gt;
&lt;br /&gt;
Разрешитель будет перебирать все возможные разбиения на два слова и проверять принадлежность первого слова &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; и второго слова &amp;lt;tex&amp;gt; L_2 &amp;lt;/tex&amp;gt;. Если хотя бы для одного разбиения оба разрешителя вернут 1, то слово принадлежит &amp;lt;tex&amp;gt; L_1 L_2 &amp;lt;/tex&amp;gt;, иначе {{---}} не принадлежит.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
 Языки &amp;lt;tex&amp;gt; L_1, L_2 &amp;lt;/tex&amp;gt; {{---}} перечислимы, тогда следующие языки перечислимы:&lt;br /&gt;
&lt;br /&gt;
* Объединение &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \cup L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Пересечение &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \cap L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Декартово произведение &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \times L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Замыкание Клини &amp;lt;tex&amp;gt;L_1\ (L_1^*)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Конкатенация &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_2&amp;lt;/tex&amp;gt; {{---}} полуразрешающие программы для языков &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt; соответственно. Для доказательства достаточно написать полуразрешающую программу для каждого случая. Заметим, что &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_2&amp;lt;/tex&amp;gt; могут зависнуть при использовании в полуразрешающей программе для соответствующего языка, но это допустимо.&lt;br /&gt;
&lt;br /&gt;
* Полуразрешающая программа для языка &amp;lt;tex&amp;gt; L_1 \cup L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
      '''for''' &amp;lt;tex&amp;gt;k = 1 \ .. \ \infty&amp;lt;/tex&amp;gt;&lt;br /&gt;
          '''if''' &amp;lt;tex&amp;gt; (p_1(x)|_k == 1) \lor (p_2(x)|_k == 1) &amp;lt;/tex&amp;gt;      &lt;br /&gt;
              '''return 1''' &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \cap L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''if''' &amp;lt;tex&amp;gt; (p_1(x) == 1) \land (p_2(x) == 1) &amp;lt;/tex&amp;gt;      &lt;br /&gt;
         '''return 1''' &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \times L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(\langle x, y \rangle)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''if''' &amp;lt;tex&amp;gt; (p_1(x) == 1) \land (p_2(y) == 1) &amp;lt;/tex&amp;gt;      &lt;br /&gt;
         '''return 1''' &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1^* :&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''for''' &amp;lt;tex&amp;gt;k = 1 \ .. \ \infty&amp;lt;/tex&amp;gt;&lt;br /&gt;
         '''forall''' &amp;lt;tex&amp;gt;{\{x_i\}}_{i=1}^n \in P &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; {{---}} множество всех возможных разбиений слова &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt; на подстроки&lt;br /&gt;
             '''if''' &amp;lt;tex&amp;gt;(p_1|_k(x_1) == 1) \land (p_1|_k(x_2) == 1) \land \ ... \ \land (p_1|_k(x_n) == 1)&amp;lt;/tex&amp;gt;&lt;br /&gt;
                 '''return 1'''&lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 L_2 : &amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''for''' &amp;lt;tex&amp;gt;k = 1 \ .. \ \infty&amp;lt;/tex&amp;gt;&lt;br /&gt;
         '''forall''' &amp;lt;tex&amp;gt;{\{x_i\}}_{i=1}^2 \in P &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; {{---}} множество всех возможных разбиений слова &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt; на две подстроки&lt;br /&gt;
             '''if''' &amp;lt;tex&amp;gt;(p_1|_k(x_1) == 1) \land (p_2|_k(x_2) == 1)&amp;lt;/tex&amp;gt;&lt;br /&gt;
                 '''return 1'''&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
 Языки &amp;lt;tex&amp;gt; L_1, L_2 &amp;lt;/tex&amp;gt; {{---}} перечислимы, тогда следующие языки могут быть не перечислимы:&lt;br /&gt;
&lt;br /&gt;
* Дополнение &amp;lt;tex&amp;gt;L_1\ (\overline{L_1})&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Разность &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \backslash L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
&lt;br /&gt;
Рассмотрим язык &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt;. Предположим, что он перечислим. Тогда, имея какое-либо слово, мы можем одновременно запустить перечислители для &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt;. В какой-то момент времени слово появится либо в выводе перечислителя для &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;, либо в выводе перечислителя для &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt;. Тогда получится что &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; разрешим, так как про любое слово мы можем узнать принадлежит оно &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; или не принадлежит. Но мы знаем, что [[Разрешимые (рекурсивные) языки#Пример неразрешимого множества|существуют перечислимые, но не разрешимые языки]], следовательно, язык &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt; может быть не перечислим. &lt;br /&gt;
&lt;br /&gt;
Теперь рассмотрим &amp;lt;tex&amp;gt; L_1 \backslash L_2 &amp;lt;/tex&amp;gt;. В качестве &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; возьмем язык, состоящий из всех слов. Тогда получится, что язык &amp;lt;tex&amp;gt; L_1 \backslash L_2 &amp;lt;/tex&amp;gt; это &amp;lt;tex&amp;gt; \overline{L_2} &amp;lt;/tex&amp;gt;. Про язык &amp;lt;tex&amp;gt; \overline{L_2} &amp;lt;/tex&amp;gt; мы знаем, что он перечислим не всегда, следовательно и язык &amp;lt;tex&amp;gt; L_1 \backslash L_2 &amp;lt;/tex&amp;gt; также не всегда перечислим.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
* ''Верещагин Н. К., Шень А.'' '''Лекции по математической логике и теории алгоритов. Часть 3. Вычислимые функции''' {{---}} М.: МЦНМО, 1999&lt;/div&gt;</summary>
		<author><name>Roman Livarsky</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%97%D0%B0%D0%BC%D0%BA%D0%BD%D1%83%D1%82%D0%BE%D1%81%D1%82%D1%8C_%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B8%D0%BC%D1%8B%D1%85_%D0%B8_%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D1%85_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%BE%D1%82%D0%BD%D0%BE%D1%81%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE_%D1%82%D0%B5%D0%BE%D1%80%D0%B5%D1%82%D0%B8%D0%BA%D0%BE-%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B8_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B9&amp;diff=14971</id>
		<title>Замкнутость разрешимых и перечислимых языков относительно теоретико-множественных и алгебраических операций</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%97%D0%B0%D0%BC%D0%BA%D0%BD%D1%83%D1%82%D0%BE%D1%81%D1%82%D1%8C_%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B8%D0%BC%D1%8B%D1%85_%D0%B8_%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D1%85_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%BE%D1%82%D0%BD%D0%BE%D1%81%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE_%D1%82%D0%B5%D0%BE%D1%80%D0%B5%D1%82%D0%B8%D0%BA%D0%BE-%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B8_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B9&amp;diff=14971"/>
				<updated>2011-12-20T22:34:36Z</updated>
		
		<summary type="html">&lt;p&gt;Roman Livarsky: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
 Языки &amp;lt;tex&amp;gt; L_1, L_2 &amp;lt;/tex&amp;gt; {{---}} разрешимы, тогда следующие языки разрешимы:&lt;br /&gt;
&lt;br /&gt;
* Объединение &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \cup L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Пересечение &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \cap L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Дополнение &amp;lt;tex&amp;gt;L_1\ (\overline{L_1})&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Разность &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \backslash L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Декартово произведение &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \times L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Замыкание Клини &amp;lt;tex&amp;gt;L_1\ (L_1^*)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Конкатенация &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_2&amp;lt;/tex&amp;gt; {{---}} разрешающие программы для языков  &lt;br /&gt;
&amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt; соответственно. Для доказательства достаточно написать разрешающую программу (разрешитель) для каждого случая. &lt;br /&gt;
&lt;br /&gt;
* Разрешающая программа для языка &amp;lt;tex&amp;gt; L_1 \cup L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \lor (p_2(x) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \cap L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \land (p_2(x) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; \overline{L_1} :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 0)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \backslash L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \land (p_2(x) == 0)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \times L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(\langle x, y \rangle)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \land (p_2(y) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt;L_1^* :&amp;lt;/tex&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''forall''' &amp;lt;tex&amp;gt;{\{x_i\}}_{i=1}^n \in P &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; {{---}} множество всех возможных разбиений слова &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt; на подстроки&lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_1) == 1) \land (p_1(x_2) == 1) \land \ ... \ \land (p_1(x_n) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
             '''return''' 1&lt;br /&gt;
     '''return''' 0  &lt;br /&gt;
&lt;br /&gt;
Разрешитель будет перебирать все возможные разбиения данного ему слова на подстроки, и для каждой проверять принадлежность &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;. Если хотя бы в одном разбиении все подстроки будут принадлежать &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;, то все слово принадлежит &amp;lt;tex&amp;gt; L_1^* &amp;lt;/tex&amp;gt;, иначе {{---}} не принадлежит. &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 L_2 : &amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''forall''' &amp;lt;tex&amp;gt;{\{x_i\}}_{i=1}^2 \in P &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; {{---}} множество всех возможных разбиений слова &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt; на две подстроки&lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_1) == 1) \land (p_2(x_2) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
             '''return''' 1&lt;br /&gt;
     '''return''' 0  &lt;br /&gt;
&lt;br /&gt;
Разрешитель будет перебирать все возможные разбиения на два слова и проверять принадлежность первого слова &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; и второго слова &amp;lt;tex&amp;gt; L_2 &amp;lt;/tex&amp;gt;. Если хотя бы для одного разбиения оба разрешителя вернут 1, то слово принадлежит &amp;lt;tex&amp;gt; L_1 L_2 &amp;lt;/tex&amp;gt;, иначе {{---}} не принадлежит.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
 Языки &amp;lt;tex&amp;gt; L_1, L_2 &amp;lt;/tex&amp;gt; {{---}} перечислимы, тогда следующие языки перечислимы:&lt;br /&gt;
&lt;br /&gt;
* Объединение &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \cup L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Пересечение &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \cap L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Декартово произведение &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \times L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Замыкание Клини &amp;lt;tex&amp;gt;L_1\ (L_1^*)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Конкатенация &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_2&amp;lt;/tex&amp;gt; {{---}} полуразрешающие программы для языков &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt; соответственно. Для доказательства достаточно написать полуразрешающую программу для каждого случая. Заметим, что &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_2&amp;lt;/tex&amp;gt; могут зависнуть при использовании в полуразрешающей программе для соответствующего языка, но это допустимо.&lt;br /&gt;
&lt;br /&gt;
* Полуразрешающая программа для языка &amp;lt;tex&amp;gt; L_1 \cup L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
      '''for''' &amp;lt;tex&amp;gt;k = 1 \ .. \ \infty&amp;lt;/tex&amp;gt;&lt;br /&gt;
          '''if''' &amp;lt;tex&amp;gt; (p_1(x)|_k == 1) \lor (p_2(x)|_k == 1) &amp;lt;/tex&amp;gt;      &lt;br /&gt;
              '''return 1''' &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \cap L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''if''' &amp;lt;tex&amp;gt; (p_1(x) == 1) \land (p_2(x) == 1) &amp;lt;/tex&amp;gt;      &lt;br /&gt;
         '''return 1''' &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \times L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(\langle x, y \rangle)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''if''' &amp;lt;tex&amp;gt; (p_1(x) == 1) \land (p_2(y) == 1) &amp;lt;/tex&amp;gt;      &lt;br /&gt;
         '''return 1''' &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1^* :&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''for''' &amp;lt;tex&amp;gt;k = 1 \ .. \ \infty&amp;lt;/tex&amp;gt;&lt;br /&gt;
         '''forall''' &amp;lt;tex&amp;gt;{\{x_i\}}_{i=1}^n \in P &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; {{---}} множество всех возможных разбиений слова &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt; на подстроки&lt;br /&gt;
             '''if''' &amp;lt;tex&amp;gt;(p_1|_k(x_1) == 1) \land (p_1|_k(x_2) == 1) \land \ ... \ \land (p_1|_k(x_n) == 1)&amp;lt;/tex&amp;gt;&lt;br /&gt;
                 '''return 1'''&lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 L_2 : &amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''for''' &amp;lt;tex&amp;gt;k = 1 \ .. \ \infty&amp;lt;/tex&amp;gt;&lt;br /&gt;
         '''forall''' &amp;lt;tex&amp;gt;{\{x_i\}}_{i=1}^2 \in P &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; {{---}} множество всех возможных разбиений слова &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt; на две подстроки&lt;br /&gt;
             '''if''' &amp;lt;tex&amp;gt;(p_1|_k(x_1) == 1) \land (p_2|_k(x_2) == 1)&amp;lt;/tex&amp;gt;&lt;br /&gt;
                 '''return 1'''&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
 Языки &amp;lt;tex&amp;gt; L_1, L_2 &amp;lt;/tex&amp;gt; {{---}} перечислимы, тогда следующие языки могут быть не перечислимы:&lt;br /&gt;
&lt;br /&gt;
* Дополнение &amp;lt;tex&amp;gt;L_1\ (\overline{L_1})&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Разность &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \backslash L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
&lt;br /&gt;
Рассмотрим язык &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt;. Предположим, что он перечислим. Тогда, имея какое-либо слово, мы можем одновременно запустить перечислители для &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt;. В какой-то момент времени слово появится либо в выводе перечислителя для &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;, либо в выводе перечислителя для &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt;. Тогда получится что &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; разрешим, так как про любое слово мы можем узнать принадлежит оно &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; или не принадлежит. Но мы знаем, что [[Разрешимые (рекурсивные) языки#Пример неразрешимого множества|существуют перечислимые, но не разрешимые языки]], следовательно, язык &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt; может быть не перечислим. &lt;br /&gt;
&lt;br /&gt;
Теперь рассмотрим &amp;lt;tex&amp;gt; L_1 \backslash L_2 &amp;lt;/tex&amp;gt;. В качестве &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; возьмем язык, состоящий из всех слов. Тогда получится, что язык &amp;lt;tex&amp;gt; L_1 \backslash L_2 &amp;lt;/tex&amp;gt; это &amp;lt;tex&amp;gt; \overline{L_2} &amp;lt;/tex&amp;gt;. Про язык &amp;lt;tex&amp;gt; \overline{L_2} &amp;lt;/tex&amp;gt; мы знаем, что он перечислим не всегда, следовательно и язык &amp;lt;tex&amp;gt; L_1 \backslash L_2 &amp;lt;/tex&amp;gt; также не всегда перечислим.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
* ''Верещагин Н. К., Шень А.'' '''Лекции по математической логике и теории алгоритов. Часть 3. Вычислимые функции''' {{---}} М.: МЦНМО, 1999&lt;/div&gt;</summary>
		<author><name>Roman Livarsky</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%97%D0%B0%D0%BC%D0%BA%D0%BD%D1%83%D1%82%D0%BE%D1%81%D1%82%D1%8C_%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B8%D0%BC%D1%8B%D1%85_%D0%B8_%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D1%85_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%BE%D1%82%D0%BD%D0%BE%D1%81%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE_%D1%82%D0%B5%D0%BE%D1%80%D0%B5%D1%82%D0%B8%D0%BA%D0%BE-%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B8_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B9&amp;diff=14967</id>
		<title>Замкнутость разрешимых и перечислимых языков относительно теоретико-множественных и алгебраических операций</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%97%D0%B0%D0%BC%D0%BA%D0%BD%D1%83%D1%82%D0%BE%D1%81%D1%82%D1%8C_%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B8%D0%BC%D1%8B%D1%85_%D0%B8_%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D1%85_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%BE%D1%82%D0%BD%D0%BE%D1%81%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE_%D1%82%D0%B5%D0%BE%D1%80%D0%B5%D1%82%D0%B8%D0%BA%D0%BE-%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B8_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B9&amp;diff=14967"/>
				<updated>2011-12-20T10:07:28Z</updated>
		
		<summary type="html">&lt;p&gt;Roman Livarsky: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
 Языки &amp;lt;tex&amp;gt; L_1, L_2 &amp;lt;/tex&amp;gt; {{---}} разрешимы, тогда следующие языки разрешимы:&lt;br /&gt;
&lt;br /&gt;
* Объединение &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \cup L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Пересечение &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \cap L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Дополнение &amp;lt;tex&amp;gt;L_1\ (\overline{L_1})&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Разность &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \backslash L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Декартово произведение &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \times L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Замыкание Клини &amp;lt;tex&amp;gt;L_1\ (L_1^*)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Конкатенация &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_2&amp;lt;/tex&amp;gt; {{---}} разрешающие программы для языков  &lt;br /&gt;
&amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt; соответственно. Для доказательства достаточно написать разрешающую программу (разрешитель) для каждого случая. &lt;br /&gt;
&lt;br /&gt;
* Разрешающая программа для языка &amp;lt;tex&amp;gt; L_1 \cup L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \lor (p_2(x) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \cap L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \land (p_2(x) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; \overline{L_1} :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 0)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \backslash L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \land (p_2(x) == 0)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \times L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(\langle x, y \rangle)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \land (p_2(y) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt;L_1^* :&amp;lt;/tex&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''forall''' &amp;lt;tex&amp;gt;x_1x_2 \ .. \ x_n :&amp;lt;/tex&amp;gt; все возможные разбиения &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;&lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_1) == 1) \land (p_1(x_2) == 1) \land \ ... \ \land (p_1(x_n) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
             '''return''' 1&lt;br /&gt;
     '''return''' 0  &lt;br /&gt;
&lt;br /&gt;
Разрешитель будет перебирать все возможные разбиения данного ему слова на подслова, и для каждого проверять принадлежность &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;. Если хотя бы в одном разбиении все подслова будут принадлежать &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;, то все слово принадлежит &amp;lt;tex&amp;gt; L_1^* &amp;lt;/tex&amp;gt;, иначе {{---}} не принадлежит. &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 L_2 : &amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''forall''' &amp;lt;tex&amp;gt;x_1x_2 :&amp;lt;/tex&amp;gt; все возможные разбиения &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt; на две части&lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_1) == 1 \land p_2(x_2) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
             '''return''' 1&lt;br /&gt;
     '''return''' 0  &lt;br /&gt;
&lt;br /&gt;
Разрешитель будет перебирать все возможные разбиения на два слова и проверять принадлежность первого слова &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; и второго слова &amp;lt;tex&amp;gt; L_2 &amp;lt;/tex&amp;gt;. Если хотя бы для одного разбиения оба разрешителя вернут 1, то слово принадлежит &amp;lt;tex&amp;gt; L_1 L_2 &amp;lt;/tex&amp;gt;, иначе {{---}} не принадлежит.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
 Языки &amp;lt;tex&amp;gt; L_1, L_2 &amp;lt;/tex&amp;gt; {{---}} перечислимы, тогда следующие языки перечислимы:&lt;br /&gt;
&lt;br /&gt;
* Объединение &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \cup L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Пересечение &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \cap L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Декартово произведение &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \times L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Замыкание Клини &amp;lt;tex&amp;gt;L_1\ (L_1^*)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Конкатенация &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_2&amp;lt;/tex&amp;gt; {{---}} полуразрешающие программы для языков &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt; соответственно. Для доказательства достаточно написать полуразрешающую программу для каждого случая. Заметим, что &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_2&amp;lt;/tex&amp;gt; могут зависнуть при использовании в полуразрешающей программе для соответствующего языка, но это допустимо.&lt;br /&gt;
&lt;br /&gt;
* Полуразрешающая программа для языка &amp;lt;tex&amp;gt; L_1 \cup L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
      '''for''' &amp;lt;tex&amp;gt;k = 1 \ .. \ \infty&amp;lt;/tex&amp;gt;&lt;br /&gt;
          '''if''' &amp;lt;tex&amp;gt; (p_1(x)|_k == 1) \lor (p_2(x)|_k == 1) &amp;lt;/tex&amp;gt;      &lt;br /&gt;
              '''return 1''' &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \cap L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''if''' &amp;lt;tex&amp;gt; (p_1(x) == 1) \land (p_2(x) == 1) &amp;lt;/tex&amp;gt;      &lt;br /&gt;
         '''return 1''' &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \times L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(\langle x, y \rangle)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''if''' &amp;lt;tex&amp;gt; (p_1(x) == 1) \land (p_2(y) == 1) &amp;lt;/tex&amp;gt;      &lt;br /&gt;
         '''return 1''' &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1^* :&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''forall''' &amp;lt;tex&amp;gt;x_1x_2 \ .. \ x_n :&amp;lt;/tex&amp;gt; все возможные разбиения &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;&lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_1) == 1) \land (p_1(x_2) == 1) \land \ ... \ \land (p_1(x_n) == 1)&amp;lt;/tex&amp;gt;&lt;br /&gt;
             '''return 1'''&lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 L_2 : &amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''forall''' &amp;lt;tex&amp;gt;x_1x_2 :&amp;lt;/tex&amp;gt; все возможные разбиения &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt; на две части&lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_1) == 1 \land p_2(x_2) == 1)&amp;lt;/tex&amp;gt;&lt;br /&gt;
             '''return 1'''&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
 Языки &amp;lt;tex&amp;gt; L_1, L_2 &amp;lt;/tex&amp;gt; {{---}} перечислимы, тогда следующие языки могут быть не перечислимы:&lt;br /&gt;
&lt;br /&gt;
* Дополнение &amp;lt;tex&amp;gt;L_1\ (\overline{L_1})&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Разность &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \backslash L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
&lt;br /&gt;
Рассмотрим язык &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt;. Предположим, что он перечислим. Тогда, имея какое-либо слово, мы можем одновременно запустить перечислители для &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt;. В какой-то момент времени слово появится либо в выводе перечислителя для &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;, либо в выводе перечислителя для &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt;. Тогда получится что &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; разрешим, так как про любое слово мы можем узнать принадлежит оно &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; или не принадлежит. Но мы знаем, что [[Разрешимые (рекурсивные) языки#Пример неразрешимого множества|существуют перечислимые, но не разрешимые языки]], следовательно, язык &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt; может быть не перечислим. &lt;br /&gt;
&lt;br /&gt;
Теперь рассмотрим &amp;lt;tex&amp;gt; L_1 \backslash L_2 &amp;lt;/tex&amp;gt;. В качестве &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; возьмем язык, состоящий из всех слов. Тогда получится, что язык &amp;lt;tex&amp;gt; L_1 \backslash L_2 &amp;lt;/tex&amp;gt; это &amp;lt;tex&amp;gt; \overline{L_2} &amp;lt;/tex&amp;gt;. Про язык &amp;lt;tex&amp;gt; \overline{L_2} &amp;lt;/tex&amp;gt; мы знаем, что он перечислим не всегда, следовательно и язык &amp;lt;tex&amp;gt; L_1 \backslash L_2 &amp;lt;/tex&amp;gt; также не всегда перечислим.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
* ''Верещагин Н. К., Шень А.'' '''Лекции по математической логике и теории алгоритов. Часть 3. Вычислимые функции''' {{---}} М.: МЦНМО, 1999&lt;/div&gt;</summary>
		<author><name>Roman Livarsky</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%97%D0%B0%D0%BC%D0%BA%D0%BD%D1%83%D1%82%D0%BE%D1%81%D1%82%D1%8C_%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B8%D0%BC%D1%8B%D1%85_%D0%B8_%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D1%85_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%BE%D1%82%D0%BD%D0%BE%D1%81%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE_%D1%82%D0%B5%D0%BE%D1%80%D0%B5%D1%82%D0%B8%D0%BA%D0%BE-%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B8_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B9&amp;diff=14966</id>
		<title>Замкнутость разрешимых и перечислимых языков относительно теоретико-множественных и алгебраических операций</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%97%D0%B0%D0%BC%D0%BA%D0%BD%D1%83%D1%82%D0%BE%D1%81%D1%82%D1%8C_%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B8%D0%BC%D1%8B%D1%85_%D0%B8_%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D1%85_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%BE%D1%82%D0%BD%D0%BE%D1%81%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE_%D1%82%D0%B5%D0%BE%D1%80%D0%B5%D1%82%D0%B8%D0%BA%D0%BE-%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B8_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B9&amp;diff=14966"/>
				<updated>2011-12-20T07:16:36Z</updated>
		
		<summary type="html">&lt;p&gt;Roman Livarsky: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
 Языки &amp;lt;tex&amp;gt; L_1, L_2 &amp;lt;/tex&amp;gt; {{---}} разрешимы, тогда следующие языки разрешимы:&lt;br /&gt;
&lt;br /&gt;
* Объединение &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \cup L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Пересечение &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \cap L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Дополнение &amp;lt;tex&amp;gt;L_1\ (\overline{L_1})&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Разность &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \backslash L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Декартово произведение &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \times L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Замыкание Клини &amp;lt;tex&amp;gt;L_1\ (L_1^*)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Конкатенация &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_2&amp;lt;/tex&amp;gt; {{---}} разрешающие программы для языков  &lt;br /&gt;
&amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt; соответственно. Для доказательства достаточно написать разрешающую программу (разрешитель) для каждого случая. &lt;br /&gt;
&lt;br /&gt;
* Разрешающая программа для языка &amp;lt;tex&amp;gt; L_1 \cup L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \lor (p_2(x) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \cap L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \land (p_2(x) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; \overline{L_1} :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 0)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \backslash L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \land (p_2(x) == 0)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \times L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(\langle x, y \rangle)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \land (p_2(y) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt;L_1^* :&amp;lt;/tex&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''forall''' &amp;lt;tex&amp;gt;x_{d_1}x_{d_2} \ .. \ x_{d_n} :&amp;lt;/tex&amp;gt; все возможные разбиения &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;&lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_{d_1}) == 1) \land (p_1(x_{d_2}) == 1) \land \ ... \ \land (p_1(x_{d_n}) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
             '''return''' 1&lt;br /&gt;
     '''return''' 0  &lt;br /&gt;
&lt;br /&gt;
Разрешитель будет перебирать все возможные разбиения данного ему слова на подслова, и для каждого проверять принадлежность &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;. Если хотя бы в одном разбиении все подслова будут принадлежать &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;, то все слово принадлежит &amp;lt;tex&amp;gt; L_1^* &amp;lt;/tex&amp;gt;, иначе {{---}} не принадлежит. &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 L_2 : &amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''forall''' &amp;lt;tex&amp;gt;x_{d_1}x_{d_2} :&amp;lt;/tex&amp;gt; все возможные разбиения &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt; на две части&lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_{d_1}) == 1 \land p_2(x_{d_2}) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
             '''return''' 1&lt;br /&gt;
     '''return''' 0  &lt;br /&gt;
&lt;br /&gt;
Разрешитель будет перебирать все возможные разбиения на два слова и проверять принадлежность первого слова &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; и второго слова &amp;lt;tex&amp;gt; L_2 &amp;lt;/tex&amp;gt;. Если хотя бы для одного разбиения оба разрешителя вернут 1, то слово принадлежит &amp;lt;tex&amp;gt; L_1 L_2 &amp;lt;/tex&amp;gt;, иначе {{---}} не принадлежит.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
 Языки &amp;lt;tex&amp;gt; L_1, L_2 &amp;lt;/tex&amp;gt; {{---}} перечислимы, тогда следующие языки перечислимы:&lt;br /&gt;
&lt;br /&gt;
* Объединение &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \cup L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Пересечение &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \cap L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Декартово произведение &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \times L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Замыкание Клини &amp;lt;tex&amp;gt;L_1\ (L_1^*)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Конкатенация &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_2&amp;lt;/tex&amp;gt; {{---}} полуразрешающие программы для языков &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt; соответственно. Для доказательства достаточно написать полуразрешающую программу для каждого случая. Заметим, что &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_2&amp;lt;/tex&amp;gt; могут зависнуть при использовании в полуразрешающей программе для соответствующего языка, но это допустимо.&lt;br /&gt;
&lt;br /&gt;
* Полуразрешающая программа для языка &amp;lt;tex&amp;gt; L_1 \cup L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
      '''for''' &amp;lt;tex&amp;gt;k = 1 \ .. \ \infty&amp;lt;/tex&amp;gt;&lt;br /&gt;
          '''if''' &amp;lt;tex&amp;gt; (p_1(x)|_k == 1) \lor (p_2(x)|_k == 1) &amp;lt;/tex&amp;gt;      &lt;br /&gt;
              '''return 1''' &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \cap L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''if''' &amp;lt;tex&amp;gt; (p_1(x) == 1) \land (p_2(x) == 1) &amp;lt;/tex&amp;gt;      &lt;br /&gt;
         '''return 1''' &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \times L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(\langle x, y \rangle)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''if''' &amp;lt;tex&amp;gt; (p_1(x) == 1) \land (p_2(y) == 1) &amp;lt;/tex&amp;gt;      &lt;br /&gt;
         '''return 1''' &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1^* :&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''forall''' &amp;lt;tex&amp;gt;x_{d_1}x_{d_2} \ .. \ x_{d_n} :&amp;lt;/tex&amp;gt; все возможные разбиения &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;&lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_{d_1}) == 1) \land (p_1(x_{d_2}) == 1) \land \ ... \ \land (p_1(x_{d_n}) == 1)&amp;lt;/tex&amp;gt;&lt;br /&gt;
             '''return 1'''&lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 L_2 : &amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''forall''' &amp;lt;tex&amp;gt;x_{d_1}x_{d_2} :&amp;lt;/tex&amp;gt; все возможные разбиения &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt; на две части&lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_{d_1}) == 1 \land p_2(x_{d_2}) == 1)&amp;lt;/tex&amp;gt;&lt;br /&gt;
             '''return 1'''&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
 Языки &amp;lt;tex&amp;gt; L_1, L_2 &amp;lt;/tex&amp;gt; {{---}} перечислимы, тогда следующие языки могут быть не перечислимы:&lt;br /&gt;
&lt;br /&gt;
* Дополнение &amp;lt;tex&amp;gt;L_1\ (\overline{L_1})&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Разность &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \backslash L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
&lt;br /&gt;
Рассмотрим язык &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt;. Предположим, что он перечислим. Тогда, имея какое-либо слово, мы можем одновременно запустить перечислители для &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt;. В какой-то момент времени слово появится либо в выводе перечислителя для &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;, либо в выводе перечислителя для &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt;. Тогда получится что &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; разрешим, так как про любое слово мы можем узнать принадлежит оно &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; или не принадлежит. Но мы знаем, что [[Разрешимые (рекурсивные) языки#Пример неразрешимого множества|существуют перечислимые, но не разрешимые языки]], следовательно, язык &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt; может быть не перечислим. &lt;br /&gt;
&lt;br /&gt;
Теперь рассмотрим &amp;lt;tex&amp;gt; L_1 \backslash L_2 &amp;lt;/tex&amp;gt;. В качестве &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; возьмем язык, состоящий из всех слов. Тогда получится, что язык &amp;lt;tex&amp;gt; L_1 \backslash L_2 &amp;lt;/tex&amp;gt; это &amp;lt;tex&amp;gt; \overline{L_2} &amp;lt;/tex&amp;gt;. Про язык &amp;lt;tex&amp;gt; \overline{L_2} &amp;lt;/tex&amp;gt; мы знаем, что он перечислим не всегда, следовательно и язык &amp;lt;tex&amp;gt; L_1 \backslash L_2 &amp;lt;/tex&amp;gt; также не всегда перечислим.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
* ''Верещагин Н. К., Шень А.'' '''Лекции по математической логике и теории алгоритов. Часть 3. Вычислимые функции''' {{---}} М.: МЦНМО, 1999&lt;/div&gt;</summary>
		<author><name>Roman Livarsky</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:%D0%97%D0%B0%D0%BC%D0%BA%D0%BD%D1%83%D1%82%D0%BE%D1%81%D1%82%D1%8C_%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B8%D0%BC%D1%8B%D1%85_%D0%B8_%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D1%85_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%BE%D1%82%D0%BD%D0%BE%D1%81%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE_%D1%82%D0%B5%D0%BE%D1%80%D0%B5%D1%82%D0%B8%D0%BA%D0%BE-%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B8_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B9&amp;diff=14961</id>
		<title>Обсуждение:Замкнутость разрешимых и перечислимых языков относительно теоретико-множественных и алгебраических операций</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:%D0%97%D0%B0%D0%BC%D0%BA%D0%BD%D1%83%D1%82%D0%BE%D1%81%D1%82%D1%8C_%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B8%D0%BC%D1%8B%D1%85_%D0%B8_%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D1%85_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%BE%D1%82%D0%BD%D0%BE%D1%81%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE_%D1%82%D0%B5%D0%BE%D1%80%D0%B5%D1%82%D0%B8%D0%BA%D0%BE-%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B8_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B9&amp;diff=14961"/>
				<updated>2011-12-20T07:03:28Z</updated>
		
		<summary type="html">&lt;p&gt;Roman Livarsky: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== ToDo ===&lt;br /&gt;
«РазрешАтель». Ты серьёзно?&amp;lt;br&amp;gt;&lt;br /&gt;
Разрешимые языки, &amp;lt;tex&amp;gt;L_{1}^*&amp;lt;/tex&amp;gt;: во-первых, мы должны посмотреть не на одно разбиение, а на все возможные (кстати, как написано в описании, но не в коде), во-вторых, там в коде бред написан.&amp;lt;br&amp;gt;&lt;br /&gt;
Разрешимые языки, &amp;lt;tex&amp;gt;L_1 L_2&amp;lt;/tex&amp;gt;: в коде тоже не перебираются разбиения.&amp;lt;br&amp;gt;&lt;br /&gt;
Не понятно, зачем в полуразрешителе для пересечения тайм-лимиты.&amp;lt;br&amp;gt;&lt;br /&gt;
То же самое для полуразрешителя для &amp;lt;tex&amp;gt;L_1 \times L_2&amp;lt;/tex&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Для языка &amp;lt;tex&amp;gt;L_{1}^*&amp;lt;/tex&amp;gt; по аналогии с разрешимостью. Разбиения не перебираются. Ну и тоже бред в коде. Ну и в описании тоже бред: какой тайм-лимит, если его нет??&amp;lt;br&amp;gt;&lt;br /&gt;
Что за бред вообще с последней программой? Говорится про перечислитель, написан полуразрешитель.&amp;lt;br&amp;gt;&lt;br /&gt;
А ещё меня глобально не устраивают эти фигурные скобки в каждой теореме.    [[Участник:Leugenea|Евгений Лукьянец]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Возможно исправил.&lt;br /&gt;
[[Участник:Roman Livarsky|Рома]]&lt;br /&gt;
&lt;br /&gt;
=== ToDo2 ===&lt;br /&gt;
Полуразрешители для объединения, замыкания Клини и конкатенации языков неверные.&amp;lt;br&amp;gt;&lt;br /&gt;
Волевым решением я считаю, что надо приводить либо полуразрешитель, либо перечислитель, потому что мы умеем делать из одного другое.&amp;lt;br&amp;gt;&lt;br /&gt;
В конце: «Тогда имея какое-либо слово» {{---}} продолбана запятая.&amp;lt;br&amp;gt;&lt;br /&gt;
«…мы знаем, что существуют перечислимые, но не разрешимые языки…» {{---}} сделать ссылку на соответствующий факт. [[Участник:Leugenea|Евгений Лукьянец]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Исправил полуразрешитель для объединения. Изменил для Клини и конкатенации. Для всех языков оставил только полуразрешитель. Сделал ссылку. [[Участник:Roman Livarsky|Рома]]&lt;/div&gt;</summary>
		<author><name>Roman Livarsky</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%97%D0%B0%D0%BC%D0%BA%D0%BD%D1%83%D1%82%D0%BE%D1%81%D1%82%D1%8C_%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B8%D0%BC%D1%8B%D1%85_%D0%B8_%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D1%85_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%BE%D1%82%D0%BD%D0%BE%D1%81%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE_%D1%82%D0%B5%D0%BE%D1%80%D0%B5%D1%82%D0%B8%D0%BA%D0%BE-%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B8_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B9&amp;diff=14960</id>
		<title>Замкнутость разрешимых и перечислимых языков относительно теоретико-множественных и алгебраических операций</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%97%D0%B0%D0%BC%D0%BA%D0%BD%D1%83%D1%82%D0%BE%D1%81%D1%82%D1%8C_%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B8%D0%BC%D1%8B%D1%85_%D0%B8_%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D1%85_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%BE%D1%82%D0%BD%D0%BE%D1%81%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE_%D1%82%D0%B5%D0%BE%D1%80%D0%B5%D1%82%D0%B8%D0%BA%D0%BE-%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B8_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B9&amp;diff=14960"/>
				<updated>2011-12-20T06:58:02Z</updated>
		
		<summary type="html">&lt;p&gt;Roman Livarsky: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
 Языки &amp;lt;tex&amp;gt; L_1, L_2 &amp;lt;/tex&amp;gt; {{---}} разрешимы, тогда следующие языки разрешимы:&lt;br /&gt;
&lt;br /&gt;
* Объединение &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \cup L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Пересечение &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \cap L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Дополнение &amp;lt;tex&amp;gt;L_1\ (\overline{L_1})&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Разность &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \backslash L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Декартово произведение &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \times L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Замыкание Клини &amp;lt;tex&amp;gt;L_1\ (L_1^*)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Конкатенация &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_2&amp;lt;/tex&amp;gt; {{---}} разрешающие программы для языков  &lt;br /&gt;
&amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt; соответственно. Для доказательства достаточно написать разрешающую программу (разрешитель) для каждого случая. &lt;br /&gt;
&lt;br /&gt;
* Разрешающая программа для языка &amp;lt;tex&amp;gt; L_1 \cup L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \lor (p_2(x) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \cap L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \land (p_2(x) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; \overline{L_1} :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 0)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \backslash L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \land (p_2(x) == 0)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \times L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(\langle x, y \rangle)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \land (p_2(y) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt;L_1^* :&amp;lt;/tex&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''forall''' &amp;lt;tex&amp;gt;d_i :&amp;lt;/tex&amp;gt; все возможные разбиения&lt;br /&gt;
         &amp;lt;tex&amp;gt;x_{d_1}x_{d_2} \ .. \ x_{d_n} :&amp;lt;/tex&amp;gt; текущее разбиение &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;&lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_{d_1}) == 1) \land (p_1(x_{d_2}) == 1) \land \ ... \ \land (p_1(x_{d_n}) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
             '''return''' 1&lt;br /&gt;
     '''return''' 0  &lt;br /&gt;
&lt;br /&gt;
Разрешитель будет перебирать все возможные разбиения данного ему слова на подслова, и для каждого проверять принадлежность &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;. Если хотя бы в одном разбиении все подслова будут принадлежать &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;, то все слово принадлежит &amp;lt;tex&amp;gt; L_1^* &amp;lt;/tex&amp;gt;, иначе {{---}} не принадлежит. &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 L_2 : &amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''forall''' &amp;lt;tex&amp;gt;d_{1,2} :&amp;lt;/tex&amp;gt; все возможные разбиения на две части&lt;br /&gt;
         &amp;lt;tex&amp;gt;x_{d_1}x_{d_2} :&amp;lt;/tex&amp;gt; текущее разбиение &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;   &lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_{d_1}) == 1 \land p_2(x_{d_2}) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
             '''return''' 1&lt;br /&gt;
     '''return''' 0  &lt;br /&gt;
&lt;br /&gt;
Разрешитель будет перебирать все возможные разбиения на два слова и проверять принадлежность первого слова &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; и второго слова &amp;lt;tex&amp;gt; L_2 &amp;lt;/tex&amp;gt;. Если хотя бы для одного разбиения оба разрешителя вернут 1, то слово принадлежит &amp;lt;tex&amp;gt; L_1 L_2 &amp;lt;/tex&amp;gt;, иначе {{---}} не принадлежит.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
 Языки &amp;lt;tex&amp;gt; L_1, L_2 &amp;lt;/tex&amp;gt; {{---}} перечислимы, тогда следующие языки перечислимы:&lt;br /&gt;
&lt;br /&gt;
* Объединение &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \cup L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Пересечение &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \cap L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Декартово произведение &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \times L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Замыкание Клини &amp;lt;tex&amp;gt;L_1\ (L_1^*)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Конкатенация &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_2&amp;lt;/tex&amp;gt; {{---}} полуразрешающие программы для языков &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt; соответственно. Для доказательства достаточно написать полуразрешающую программу для каждого случая. Заметим, что &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_2&amp;lt;/tex&amp;gt; могут зависнуть при использовании в полуразрешающей программе для соответствующего языка, но это допустимо.&lt;br /&gt;
&lt;br /&gt;
* Полуразрешающая программа для языка &amp;lt;tex&amp;gt; L_1 \cup L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
      '''for''' &amp;lt;tex&amp;gt;k = 1 \ .. \ \infty&amp;lt;/tex&amp;gt;&lt;br /&gt;
          '''if''' &amp;lt;tex&amp;gt; (p_1(x)|_k == 1) \lor (p_2(x)|_k == 1) &amp;lt;/tex&amp;gt;      &lt;br /&gt;
              '''return 1''' &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \cap L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''if''' &amp;lt;tex&amp;gt; (p_1(x) == 1) \land (p_2(x) == 1) &amp;lt;/tex&amp;gt;      &lt;br /&gt;
         '''return 1''' &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \times L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(\langle x, y \rangle)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''if''' &amp;lt;tex&amp;gt; (p_1(x) == 1) \land (p_2(y) == 1) &amp;lt;/tex&amp;gt;      &lt;br /&gt;
         '''return 1''' &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1^* :&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''forall''' &amp;lt;tex&amp;gt;d_i :&amp;lt;/tex&amp;gt; все возможные разбиения&lt;br /&gt;
         &amp;lt;tex&amp;gt;x_{d_1}x_{d_2} \ .. \ x_{d_n} :&amp;lt;/tex&amp;gt; текущее разбиение &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;&lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_{d_1}) == 1) \land (p_1(x_{d_2}) == 1) \land \ ... \ \land (p_1(x_{d_n}) == 1)&amp;lt;/tex&amp;gt;&lt;br /&gt;
             '''return 1'''&lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 L_2 : &amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''forall''' &amp;lt;tex&amp;gt;d_{1,2} :&amp;lt;/tex&amp;gt; все возможные разбиения на две части&lt;br /&gt;
         &amp;lt;tex&amp;gt;x_{d_1}x_{d_2} :&amp;lt;/tex&amp;gt; текущее разбиение &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;   &lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_{d_1}) == 1 \land p_2(x_{d_2}) == 1)&amp;lt;/tex&amp;gt;&lt;br /&gt;
             '''return 1'''&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
 Языки &amp;lt;tex&amp;gt; L_1, L_2 &amp;lt;/tex&amp;gt; {{---}} перечислимы, тогда следующие языки могут быть не перечислимы:&lt;br /&gt;
&lt;br /&gt;
* Дополнение &amp;lt;tex&amp;gt;L_1\ (\overline{L_1})&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Разность &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \backslash L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
&lt;br /&gt;
Рассмотрим язык &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt;. Предположим, что он перечислим. Тогда, имея какое-либо слово, мы можем одновременно запустить перечислители для &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt;. В какой-то момент времени слово появится либо в выводе перечислителя для &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;, либо в выводе перечислителя для &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt;. Тогда получится что &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; разрешим, так как про любое слово мы можем узнать принадлежит оно &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; или не принадлежит. Но мы знаем, что [[Разрешимые (рекурсивные) языки#Пример неразрешимого множества|существуют перечислимые, но не разрешимые языки]], следовательно, язык &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt; может быть не перечислим. &lt;br /&gt;
&lt;br /&gt;
Теперь рассмотрим &amp;lt;tex&amp;gt; L_1 \backslash L_2 &amp;lt;/tex&amp;gt;. В качестве &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; возьмем язык, состоящий из всех слов. Тогда получится, что язык &amp;lt;tex&amp;gt; L_1 \backslash L_2 &amp;lt;/tex&amp;gt; это &amp;lt;tex&amp;gt; \overline{L_2} &amp;lt;/tex&amp;gt;. Про язык &amp;lt;tex&amp;gt; \overline{L_2} &amp;lt;/tex&amp;gt; мы знаем, что он перечислим не всегда, следовательно и язык &amp;lt;tex&amp;gt; L_1 \backslash L_2 &amp;lt;/tex&amp;gt; также не всегда перечислим.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
* ''Верещагин Н. К., Шень А.'' '''Лекции по математической логике и теории алгоритов. Часть 3. Вычислимые функции''' {{---}} М.: МЦНМО, 1999&lt;/div&gt;</summary>
		<author><name>Roman Livarsky</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%97%D0%B0%D0%BC%D0%BA%D0%BD%D1%83%D1%82%D0%BE%D1%81%D1%82%D1%8C_%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B8%D0%BC%D1%8B%D1%85_%D0%B8_%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D1%85_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%BE%D1%82%D0%BD%D0%BE%D1%81%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE_%D1%82%D0%B5%D0%BE%D1%80%D0%B5%D1%82%D0%B8%D0%BA%D0%BE-%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B8_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B9&amp;diff=14959</id>
		<title>Замкнутость разрешимых и перечислимых языков относительно теоретико-множественных и алгебраических операций</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%97%D0%B0%D0%BC%D0%BA%D0%BD%D1%83%D1%82%D0%BE%D1%81%D1%82%D1%8C_%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B8%D0%BC%D1%8B%D1%85_%D0%B8_%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D1%85_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%BE%D1%82%D0%BD%D0%BE%D1%81%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE_%D1%82%D0%B5%D0%BE%D1%80%D0%B5%D1%82%D0%B8%D0%BA%D0%BE-%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B8_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B9&amp;diff=14959"/>
				<updated>2011-12-20T06:52:57Z</updated>
		
		<summary type="html">&lt;p&gt;Roman Livarsky: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
 Языки &amp;lt;tex&amp;gt; L_1, L_2 &amp;lt;/tex&amp;gt; {{---}} разрешимы, тогда следующие языки разрешимы:&lt;br /&gt;
&lt;br /&gt;
* Объединение &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \cup L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Пересечение &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \cap L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Дополнение &amp;lt;tex&amp;gt;L_1\ (\overline{L_1})&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Разность &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \backslash L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Декартово произведение &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \times L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Замыкание Клини &amp;lt;tex&amp;gt;L_1\ (L_1^*)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Конкатенация &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_2&amp;lt;/tex&amp;gt; {{---}} разрешающие программы для языков  &lt;br /&gt;
&amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt; соответственно. Для доказательства достаточно написать разрешающую программу (разрешитель) для каждого случая. &lt;br /&gt;
&lt;br /&gt;
* Разрешающая программа для языка &amp;lt;tex&amp;gt; L_1 \cup L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \lor (p_2(x) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \cap L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \land (p_2(x) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; \overline{L_1} :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 0)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \backslash L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \land (p_2(x) == 0)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \times L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(\langle x, y \rangle)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \land (p_2(y) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt;L_1^* :&amp;lt;/tex&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''forall''' &amp;lt;tex&amp;gt;d_i :&amp;lt;/tex&amp;gt; все возможные разбиения&lt;br /&gt;
         &amp;lt;tex&amp;gt;x_{d_1}x_{d_2} \ .. \ x_{d_n} :&amp;lt;/tex&amp;gt; текущее разбиение &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;&lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_{d_1}) == 1) \land (p_1(x_{d_2}) == 1) \land \ ... \ \land (p_1(x_{d_n}) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
                 '''return''' 1&lt;br /&gt;
     '''return''' 0  &lt;br /&gt;
&lt;br /&gt;
Разрешитель будет перебирать все возможные разбиения данного ему слова на подслова, и для каждого проверять принадлежность &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;. Если хотя бы в одном разбиении все подслова будут принадлежать &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;, то все слово принадлежит &amp;lt;tex&amp;gt; L_1^* &amp;lt;/tex&amp;gt;, иначе {{---}} не принадлежит. &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 L_2 : &amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''forall''' &amp;lt;tex&amp;gt;d_{1,2} :&amp;lt;/tex&amp;gt; все возможные разбиения на две части&lt;br /&gt;
         &amp;lt;tex&amp;gt;x_{d_1}x_{d_2} :&amp;lt;/tex&amp;gt; текущее разбиение &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;   &lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_{d_1}) == 1 \land p_2(x_{d_2}) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
                 '''return''' 1&lt;br /&gt;
     '''return''' 0  &lt;br /&gt;
&lt;br /&gt;
Разрешитель будет перебирать все возможные разбиения на два слова и проверять принадлежность первого слова &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; и второго слова &amp;lt;tex&amp;gt; L_2 &amp;lt;/tex&amp;gt;. Если хотя бы для одного разбиения оба разрешителя вернут 1, то слово принадлежит &amp;lt;tex&amp;gt; L_1 L_2 &amp;lt;/tex&amp;gt;, иначе {{---}} не принадлежит.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
 Языки &amp;lt;tex&amp;gt; L_1, L_2 &amp;lt;/tex&amp;gt; {{---}} перечислимы, тогда следующие языки перечислимы:&lt;br /&gt;
&lt;br /&gt;
* Объединение &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \cup L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Пересечение &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \cap L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Декартово произведение &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \times L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Замыкание Клини &amp;lt;tex&amp;gt;L_1\ (L_1^*)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Конкатенация &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_2&amp;lt;/tex&amp;gt; {{---}} полуразрешающие программы для языков &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt; соответственно. Для доказательства достаточно написать полуразрешающую программу для каждого случая. Заметим, что &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_2&amp;lt;/tex&amp;gt; могут зависнуть при использовании в полуразрешающей программе для соответствующего языка, но это допустимо.&lt;br /&gt;
&lt;br /&gt;
* Полуразрешающая программа для языка &amp;lt;tex&amp;gt; L_1 \cup L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
      '''for''' &amp;lt;tex&amp;gt;k = 1 \ .. \ \infty&amp;lt;/tex&amp;gt;&lt;br /&gt;
          '''if''' &amp;lt;tex&amp;gt; (p_1(x)|_k == 1) \lor (p_2(x)|_k == 1) &amp;lt;/tex&amp;gt;      &lt;br /&gt;
              '''return 1''' &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \cap L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''if''' &amp;lt;tex&amp;gt; (p_1(x) == 1) \land (p_2(x) == 1) &amp;lt;/tex&amp;gt;      &lt;br /&gt;
         '''return 1''' &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \times L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(\langle x, y \rangle)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''if''' &amp;lt;tex&amp;gt; (p_1(x) == 1) \land (p_2(y) == 1) &amp;lt;/tex&amp;gt;      &lt;br /&gt;
         '''return 1''' &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1^* :&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''forall''' &amp;lt;tex&amp;gt;d_i :&amp;lt;/tex&amp;gt; все возможные разбиения&lt;br /&gt;
         &amp;lt;tex&amp;gt;x_{d_1}x_{d_2} \ .. \ x_{d_n} :&amp;lt;/tex&amp;gt; текущее разбиение &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;&lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_{d_1}) == 1) \land (p_1(x_{d_2}) == 1) \land \ ... \ \land (p_1(x_{d_n}) == 1)&amp;lt;/tex&amp;gt;&lt;br /&gt;
                 '''return 1'''&lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 L_2 : &amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''forall''' &amp;lt;tex&amp;gt;d_{1,2} :&amp;lt;/tex&amp;gt; все возможные разбиения на две части&lt;br /&gt;
         &amp;lt;tex&amp;gt;x_{d_1}x_{d_2} :&amp;lt;/tex&amp;gt; текущее разбиение &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;   &lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_{d_1}) == 1 \land p_2(x_{d_2}) == 1)&amp;lt;/tex&amp;gt;&lt;br /&gt;
                 '''return 1'''&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
 Языки &amp;lt;tex&amp;gt; L_1, L_2 &amp;lt;/tex&amp;gt; {{---}} перечислимы, тогда следующие языки могут быть не перечислимы:&lt;br /&gt;
&lt;br /&gt;
* Дополнение &amp;lt;tex&amp;gt;L_1\ (\overline{L_1})&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Разность &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \backslash L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
&lt;br /&gt;
Рассмотрим язык &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt;. Предположим, что он перечислим. Тогда, имея какое-либо слово, мы можем одновременно запустить перечислители для &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt;. В какой-то момент времени слово появится либо в выводе перечислителя для &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;, либо в выводе перечислителя для &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt;. Тогда получится что &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; разрешим, так как про любое слово мы можем узнать принадлежит оно &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; или не принадлежит. Но мы знаем, что [[Разрешимые (рекурсивные) языки#Пример неразрешимого множества|существуют перечислимые, но не разрешимые языки]], следовательно, язык &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt; может быть не перечислим. &lt;br /&gt;
&lt;br /&gt;
Теперь рассмотрим &amp;lt;tex&amp;gt; L_1 \backslash L_2 &amp;lt;/tex&amp;gt;. В качестве &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; возьмем язык, состоящий из всех слов. Тогда получится, что язык &amp;lt;tex&amp;gt; L_1 \backslash L_2 &amp;lt;/tex&amp;gt; это &amp;lt;tex&amp;gt; \overline{L_2} &amp;lt;/tex&amp;gt;. Про язык &amp;lt;tex&amp;gt; \overline{L_2} &amp;lt;/tex&amp;gt; мы знаем, что он перечислим не всегда, следовательно и язык &amp;lt;tex&amp;gt; L_1 \backslash L_2 &amp;lt;/tex&amp;gt; также не всегда перечислим.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
* ''Верещагин Н. К., Шень А.'' '''Лекции по математической логике и теории алгоритов. Часть 3. Вычислимые функции''' {{---}} М.: МЦНМО, 1999&lt;/div&gt;</summary>
		<author><name>Roman Livarsky</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%97%D0%B0%D0%BC%D0%BA%D0%BD%D1%83%D1%82%D0%BE%D1%81%D1%82%D1%8C_%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B8%D0%BC%D1%8B%D1%85_%D0%B8_%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D1%85_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%BE%D1%82%D0%BD%D0%BE%D1%81%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE_%D1%82%D0%B5%D0%BE%D1%80%D0%B5%D1%82%D0%B8%D0%BA%D0%BE-%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B8_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B9&amp;diff=14957</id>
		<title>Замкнутость разрешимых и перечислимых языков относительно теоретико-множественных и алгебраических операций</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%97%D0%B0%D0%BC%D0%BA%D0%BD%D1%83%D1%82%D0%BE%D1%81%D1%82%D1%8C_%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B8%D0%BC%D1%8B%D1%85_%D0%B8_%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D1%85_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%BE%D1%82%D0%BD%D0%BE%D1%81%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE_%D1%82%D0%B5%D0%BE%D1%80%D0%B5%D1%82%D0%B8%D0%BA%D0%BE-%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B8_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B9&amp;diff=14957"/>
				<updated>2011-12-20T06:50:13Z</updated>
		
		<summary type="html">&lt;p&gt;Roman Livarsky: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
 Языки &amp;lt;tex&amp;gt; L_1, L_2 &amp;lt;/tex&amp;gt; {{---}} разрешимы, тогда следующие языки разрешимы:&lt;br /&gt;
&lt;br /&gt;
* Объединение &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \cup L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Пересечение &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \cap L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Дополнение &amp;lt;tex&amp;gt;L_1\ (\overline{L_1})&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Разность &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \backslash L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Декартово произведение &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \times L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Замыкание Клини &amp;lt;tex&amp;gt;L_1\ (L_1^*)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Конкатенация &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_2&amp;lt;/tex&amp;gt; {{---}} разрешающие программы для языков  &lt;br /&gt;
&amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt; соответственно. Для доказательства достаточно написать разрешающую программу (разрешитель) для каждого случая. &lt;br /&gt;
&lt;br /&gt;
* Разрешающая программа для языка &amp;lt;tex&amp;gt; L_1 \cup L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \lor (p_2(x) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \cap L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \land (p_2(x) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; \overline{L_1} :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 0)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \backslash L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \land (p_2(x) == 0)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \times L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(\langle x, y \rangle)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \land (p_2(y) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt;L_1^* :&amp;lt;/tex&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''forall''' &amp;lt;tex&amp;gt;d_i :&amp;lt;/tex&amp;gt; все возможные разбиения&lt;br /&gt;
         &amp;lt;tex&amp;gt;x_{d_1}x_{d_2} \ .. \ x_{d_n} :&amp;lt;/tex&amp;gt; текущее разбиение &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;&lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_{d_1}) == 1) \land (p_1(x_{d_2}) == 1) \land \ ... \ \land (p_1(x_{d_n}) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
                 '''return''' 1&lt;br /&gt;
     '''return''' 0  &lt;br /&gt;
&lt;br /&gt;
Разрешитель будет перебирать все возможные разбиения данного ему слова на подслова, и для каждого проверять принадлежность &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;. Если хотя бы в одном разбиении все подслова будут принадлежать &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;, то все слово принадлежит &amp;lt;tex&amp;gt; L_1^* &amp;lt;/tex&amp;gt;, иначе {{---}} не принадлежит. &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 L_2 : &amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''forall''' &amp;lt;tex&amp;gt;d_{1,2} :&amp;lt;/tex&amp;gt; все возможные разбиения на две части&lt;br /&gt;
         &amp;lt;tex&amp;gt;x_{d_1}x_{d_2} :&amp;lt;/tex&amp;gt; текущее разбиение &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;   &lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_{d_1}) == 1 \land p_2(x_{d_2}) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
                 '''return''' 1&lt;br /&gt;
     '''return''' 0  &lt;br /&gt;
&lt;br /&gt;
Разрешитель будет перебирать все возможные разбиения на два слова и проверять принадлежность первого слова &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; и второго слова &amp;lt;tex&amp;gt; L_2 &amp;lt;/tex&amp;gt;. Если хотя бы для одного разбиения оба разрешителя вернут 1, то слово принадлежит &amp;lt;tex&amp;gt; L_1 L_2 &amp;lt;/tex&amp;gt;, иначе {{---}} не принадлежит.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
 Языки &amp;lt;tex&amp;gt; L_1, L_2 &amp;lt;/tex&amp;gt; {{---}} перечислимы, тогда следующие языки перечислимы:&lt;br /&gt;
&lt;br /&gt;
* Объединение &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \cup L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Пересечение &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \cap L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Декартово произведение &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \times L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Замыкание Клини &amp;lt;tex&amp;gt;L_1\ (L_1^*)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Конкатенация &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_2&amp;lt;/tex&amp;gt; {{---}} полуразрешающие программы для языков &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt; соответственно. Для доказательства достаточно написать полуразрешающую программу для каждого случая. Заметим, что &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_2&amp;lt;/tex&amp;gt; могут зависнуть при использовании в полуразрешающей программе для соответствующего языка, но это допустимо.&lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \cup L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
      '''for''' &amp;lt;tex&amp;gt;k = 1 \ .. \ \infty&amp;lt;/tex&amp;gt;&lt;br /&gt;
          '''if''' &amp;lt;tex&amp;gt; (p_1(x)|_k == 1) \lor (p_2(x)|_k == 1) &amp;lt;/tex&amp;gt;      &lt;br /&gt;
              '''return 1''' &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \cap L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''if''' &amp;lt;tex&amp;gt; (p_1(x) == 1) \land (p_2(x) == 1) &amp;lt;/tex&amp;gt;      &lt;br /&gt;
         '''return 1''' &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \times L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(\langle x, y \rangle)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''if''' &amp;lt;tex&amp;gt; (p_1(x) == 1) \land (p_2(y) == 1) &amp;lt;/tex&amp;gt;      &lt;br /&gt;
         '''return 1''' &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1^* :&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''forall''' &amp;lt;tex&amp;gt;d_i :&amp;lt;/tex&amp;gt; все возможные разбиения&lt;br /&gt;
         &amp;lt;tex&amp;gt;x_{d_1}x_{d_2} \ .. \ x_{d_n} :&amp;lt;/tex&amp;gt; текущее разбиение &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;&lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_{d_1}) == 1) \land (p_1(x_{d_2}) == 1) \land \ ... \ \land (p_1(x_{d_n}) == 1)&amp;lt;/tex&amp;gt;&lt;br /&gt;
                 '''return 1'''&lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 L_2 : &amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''forall''' &amp;lt;tex&amp;gt;d_{1,2} :&amp;lt;/tex&amp;gt; все возможные разбиения на две части&lt;br /&gt;
         &amp;lt;tex&amp;gt;x_{d_1}x_{d_2} :&amp;lt;/tex&amp;gt; текущее разбиение &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;   &lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_{d_1}) == 1 \land p_2(x_{d_2}) == 1)&amp;lt;/tex&amp;gt;&lt;br /&gt;
                 '''return 1'''&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
 Языки &amp;lt;tex&amp;gt; L_1, L_2 &amp;lt;/tex&amp;gt; {{---}} перечислимы, тогда следующие языки могут быть не перечислимы:&lt;br /&gt;
&lt;br /&gt;
* Дополнение &amp;lt;tex&amp;gt;L_1\ (\overline{L_1})&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Разность &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \backslash L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
&lt;br /&gt;
Рассмотрим язык &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt;. Предположим, что он перечислим. Тогда, имея какое-либо слово, мы можем одновременно запустить перечислители для &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt;. В какой-то момент времени слово появится либо в выводе перечислителя для &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;, либо в выводе перечислителя для &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt;. Тогда получится что &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; разрешим, так как про любое слово мы можем узнать принадлежит оно &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; или не принадлежит. Но мы знаем, что [[Разрешимые (рекурсивные) языки#Пример неразрешимого множества|существуют перечислимые, но не разрешимые языки]], следовательно, язык &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt; может быть не перечислим. &lt;br /&gt;
&lt;br /&gt;
Теперь рассмотрим &amp;lt;tex&amp;gt; L_1 \backslash L_2 &amp;lt;/tex&amp;gt;. В качестве &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; возьмем язык, состоящий из всех слов. Тогда получится, что язык &amp;lt;tex&amp;gt; L_1 \backslash L_2 &amp;lt;/tex&amp;gt; это &amp;lt;tex&amp;gt; \overline{L_2} &amp;lt;/tex&amp;gt;. Про язык &amp;lt;tex&amp;gt; \overline{L_2} &amp;lt;/tex&amp;gt; мы знаем, что он перечислим не всегда, следовательно и язык &amp;lt;tex&amp;gt; L_1 \backslash L_2 &amp;lt;/tex&amp;gt; также не всегда перечислим.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
* ''Верещагин Н. К., Шень А.'' '''Лекции по математической логике и теории алгоритов. Часть 3. Вычислимые функции''' {{–--}} М.: МЦНМО, 1999&lt;/div&gt;</summary>
		<author><name>Roman Livarsky</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%97%D0%B0%D0%BC%D0%BA%D0%BD%D1%83%D1%82%D0%BE%D1%81%D1%82%D1%8C_%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B8%D0%BC%D1%8B%D1%85_%D0%B8_%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D1%85_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%BE%D1%82%D0%BD%D0%BE%D1%81%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE_%D1%82%D0%B5%D0%BE%D1%80%D0%B5%D1%82%D0%B8%D0%BA%D0%BE-%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B8_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B9&amp;diff=14954</id>
		<title>Замкнутость разрешимых и перечислимых языков относительно теоретико-множественных и алгебраических операций</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%97%D0%B0%D0%BC%D0%BA%D0%BD%D1%83%D1%82%D0%BE%D1%81%D1%82%D1%8C_%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B8%D0%BC%D1%8B%D1%85_%D0%B8_%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D1%85_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%BE%D1%82%D0%BD%D0%BE%D1%81%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE_%D1%82%D0%B5%D0%BE%D1%80%D0%B5%D1%82%D0%B8%D0%BA%D0%BE-%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B8_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B9&amp;diff=14954"/>
				<updated>2011-12-20T06:37:11Z</updated>
		
		<summary type="html">&lt;p&gt;Roman Livarsky: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
 Языки &amp;lt;tex&amp;gt; L_1, L_2 &amp;lt;/tex&amp;gt; –- разрешимы, тогда следующие языки разрешимы:&lt;br /&gt;
&lt;br /&gt;
* Объединение &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \cup L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Пересечение &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \cap L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Дополнение &amp;lt;tex&amp;gt;L_1\ (\overline{L_1})&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Разность &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \backslash L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Декартово произведение &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \times L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Замыкание Клини &amp;lt;tex&amp;gt;L_1\ (L_1^*)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Конкатенация &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_2&amp;lt;/tex&amp;gt; — разрешающие программы для языков  &lt;br /&gt;
&amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt; соответственно. Для доказательства достаточно написать разрешающую программу (разрешитель) для каждого случая. &lt;br /&gt;
&lt;br /&gt;
* Разрешающая программа для языка &amp;lt;tex&amp;gt; L_1 \cup L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \lor (p_2(x) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \cap L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \land (p_2(x) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; \overline{L_1} :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 0)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \backslash L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \land (p_2(x) == 0)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \times L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(\langle x, y \rangle)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \land (p_2(y) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt;L_1^* :&amp;lt;/tex&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''forall''' &amp;lt;tex&amp;gt;d_i :&amp;lt;/tex&amp;gt; все возможные разбиения&lt;br /&gt;
         &amp;lt;tex&amp;gt;x_{d_1}x_{d_2} \ .. \ x_{d_n} :&amp;lt;/tex&amp;gt; текущее разбиение &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;&lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_{d_1}) == 1) \land (p_1(x_{d_2}) == 1) \land \ ... \ \land (p_1(x_{d_n}) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
                 '''return''' 1&lt;br /&gt;
     '''return''' 0  &lt;br /&gt;
&lt;br /&gt;
Разрешитель будет перебирать все возможные разбиения данного ему слова на подслова, и для каждого проверять принадлежность &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;. Если хотя бы в одном разбиении все подслова будут принадлежать &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;, то все слово принадлежит &amp;lt;tex&amp;gt; L_1^* &amp;lt;/tex&amp;gt;, иначе — не принадлежит. &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 L_2 : &amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''forall''' &amp;lt;tex&amp;gt;d_{1,2} :&amp;lt;/tex&amp;gt; все возможные разбиения на две части&lt;br /&gt;
         &amp;lt;tex&amp;gt;x_{d_1}x_{d_2} :&amp;lt;/tex&amp;gt; текущее разбиение &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;   &lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_{d_1}) == 1 \land p_2(x_{d_2}) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
                 '''return''' 1&lt;br /&gt;
     '''return''' 0  &lt;br /&gt;
&lt;br /&gt;
Разрешитель будет перебирать все возможные разбиения на два слова и проверять принадлежность первого слова &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; и второго слова &amp;lt;tex&amp;gt; L_2 &amp;lt;/tex&amp;gt;. Если хотя бы для одного разбиения оба разрешителя вернут 1, то слово принадлежит &amp;lt;tex&amp;gt; L_1 L_2 &amp;lt;/tex&amp;gt;, иначе — не принадлежит.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
 Языки &amp;lt;tex&amp;gt; L_1, L_2 &amp;lt;/tex&amp;gt; –- перечислимы, тогда следующие языки перечислимы:&lt;br /&gt;
&lt;br /&gt;
* Объединение &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \cup L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Пересечение &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \cap L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Декартово произведение &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \times L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Замыкание Клини &amp;lt;tex&amp;gt;L_1\ (L_1^*)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Конкатенация &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_2&amp;lt;/tex&amp;gt; — полуразрешающие программы для языков &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt; соответственно. Для доказательства достаточно написать полуразрешающую программу для каждого случая. Заметим, что &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_2&amp;lt;/tex&amp;gt; могут зависнуть при использовании в полуразрешающей программе для соответствующего языка, но это допустимо.&lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \cup L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
      '''for''' &amp;lt;tex&amp;gt;k = 1 \ .. \ \infty&amp;lt;/tex&amp;gt;&lt;br /&gt;
          '''if''' &amp;lt;tex&amp;gt; (p_1(x)|_k == 1) \lor (p_2(x)|_k == 1) &amp;lt;/tex&amp;gt;      &lt;br /&gt;
              '''return 1''' &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \cap L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''if''' &amp;lt;tex&amp;gt; (p_1(x) == 1) \land (p_2(x) == 1) &amp;lt;/tex&amp;gt;      &lt;br /&gt;
         '''return 1''' &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \times L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(\langle x, y \rangle)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''if''' &amp;lt;tex&amp;gt; (p_1(x) == 1) \land (p_2(y) == 1) &amp;lt;/tex&amp;gt;      &lt;br /&gt;
         '''return 1''' &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1^* :&amp;lt;/tex&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''forall''' &amp;lt;tex&amp;gt;d_i :&amp;lt;/tex&amp;gt; все возможные разбиения&lt;br /&gt;
         &amp;lt;tex&amp;gt;x_{d_1}x_{d_2} \ .. \ x_{d_n} :&amp;lt;/tex&amp;gt; текущее разбиение &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;&lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_{d_1}) == 1) \land (p_1(x_{d_2}) == 1) \land \ ... \ \land (p_1(x_{d_n}) == 1)&amp;lt;/tex&amp;gt;&lt;br /&gt;
                 '''return 1'''&lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 L_2 : &amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''forall''' &amp;lt;tex&amp;gt;d_{1,2} :&amp;lt;/tex&amp;gt; все возможные разбиения на две части&lt;br /&gt;
         &amp;lt;tex&amp;gt;x_{d_1}x_{d_2} :&amp;lt;/tex&amp;gt; текущее разбиение &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;   &lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_{d_1}) == 1 \land p_2(x_{d_2}) == 1)&amp;lt;/tex&amp;gt;&lt;br /&gt;
                 '''return 1'''&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
 Языки &amp;lt;tex&amp;gt; L_1, L_2 &amp;lt;/tex&amp;gt; –- перечислимы, тогда следующие языки могут быть не перечислимы:&lt;br /&gt;
&lt;br /&gt;
* Дополнение &amp;lt;tex&amp;gt;L_1\ (\overline{L_1})&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Разность &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \backslash L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
&lt;br /&gt;
Рассмотрим язык &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt;. Предположим, что он перечислим. Тогда, имея какое-либо слово, мы можем одновременно запустить перечислители для &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt;. В какой-то момент времени слово появится либо в выводе перечислителя для &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;, либо в выводе перечислителя для &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt;. Тогда получится что &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; разрешим, так как про любое слово мы можем узнать принадлежит оно &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; или не принадлежит. Но мы знаем, что [[Разрешимые (рекурсивные) языки#Пример неразрешимого множества|существуют перечислимые, но не разрешимые языки]], следовательно, язык &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt; может быть не перечислим. &lt;br /&gt;
&lt;br /&gt;
Теперь рассмотрим &amp;lt;tex&amp;gt; L_1 \backslash L_2 &amp;lt;/tex&amp;gt;. В качестве &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; возьмем язык, состоящий из всех слов. Тогда получится, что язык &amp;lt;tex&amp;gt; L_1 \backslash L_2 &amp;lt;/tex&amp;gt; это &amp;lt;tex&amp;gt; \overline{L_2} &amp;lt;/tex&amp;gt;. Про язык &amp;lt;tex&amp;gt; \overline{L_2} &amp;lt;/tex&amp;gt; мы знаем, что он перечислим не всегда, следовательно и язык &amp;lt;tex&amp;gt; L_1 \backslash L_2 &amp;lt;/tex&amp;gt; также не всегда перечислим.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
* ''Верещагин Н. К., Шень А.'' '''Лекции по математической логике и теории алгоритов. Часть 3. Вычислимые функции''' — М.: МЦНМО, 1999&lt;/div&gt;</summary>
		<author><name>Roman Livarsky</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:%D0%97%D0%B0%D0%BC%D0%BA%D0%BD%D1%83%D1%82%D0%BE%D1%81%D1%82%D1%8C_%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B8%D0%BC%D1%8B%D1%85_%D0%B8_%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D1%85_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%BE%D1%82%D0%BD%D0%BE%D1%81%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE_%D1%82%D0%B5%D0%BE%D1%80%D0%B5%D1%82%D0%B8%D0%BA%D0%BE-%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B8_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B9&amp;diff=14942</id>
		<title>Обсуждение:Замкнутость разрешимых и перечислимых языков относительно теоретико-множественных и алгебраических операций</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:%D0%97%D0%B0%D0%BC%D0%BA%D0%BD%D1%83%D1%82%D0%BE%D1%81%D1%82%D1%8C_%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B8%D0%BC%D1%8B%D1%85_%D0%B8_%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D1%85_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%BE%D1%82%D0%BD%D0%BE%D1%81%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE_%D1%82%D0%B5%D0%BE%D1%80%D0%B5%D1%82%D0%B8%D0%BA%D0%BE-%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B8_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B9&amp;diff=14942"/>
				<updated>2011-12-19T21:46:49Z</updated>
		
		<summary type="html">&lt;p&gt;Roman Livarsky: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== ToDo ===&lt;br /&gt;
«РазрешАтель». Ты серьёзно?&amp;lt;br&amp;gt;&lt;br /&gt;
Разрешимые языки, &amp;lt;tex&amp;gt;L_{1}^*&amp;lt;/tex&amp;gt;: во-первых, мы должны посмотреть не на одно разбиение, а на все возможные (кстати, как написано в описании, но не в коде), во-вторых, там в коде бред написан.&amp;lt;br&amp;gt;&lt;br /&gt;
Разрешимые языки, &amp;lt;tex&amp;gt;L_1 L_2&amp;lt;/tex&amp;gt;: в коде тоже не перебираются разбиения.&amp;lt;br&amp;gt;&lt;br /&gt;
Не понятно, зачем в полуразрешителе для пересечения тайм-лимиты.&amp;lt;br&amp;gt;&lt;br /&gt;
То же самое для полуразрешителя для &amp;lt;tex&amp;gt;L_1 \times L_2&amp;lt;/tex&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Для языка &amp;lt;tex&amp;gt;L_{1}^*&amp;lt;/tex&amp;gt; по аналогии с разрешимостью. Разбиения не перебираются. Ну и тоже бред в коде. Ну и в описании тоже бред: какой тайм-лимит, если его нет??&amp;lt;br&amp;gt;&lt;br /&gt;
Что за бред вообще с последней программой? Говорится про перечислитель, написан полуразрешитель.&amp;lt;br&amp;gt;&lt;br /&gt;
А ещё меня глобально не устраивают эти фигурные скобки в каждой теореме.    [[Участник:Leugenea|Евгений Лукьянец]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Возможно исправил.&lt;br /&gt;
[[Участник:Roman Livarsky|Рома]]&lt;/div&gt;</summary>
		<author><name>Roman Livarsky</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%97%D0%B0%D0%BC%D0%BA%D0%BD%D1%83%D1%82%D0%BE%D1%81%D1%82%D1%8C_%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B8%D0%BC%D1%8B%D1%85_%D0%B8_%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D1%85_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%BE%D1%82%D0%BD%D0%BE%D1%81%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE_%D1%82%D0%B5%D0%BE%D1%80%D0%B5%D1%82%D0%B8%D0%BA%D0%BE-%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B8_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B9&amp;diff=14941</id>
		<title>Замкнутость разрешимых и перечислимых языков относительно теоретико-множественных и алгебраических операций</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%97%D0%B0%D0%BC%D0%BA%D0%BD%D1%83%D1%82%D0%BE%D1%81%D1%82%D1%8C_%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B8%D0%BC%D1%8B%D1%85_%D0%B8_%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D1%85_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%BE%D1%82%D0%BD%D0%BE%D1%81%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE_%D1%82%D0%B5%D0%BE%D1%80%D0%B5%D1%82%D0%B8%D0%BA%D0%BE-%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B8_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B9&amp;diff=14941"/>
				<updated>2011-12-19T21:44:11Z</updated>
		
		<summary type="html">&lt;p&gt;Roman Livarsky: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
 Языки &amp;lt;tex&amp;gt; L_1, L_2 &amp;lt;/tex&amp;gt; –- разрешимы, тогда следующие языки разрешимы:&lt;br /&gt;
&lt;br /&gt;
* Объединение &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \cup L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Пересечение &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \cap L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Дополнение &amp;lt;tex&amp;gt;L_1\ (\overline{L_1})&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Разность &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \backslash L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Декартово произведение &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \times L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Замыкание Клини &amp;lt;tex&amp;gt;L_1\ (L_1^*)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Конкатенация &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_2&amp;lt;/tex&amp;gt; — разрешающие программы для языков  &lt;br /&gt;
&amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt; соответственно. Для доказательства достаточно написать разрешающую программу (разрешитель) для каждого случая. &lt;br /&gt;
&lt;br /&gt;
* Разрешающая программа для языка &amp;lt;tex&amp;gt; L_1 \cup L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \lor (p_2(x) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \cap L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \land (p_2(x) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; \overline{L_1} :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 0)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \backslash L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \land (p_2(x) == 0)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \times L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(\langle x, y \rangle)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \land (p_2(y) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt;L_1^* :&amp;lt;/tex&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''forall''' &amp;lt;tex&amp;gt;x_i :&amp;lt;/tex&amp;gt; разбиение &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;     &lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_1) == 1) \land (p_1(x_2) == 1) \land \ ... \ \land (p_1(x_n) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
             '''return''' 1&lt;br /&gt;
     '''return''' 0  &lt;br /&gt;
&lt;br /&gt;
Разрешитель будет перебирать все возможные разбиения данного ему слова на подслова, и для каждого проверять принадлежность &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;. Если хотя бы в одном разбиении все подслова будут принадлежать &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;, то все слово принадлежит &amp;lt;tex&amp;gt; L_1^* &amp;lt;/tex&amp;gt;, иначе — не принадлежит. &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 L_2 : &amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''forall''' &amp;lt;tex&amp;gt;x_1, x_2 :&amp;lt;/tex&amp;gt; разбиение &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;     &lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_1) == 1 \land p_2(x_2) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
             '''return''' 1&lt;br /&gt;
     '''return''' 0  &lt;br /&gt;
&lt;br /&gt;
Разрешитель будет перебирать все возможные разбиения на два слова и проверять принадлежность первого слова &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; и второго слова &amp;lt;tex&amp;gt; L_2 &amp;lt;/tex&amp;gt;. Если хотя бы для одного разбиения оба разрешителя вернут 1, то слово принадлежит &amp;lt;tex&amp;gt; L_1 L_2 &amp;lt;/tex&amp;gt;, иначе — не принадлежит.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
 Языки &amp;lt;tex&amp;gt; L_1, L_2 &amp;lt;/tex&amp;gt; –- перечислимы, тогда следующие языки перечислимы:&lt;br /&gt;
&lt;br /&gt;
* Объединение &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \cup L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Пересечение &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \cap L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Декартово произведение &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \times L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Замыкание Клини &amp;lt;tex&amp;gt;L_1\ (L_1^*)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Конкатенация &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_2&amp;lt;/tex&amp;gt; — полуразрешающие программы для языков &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt; соответственно. Для доказательства достаточно написать полуразрешающую или перечисляющую программу для каждого случая. Для некоторых языков предоставим оба варианта. Заметим, что &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_2&amp;lt;/tex&amp;gt; могут зависнуть при использовании в полуразрешающей программе для соответствующего языка, но это допустимо.&lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \cup L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
полуразрешающая программа:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''if''' &amp;lt;tex&amp;gt; (p_1(x) == 1) \lor (p_2(x) == 1) &amp;lt;/tex&amp;gt;      &lt;br /&gt;
         '''return 1''' &lt;br /&gt;
&lt;br /&gt;
Перечислитель же для этого языка будет по очереди на один шаг запускать перечислители для &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt; и выдавать по очереди слова из &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt; соответственно.&lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \cap L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
полуразрешающая программа:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''if''' &amp;lt;tex&amp;gt; (p_1(x) == 1) \land (p_2(x) == 1) &amp;lt;/tex&amp;gt;      &lt;br /&gt;
         '''return 1''' &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \times L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
полуразрешающая программа:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(\langle x, y \rangle)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''if''' &amp;lt;tex&amp;gt; (p_1(x) == 1) \land (p_2(y) == 1) &amp;lt;/tex&amp;gt;      &lt;br /&gt;
         '''return 1''' &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1^* :&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
полуразрешающая программа (по аналогии с &amp;lt;tex&amp;gt;L_1^*&amp;lt;/tex&amp;gt; для разрешимого &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt;):&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''forall''' &amp;lt;tex&amp;gt;x_i :&amp;lt;/tex&amp;gt; разбиение &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;     &lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_1) == 1) \land (p_1(x_2) == 1) \land \ ... \ \land (p_1(x_n) == 1)&amp;lt;/tex&amp;gt;&lt;br /&gt;
             '''return''' 1&lt;br /&gt;
&lt;br /&gt;
Перечислитель же строится следующим образом: запускаем перечислитель для &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; в цикле по тайм-лимиту и запоминаем выданные им слова. При выдаче каждого нового слова перебираем все возможные перестановки уже выданных слов и выдаем их. &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 L_2 : &amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
полуразрешающая программа:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''forall''' &amp;lt;tex&amp;gt;x_1, x_2 :&amp;lt;/tex&amp;gt; разбиение &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;     &lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_1) == 1 \land p_2(x_2) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
             '''return''' 1&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Перечислитель же для &amp;lt;tex&amp;gt; L_1 L_2 &amp;lt;/tex&amp;gt; строим следующим образом: запускаем одновременно перечислители для &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;  и &amp;lt;tex&amp;gt; L_2 &amp;lt;/tex&amp;gt;, запоминая все выданные слова. При выдаче новых слов перебираем все возможные пары из запомненных слов и выдаем их конкатенацию.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
 Языки &amp;lt;tex&amp;gt; L_1, L_2 &amp;lt;/tex&amp;gt; –- перечислимы, тогда следующие языки могут быть не перечислимы:&lt;br /&gt;
&lt;br /&gt;
* Дополнение &amp;lt;tex&amp;gt;L_1\ (\overline{L_1})&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Разность &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \backslash L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
&lt;br /&gt;
Рассмотрим язык &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt;. Предположим, что он перечислим. Тогда имея какое-либо слово, мы можем одновременно запустить перечислители для &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt;. В какой-то момент времени слово появится либо в выводе перечислителя для &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;, либо в выводе перечислителя для &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt;. Тогда получится что &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; разрешим, так как про любое слово мы можем узнать принадлежит оно &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; или не принадлежит. Но мы знаем, что существуют перечислимые, но не разрешимые языки, следовательно, язык &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt; может быть не перечислим. &lt;br /&gt;
&lt;br /&gt;
Теперь рассмотрим &amp;lt;tex&amp;gt; L_1 \backslash L_2 &amp;lt;/tex&amp;gt;. В качестве &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; возьмем язык, состоящий из всех слов. Тогда получится, что язык &amp;lt;tex&amp;gt; L_1 \backslash L_2 &amp;lt;/tex&amp;gt; это &amp;lt;tex&amp;gt; \overline{L_2} &amp;lt;/tex&amp;gt;. Про язык &amp;lt;tex&amp;gt; \overline{L_2} &amp;lt;/tex&amp;gt; мы знаем, что он перечислим не всегда, следовательно и язык &amp;lt;tex&amp;gt; L_1 \backslash L_2 &amp;lt;/tex&amp;gt; также не всегда перечислим.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
* ''Верещагин Н. К., Шень А.'' '''Лекции по математической логике и теории алгоритов. Часть 3. Вычислимые функции''' — М.: МЦНМО, 1999&lt;/div&gt;</summary>
		<author><name>Roman Livarsky</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:%D0%A5%D0%B0%D1%80%D0%B0%D0%BA%D1%82%D0%B5%D1%80%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B0_%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D1%85_%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_%D0%B2%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=14940</id>
		<title>Обсуждение:Характеристика перечислимых множеств через вычислимые функции</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:%D0%A5%D0%B0%D1%80%D0%B0%D0%BA%D1%82%D0%B5%D1%80%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B0_%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D1%85_%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_%D0%B2%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=14940"/>
				<updated>2011-12-19T21:40:50Z</updated>
		
		<summary type="html">&lt;p&gt;Roman Livarsky: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Претензия по сути: отсутствует доказательство 3 &amp;lt;tex&amp;gt;\Rightarrow&amp;lt;/tex&amp;gt; 2.&lt;br /&gt;
&lt;br /&gt;
По оформлению претензий много. &lt;br /&gt;
В определениях: во-первых, после двоеточия пишется строчная буква, даже на следующей строке. Во-вторых, перед причастным оборотом ставится запятая (первое определение). В-третьих, слова «вычислимая функция» лучше сделать ссылкой на соответствующую статью. &lt;br /&gt;
&lt;br /&gt;
В доказательстве теоремы: во-первых, в псевдокоде не стоит после if писать then, тем более на следующей строке. &lt;br /&gt;
Во-вторых, в пункте «2 &amp;lt;tex&amp;gt;\Rightarrow&amp;lt;/tex&amp;gt; 1» есть второе предложение, нуждающееся в переформулировке. &amp;lt;tex&amp;gt;p(x)|_{TL}&amp;lt;/tex&amp;gt; — это не «запустить», это некоторый объект, как видно из следующего предложения. Короче, с этим надо что-то делать. И да, зачем вокруг тире по 3 пробела?&lt;br /&gt;
&lt;br /&gt;
И список литературы выглядит криво — почему вместо тире два дефиса? [[Участник:Berezhkovskaya|Алёна]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пожалуйста, если что-то исправляешь — отмечай здесь.&lt;br /&gt;
Знаешь, стало не сильно лучше. Да, после двоеточия идет строчная буква, но вот после точки — прописная. Так что определение №4 верни как было.&lt;br /&gt;
Теперь комментарии к &amp;lt;tex&amp;gt;p(x)|_{TL}&amp;lt;/tex&amp;gt; вообще исчезли. Верни обратно пояснение, просто напиши его понятным языком.&lt;br /&gt;
По прежнему нет доказательства 3 &amp;lt;tex&amp;gt;\Rightarrow&amp;lt;/tex&amp;gt; 2. [[Участник:Berezhkovskaya|Алёна]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Доказательство 3 &amp;lt;tex&amp;gt;\Rightarrow&amp;lt;/tex&amp;gt; 2 : 3 &amp;lt;tex&amp;gt;\Rightarrow&amp;lt;/tex&amp;gt; 1 &amp;lt;tex&amp;gt;\Rightarrow&amp;lt;/tex&amp;gt; 4 &amp;lt;tex&amp;gt;\Rightarrow&amp;lt;/tex&amp;gt; 2. Разве нет? Остальное исправил.&lt;br /&gt;
[[Участник:Roman Livarsky|Рома]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Изменил определение для &amp;lt;tex&amp;gt;p(x)|_{TL}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
[[Участник:Roman Livarsky|Рома]]&lt;/div&gt;</summary>
		<author><name>Roman Livarsky</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A5%D0%B0%D1%80%D0%B0%D0%BA%D1%82%D0%B5%D1%80%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B0_%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D1%85_%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_%D0%B2%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=14939</id>
		<title>Характеристика перечислимых множеств через вычислимые функции</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A5%D0%B0%D1%80%D0%B0%D0%BA%D1%82%D0%B5%D1%80%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B0_%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D1%85_%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_%D0%B2%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=14939"/>
				<updated>2011-12-19T21:37:37Z</updated>
		
		<summary type="html">&lt;p&gt;Roman Livarsky: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition=Множество &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; называется перечислимым, если выполняется хотя бы одно условие из приведенных ниже:&lt;br /&gt;
# существует программа, перечисляющая все элементы &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; в произвольном порядке.&lt;br /&gt;
# &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; является областью определения [[Вычислимые функции|вычиcлимой функции]] &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; является областью значений [[Вычислимые функции|вычиcлимой функции]] &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Функция &amp;lt;tex&amp;gt;f_X(x) = \begin{cases}&lt;br /&gt;
  1, &amp;amp; x \in X \\&lt;br /&gt;
  \bot, &amp;amp; x \notin X &lt;br /&gt;
\end{cases}&amp;lt;/tex&amp;gt; — вычислима.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Определения ''1'', ''2'', ''3'', ''4'' эквивалентны.&lt;br /&gt;
|proof=&lt;br /&gt;
*1 &amp;lt;tex&amp;gt;\Rightarrow&amp;lt;/tex&amp;gt; 4&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; — программа, перечисляющая &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Приведем программу &amp;lt;tex&amp;gt;q&amp;lt;/tex&amp;gt;, вычисляющую функцию &amp;lt;tex&amp;gt;f_X(x):&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;q(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''for''' &amp;lt;tex&amp;gt;k = 1 \ .. \ \infty&amp;lt;/tex&amp;gt;&lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt; p(k) == x &amp;lt;/tex&amp;gt;&lt;br /&gt;
             '''return''' 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*2 &amp;lt;tex&amp;gt;\Rightarrow&amp;lt;/tex&amp;gt; 1, 3 &amp;lt;tex&amp;gt;\Rightarrow&amp;lt;/tex&amp;gt; 1&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; — область определения [[Вычислимые функции|вычислимой функции]] &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt;, вычисляемой программой &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Введем обозначение: &amp;lt;tex&amp;gt;p(x)|_{TL}&amp;lt;/tex&amp;gt; — программа &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;,  запускаемая на &amp;lt;tex&amp;gt;TL&amp;lt;/tex&amp;gt; секунд. Если &amp;lt;tex&amp;gt;p(x)|_{TL}&amp;lt;/tex&amp;gt; за &amp;lt;tex&amp;gt;TL&amp;lt;/tex&amp;gt; секунд так и не вернула значение, то считаем, что это значение равно &amp;lt;tex&amp;gt;\bot&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тогда &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; перечисляется такой программой:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;q()&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''for''' &amp;lt;tex&amp;gt; TL = 1 \ .. \ \infty &amp;lt;/tex&amp;gt; &lt;br /&gt;
         '''for''' &amp;lt;tex&amp;gt; k = 1 \ ..\ TL&amp;lt;/tex&amp;gt;&lt;br /&gt;
             '''if''' &amp;lt;tex&amp;gt;p(k)|_{TL} \neq \bot &amp;lt;/tex&amp;gt;&lt;br /&gt;
                 '''print'''&amp;lt;tex&amp;gt;(k)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если print&amp;lt;tex&amp;gt;(k)&amp;lt;/tex&amp;gt; заменить на print(&amp;lt;tex&amp;gt;p(k)|_{TL}&amp;lt;/tex&amp;gt;), то &amp;lt;tex&amp;gt;q&amp;lt;/tex&amp;gt; станет перечислять область значений &amp;lt;tex&amp;gt;f(x)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*4 &amp;lt;tex&amp;gt;\Rightarrow&amp;lt;/tex&amp;gt; 2, 4 &amp;lt;tex&amp;gt;\Rightarrow&amp;lt;/tex&amp;gt; 3&lt;br /&gt;
&lt;br /&gt;
Пусть дана &amp;lt;tex&amp;gt;f_X(x)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Введем новую функцию &amp;lt;tex&amp;gt;g(x) = x&amp;lt;/tex&amp;gt;, если &amp;lt;tex&amp;gt;f_X(x) \neq \bot&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Очевидно, она вычислима, и ее область определения и область значений совпадают с &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
* ''Верещагин Н. К., Шень А.'' '''Лекции по математической логике и теории алгоритов. Часть 3. Вычислимые функции''' — М.: МЦНМО, 1999&lt;/div&gt;</summary>
		<author><name>Roman Livarsky</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:%D0%97%D0%B0%D0%BC%D0%BA%D0%BD%D1%83%D1%82%D0%BE%D1%81%D1%82%D1%8C_%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B8%D0%BC%D1%8B%D1%85_%D0%B8_%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D1%85_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%BE%D1%82%D0%BD%D0%BE%D1%81%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE_%D1%82%D0%B5%D0%BE%D1%80%D0%B5%D1%82%D0%B8%D0%BA%D0%BE-%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B8_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B9&amp;diff=14906</id>
		<title>Обсуждение:Замкнутость разрешимых и перечислимых языков относительно теоретико-множественных и алгебраических операций</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:%D0%97%D0%B0%D0%BC%D0%BA%D0%BD%D1%83%D1%82%D0%BE%D1%81%D1%82%D1%8C_%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B8%D0%BC%D1%8B%D1%85_%D0%B8_%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D1%85_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%BE%D1%82%D0%BD%D0%BE%D1%81%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE_%D1%82%D0%B5%D0%BE%D1%80%D0%B5%D1%82%D0%B8%D0%BA%D0%BE-%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B8_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B9&amp;diff=14906"/>
				<updated>2011-12-19T03:32:32Z</updated>
		
		<summary type="html">&lt;p&gt;Roman Livarsky: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== ToDo ===&lt;br /&gt;
«РазрешАтель». Ты серьёзно?&amp;lt;br&amp;gt;&lt;br /&gt;
Разрешимые языки, &amp;lt;tex&amp;gt;L_{1}^*&amp;lt;/tex&amp;gt;: во-первых, мы должны посмотреть не на одно разбиение, а на все возможные (кстати, как написано в описании, но не в коде), во-вторых, там в коде бред написан.&amp;lt;br&amp;gt;&lt;br /&gt;
Разрешимые языки, &amp;lt;tex&amp;gt;L_1 L_2&amp;lt;/tex&amp;gt;: в коде тоже не перебираются разбиения.&amp;lt;br&amp;gt;&lt;br /&gt;
Не понятно, зачем в полуразрешителе для пересечения тайм-лимиты.&amp;lt;br&amp;gt;&lt;br /&gt;
То же самое для полуразрешителя для &amp;lt;tex&amp;gt;L_1 \times L_2&amp;lt;/tex&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Для языка &amp;lt;tex&amp;gt;L_{1}^*&amp;lt;/tex&amp;gt; по аналогии с разрешимостью. Разбиения не перебираются. Ну и тоже бред в коде. Ну и в описании тоже бред: какой тайм-лимит, если его нет??&amp;lt;br&amp;gt;&lt;br /&gt;
Что за бред вообще с последней программой? Говорится про перечислитель, написан полуразрешитель.&amp;lt;br&amp;gt;&lt;br /&gt;
А ещё меня глобально не устраивают эти фигурные скобки в каждой теореме.    [[Участник:Leugenea|Евгений Лукьянец]]&lt;br /&gt;
&lt;br /&gt;
Исправил.&lt;br /&gt;
[[Участник:Roman Livarsky|Рома]]&lt;/div&gt;</summary>
		<author><name>Roman Livarsky</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%97%D0%B0%D0%BC%D0%BA%D0%BD%D1%83%D1%82%D0%BE%D1%81%D1%82%D1%8C_%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B8%D0%BC%D1%8B%D1%85_%D0%B8_%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D1%85_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%BE%D1%82%D0%BD%D0%BE%D1%81%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE_%D1%82%D0%B5%D0%BE%D1%80%D0%B5%D1%82%D0%B8%D0%BA%D0%BE-%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B8_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B9&amp;diff=14905</id>
		<title>Замкнутость разрешимых и перечислимых языков относительно теоретико-множественных и алгебраических операций</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%97%D0%B0%D0%BC%D0%BA%D0%BD%D1%83%D1%82%D0%BE%D1%81%D1%82%D1%8C_%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B8%D0%BC%D1%8B%D1%85_%D0%B8_%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D1%85_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%BE%D1%82%D0%BD%D0%BE%D1%81%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE_%D1%82%D0%B5%D0%BE%D1%80%D0%B5%D1%82%D0%B8%D0%BA%D0%BE-%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B8_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B9&amp;diff=14905"/>
				<updated>2011-12-19T03:28:51Z</updated>
		
		<summary type="html">&lt;p&gt;Roman Livarsky: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
 Языки &amp;lt;tex&amp;gt; L_1, L_2 &amp;lt;/tex&amp;gt; –- разрешимы, тогда следующие языки разрешимы:&lt;br /&gt;
&lt;br /&gt;
* Объединение &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \cup L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Пересечение &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \cap L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Дополнение &amp;lt;tex&amp;gt;L_1\ (\overline{L_1})&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Разность &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \backslash L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Декартово произведение &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \times L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Замыкание Клини &amp;lt;tex&amp;gt;L_1\ (L_1^*)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Конкатенация &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_2&amp;lt;/tex&amp;gt; — разрешающие программы для языков  &lt;br /&gt;
&amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt; соответственно. Для доказательства достаточно написать разрешающую программу (разрешитель) для каждого случая. &lt;br /&gt;
&lt;br /&gt;
* Разрешающая программа для языка &amp;lt;tex&amp;gt; L_1 \cup L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \lor (p_2(x) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \cap L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \land (p_2(x) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; \overline{L_1} :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 0)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \backslash L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \land (p_2(x) == 0)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \times L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(\langle x, y \rangle)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \land (p_2(y) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt;L_1^* :&amp;lt;/tex&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''forall''' &amp;lt;tex&amp;gt;x_i :&amp;lt;/tex&amp;gt; разбиение &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;     &lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_1) == 1) \land (p_1(x_2) == 1) \land \ ... \ \land (p_1(x_n) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
             '''return''' 1&lt;br /&gt;
     '''return''' 0  &lt;br /&gt;
&lt;br /&gt;
Разрешитель будет перебирать все возможные разбиения данного ему слова на подслова, и для каждого проверять принадлежность &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;. Если хотя бы в одном разбиении все подслова будут принадлежать &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;, то все слово принадлежит &amp;lt;tex&amp;gt; L_1^* &amp;lt;/tex&amp;gt;, иначе — не принадлежит. &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 L_2 : &amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''forall''' &amp;lt;tex&amp;gt;x_1, x_2 :&amp;lt;/tex&amp;gt; разбиение &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;     &lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_1) == 1 \land p_2(x_2) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
             '''return''' 1&lt;br /&gt;
     '''return''' 0  &lt;br /&gt;
&lt;br /&gt;
Разрешитель будет перебирать все возможные разбиения на два слова и проверять принадлежность первого слова &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; и второго слова &amp;lt;tex&amp;gt; L_2 &amp;lt;/tex&amp;gt;. Если хотя бы для одного разбиения оба разрешателя вернут 1, то слово принадлежит &amp;lt;tex&amp;gt; L_1 L_2 &amp;lt;/tex&amp;gt;, иначе — не принадлежит.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
 Языки &amp;lt;tex&amp;gt; L_1, L_2 &amp;lt;/tex&amp;gt; –- перечислимы, тогда следующие языки перечислимы:&lt;br /&gt;
&lt;br /&gt;
* Объединение &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \cup L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Пересечение &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \cap L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Декартово произведение &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \times L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Замыкание Клини &amp;lt;tex&amp;gt;L_1\ (L_1^*)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Конкатенация &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_2&amp;lt;/tex&amp;gt; — полуразрешающие программы для языков &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt; соответственно. Для доказательства достаточно написать полуразрешающую или перечисляющую программу для каждого случая. Для некоторых языков предоставим оба варианта. Заметим, что &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_2&amp;lt;/tex&amp;gt; могут зависнуть при использовании в полуразрешающей программе для соответствующего языка, но это допустимо.&lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \cup L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
полуразрешающая программа:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''if''' &amp;lt;tex&amp;gt; (p_1(x) == 1) \lor (p_2(x) == 1) &amp;lt;/tex&amp;gt;      &lt;br /&gt;
         '''return 1''' &lt;br /&gt;
&lt;br /&gt;
Перечислитель же для этого языка будет по очереди на один шаг запускать перечислители для &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt; и выдавать по очереди слова из &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt; соответственно.&lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \cap L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
полуразрешающая программа:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''if''' &amp;lt;tex&amp;gt; (p_1(x) == 1) \land (p_2(x) == 1) &amp;lt;/tex&amp;gt;      &lt;br /&gt;
         '''return 1''' &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \times L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
полуразрешающая программа:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(\langle x, y \rangle)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''if''' &amp;lt;tex&amp;gt; (p_1(x) == 1) \land (p_2(y) == 1) &amp;lt;/tex&amp;gt;      &lt;br /&gt;
         '''return 1''' &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1^* :&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
полуразрешающая программа (по аналогии с &amp;lt;tex&amp;gt;L_1^*&amp;lt;/tex&amp;gt; для разрешимого &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt;):&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''forall''' &amp;lt;tex&amp;gt;x_i :&amp;lt;/tex&amp;gt; разбиение &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;     &lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_1) == 1) \land (p_1(x_2) == 1) \land \ ... \ \land (p_1(x_n) == 1)&amp;lt;/tex&amp;gt;&lt;br /&gt;
             '''return''' 1&lt;br /&gt;
&lt;br /&gt;
Перечислитель же строится следующим образом: запускаем перечислитель для &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; в цикле по тайм-лимиту и запоминаем выданные им слова. При выдаче каждого нового слова перебираем все возможные перестановки уже выданных слов и выдаем их. &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 L_2 : &amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
полуразрешающая программа:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''forall''' &amp;lt;tex&amp;gt;x_1, x_2 :&amp;lt;/tex&amp;gt; разбиение &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;     &lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_1) == 1 \land p_2(x_2) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
             '''return''' 1&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Перечислитель же для &amp;lt;tex&amp;gt; L_1 L_2 &amp;lt;/tex&amp;gt; строим следующим образом: запускаем одновременно перечислители для &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;  и &amp;lt;tex&amp;gt; L_2 &amp;lt;/tex&amp;gt;, запоминая все выданные слова. При выдаче новых слов перебираем все возможные пары из запомненных слов и выдаем их конкатенацию.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
 Языки &amp;lt;tex&amp;gt; L_1, L_2 &amp;lt;/tex&amp;gt; –- перечислимы, тогда следующие языки могут быть не перечислимы:&lt;br /&gt;
&lt;br /&gt;
* Дополнение &amp;lt;tex&amp;gt;L_1\ (\overline{L_1})&amp;lt;/tex&amp;gt;&lt;br /&gt;
* Разность &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2\ (L_1 \backslash L_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
&lt;br /&gt;
Рассмотрим язык &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt;. Предположим, что он перечислим. Тогда имея какое-либо слово, мы можем одновременно запустить перечислители для &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt;. В какой-то момент времени слово появится либо в выводе перечислителя для &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;, либо в выводе перечислителя для &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt;. Тогда получится что &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; разрешим, так как про любое слово мы можем узнать принадлежит оно &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; или не принадлежит. Но мы знаем, что существуют перечислимые, но не разрешимые языки, следовательно, язык &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt; может быть не перечислим. &lt;br /&gt;
&lt;br /&gt;
Теперь рассмотрим &amp;lt;tex&amp;gt; L_1 \backslash L_2 &amp;lt;/tex&amp;gt;. В качестве &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; возьмем язык, состоящий из всех слов. Тогда получится, что язык &amp;lt;tex&amp;gt; L_1 \backslash L_2 &amp;lt;/tex&amp;gt; это &amp;lt;tex&amp;gt; \overline{L_2} &amp;lt;/tex&amp;gt;. Про язык &amp;lt;tex&amp;gt; \overline{L_2} &amp;lt;/tex&amp;gt; мы знаем, что он перечислим не всегда, следовательно и язык &amp;lt;tex&amp;gt; L_1 \backslash L_2 &amp;lt;/tex&amp;gt; также не всегда перечислим.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
* ''Верещагин Н. К., Шень А.'' '''Лекции по математической логике и теории алгоритов. Часть 3. Вычислимые функции''' — М.: МЦНМО, 1999&lt;/div&gt;</summary>
		<author><name>Roman Livarsky</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:%D0%A5%D0%B0%D1%80%D0%B0%D0%BA%D1%82%D0%B5%D1%80%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B0_%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D1%85_%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_%D0%B2%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=14903</id>
		<title>Обсуждение:Характеристика перечислимых множеств через вычислимые функции</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:%D0%A5%D0%B0%D1%80%D0%B0%D0%BA%D1%82%D0%B5%D1%80%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B0_%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D1%85_%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_%D0%B2%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=14903"/>
				<updated>2011-12-19T02:53:48Z</updated>
		
		<summary type="html">&lt;p&gt;Roman Livarsky: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Претензия по сути: отсутствует доказательство 3 &amp;lt;tex&amp;gt;\Rightarrow&amp;lt;/tex&amp;gt; 2.&lt;br /&gt;
&lt;br /&gt;
По оформлению претензий много. &lt;br /&gt;
В определениях: во-первых, после двоеточия пишется строчная буква, даже на следующей строке. Во-вторых, перед причастным оборотом ставится запятая (первое определение). В-третьих, слова «вычислимая функция» лучше сделать ссылкой на соответствующую статью. &lt;br /&gt;
&lt;br /&gt;
В доказательстве теоремы: во-первых, в псевдокоде не стоит после if писать then, тем более на следующей строке. &lt;br /&gt;
Во-вторых, в пункте «2 &amp;lt;tex&amp;gt;\Rightarrow&amp;lt;/tex&amp;gt; 1» есть второе предложение, нуждающееся в переформулировке. &amp;lt;tex&amp;gt;p(x)|_{TL}&amp;lt;/tex&amp;gt; — это не «запустить», это некоторый объект, как видно из следующего предложения. Короче, с этим надо что-то делать. И да, зачем вокруг тире по 3 пробела?&lt;br /&gt;
&lt;br /&gt;
И список литературы выглядит криво — почему вместо тире два дефиса? [[Участник:Berezhkovskaya|Алёна]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пожалуйста, если что-то исправляешь — отмечай здесь.&lt;br /&gt;
Знаешь, стало не сильно лучше. Да, после двоеточия идет строчная буква, но вот после точки — прописная. Так что определение №4 верни как было.&lt;br /&gt;
Теперь комментарии к &amp;lt;tex&amp;gt;p(x)|_{TL}&amp;lt;/tex&amp;gt; вообще исчезли. Верни обратно пояснение, просто напиши его понятным языком.&lt;br /&gt;
По прежнему нет доказательства 3 &amp;lt;tex&amp;gt;\Rightarrow&amp;lt;/tex&amp;gt; 2. [[Участник:Berezhkovskaya|Алёна]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Доказательство 3 &amp;lt;tex&amp;gt;\Rightarrow&amp;lt;/tex&amp;gt; 2 : 3 &amp;lt;tex&amp;gt;\Rightarrow&amp;lt;/tex&amp;gt; 1 &amp;lt;tex&amp;gt;\Rightarrow&amp;lt;/tex&amp;gt; 4 &amp;lt;tex&amp;gt;\Rightarrow&amp;lt;/tex&amp;gt; 2. Разве нет? Остальное исправил.&lt;br /&gt;
[[Участник:Roman Livarsky|Рома]]&lt;/div&gt;</summary>
		<author><name>Roman Livarsky</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A5%D0%B0%D1%80%D0%B0%D0%BA%D1%82%D0%B5%D1%80%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B0_%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D1%85_%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_%D0%B2%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=14902</id>
		<title>Характеристика перечислимых множеств через вычислимые функции</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A5%D0%B0%D1%80%D0%B0%D0%BA%D1%82%D0%B5%D1%80%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B0_%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D1%85_%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_%D0%B2%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=14902"/>
				<updated>2011-12-19T02:50:19Z</updated>
		
		<summary type="html">&lt;p&gt;Roman Livarsky: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition=Множество &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; называется перечислимым, если выполняется хотя бы одно условие из приведенных ниже:&lt;br /&gt;
# существует программа, перечисляющая все элементы &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; в произвольном порядке.&lt;br /&gt;
# &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; является областью определения [[Вычислимые функции|вычиcлимой функции]] &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; является областью значений [[Вычислимые функции|вычиcлимой функции]] &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Функция &amp;lt;tex&amp;gt;f_X(x) = \begin{cases}&lt;br /&gt;
  1, &amp;amp; x \in X \\&lt;br /&gt;
  \bot, &amp;amp; x \notin X &lt;br /&gt;
\end{cases}&amp;lt;/tex&amp;gt; — вычислима.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Определения ''1'', ''2'', ''3'', ''4'' эквивалентны.&lt;br /&gt;
|proof=&lt;br /&gt;
*1 &amp;lt;tex&amp;gt;\Rightarrow&amp;lt;/tex&amp;gt; 4&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; — программа, перечисляющая &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Приведем программу &amp;lt;tex&amp;gt;q&amp;lt;/tex&amp;gt;, вычисляющую функцию &amp;lt;tex&amp;gt;f_X(x):&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;q(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''for''' &amp;lt;tex&amp;gt;k = 1 \ .. \ \infty&amp;lt;/tex&amp;gt;&lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt; p(k) == x &amp;lt;/tex&amp;gt;&lt;br /&gt;
             '''return''' 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*2 &amp;lt;tex&amp;gt;\Rightarrow&amp;lt;/tex&amp;gt; 1, 3 &amp;lt;tex&amp;gt;\Rightarrow&amp;lt;/tex&amp;gt; 1&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; — область определения [[Вычислимые функции|вычислимой функции]] &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt;, вычисляемой программой &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Введем обозначение: &amp;lt;tex&amp;gt;p(x)|_{TL}&amp;lt;/tex&amp;gt; &amp;amp;nbsp; — &amp;amp;nbsp; остановить &amp;amp;nbsp; &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt; &amp;amp;nbsp; через &amp;amp;nbsp; &amp;lt;tex&amp;gt;TL&amp;lt;/tex&amp;gt; &amp;amp;nbsp; секунд. Если &amp;amp;nbsp; &amp;lt;tex&amp;gt;p(x)|_{TL}&amp;lt;/tex&amp;gt; &amp;amp;nbsp; за &amp;amp;nbsp; &amp;lt;tex&amp;gt;TL&amp;lt;/tex&amp;gt; &amp;amp;nbsp; секунд так и не вернула значение функции &amp;lt;tex&amp;gt;f(x)&amp;lt;/tex&amp;gt;, то возвращаем &amp;lt;tex&amp;gt;\bot&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тогда &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; перечисляется такой программой:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;q()&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''for''' &amp;lt;tex&amp;gt; TL = 1 \ .. \ \infty &amp;lt;/tex&amp;gt; &lt;br /&gt;
         '''for''' &amp;lt;tex&amp;gt; k = 1 \ ..\ TL&amp;lt;/tex&amp;gt;&lt;br /&gt;
             '''if''' &amp;lt;tex&amp;gt;p(k)|_{TL} \neq \bot &amp;lt;/tex&amp;gt;&lt;br /&gt;
                 '''print'''&amp;lt;tex&amp;gt;(k)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если print&amp;lt;tex&amp;gt;(k)&amp;lt;/tex&amp;gt; заменить на print(&amp;lt;tex&amp;gt;p(k)|_{TL}&amp;lt;/tex&amp;gt;), то &amp;lt;tex&amp;gt;q&amp;lt;/tex&amp;gt; станет перечислять область значений &amp;lt;tex&amp;gt;f(x)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*4 &amp;lt;tex&amp;gt;\Rightarrow&amp;lt;/tex&amp;gt; 2, 4 &amp;lt;tex&amp;gt;\Rightarrow&amp;lt;/tex&amp;gt; 3&lt;br /&gt;
&lt;br /&gt;
Пусть дана &amp;lt;tex&amp;gt;f_X(x)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Введем новую функцию &amp;lt;tex&amp;gt;g(x) = x&amp;lt;/tex&amp;gt;, если &amp;lt;tex&amp;gt;f_X(x) \neq \bot&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Очевидно, она вычислима, и ее область определения и область значений совпадают с &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
* ''Верещагин Н. К., Шень А.'' '''Лекции по математической логике и теории алгоритов. Часть 3. Вычислимые функции''' — М.: МЦНМО, 1999&lt;/div&gt;</summary>
		<author><name>Roman Livarsky</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%97%D0%B0%D0%BC%D0%BA%D0%BD%D1%83%D1%82%D0%BE%D1%81%D1%82%D1%8C_%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B8%D0%BC%D1%8B%D1%85_%D0%B8_%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D1%85_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%BE%D1%82%D0%BD%D0%BE%D1%81%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE_%D1%82%D0%B5%D0%BE%D1%80%D0%B5%D1%82%D0%B8%D0%BA%D0%BE-%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B8_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B9&amp;diff=14899</id>
		<title>Замкнутость разрешимых и перечислимых языков относительно теоретико-множественных и алгебраических операций</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%97%D0%B0%D0%BC%D0%BA%D0%BD%D1%83%D1%82%D0%BE%D1%81%D1%82%D1%8C_%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B8%D0%BC%D1%8B%D1%85_%D0%B8_%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D1%85_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%BE%D1%82%D0%BD%D0%BE%D1%81%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE_%D1%82%D0%B5%D0%BE%D1%80%D0%B5%D1%82%D0%B8%D0%BA%D0%BE-%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B8_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B9&amp;diff=14899"/>
				<updated>2011-12-19T02:35:08Z</updated>
		
		<summary type="html">&lt;p&gt;Roman Livarsky: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
 Языки &amp;lt;tex&amp;gt; L_1, L_2 &amp;lt;/tex&amp;gt; –- разрешимы, тогда языки&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\left. \begin{array}{lll} L_1 \cup L_2 \\ L_1 \cap L_2 \\ \overline{L_1} \\ L_1 \backslash L_2 \\ L_1 \times L_2 \\L_1^* \\  L_1 L_2 \end{array} \right\} &amp;lt;/tex&amp;gt; тоже разрешимы.&lt;br /&gt;
|proof=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_2&amp;lt;/tex&amp;gt; — разрешающие программы для языков  &lt;br /&gt;
&amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt; соответственно. Для доказательства достаточно написать разрешающую программу (разрешитель) для каждого случая. &lt;br /&gt;
&lt;br /&gt;
* Разрешающая программа для языка &amp;lt;tex&amp;gt; L_1 \cup L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \lor (p_2(x) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \cap L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \land (p_2(x) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; \overline{L_1} :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 0)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \backslash L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \land (p_2(x) == 0)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \times L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(\langle x, y \rangle)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \land (p_2(y) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt;L_1^* :&amp;lt;/tex&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''forall''' &amp;lt;tex&amp;gt;x_i :&amp;lt;/tex&amp;gt; разбиение &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;     &lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_1) == 1) \land (p_1(x_2) == 1) \land \ ... \ \land (p_1(x_n) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
             '''return''' 1&lt;br /&gt;
     '''return''' 0  &lt;br /&gt;
&lt;br /&gt;
Разрешитель будет перебирать все возможные разбиения данного ему слова на подслова, и для каждого проверять принадлежность &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;. Если хотя бы в одном разбиении все подслова будут принадлежать &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;, то все слово принадлежит &amp;lt;tex&amp;gt; L_1^* &amp;lt;/tex&amp;gt;, иначе — не принадлежит. &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 L_2 : &amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''forall''' &amp;lt;tex&amp;gt;x_1, x_2 :&amp;lt;/tex&amp;gt; разбиение &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;     &lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_1) == 1 \land p_2(x_2) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
             '''return''' 1&lt;br /&gt;
     '''return''' 0  &lt;br /&gt;
&lt;br /&gt;
Разрешитель будет перебирать все возможные разбиения на два слова и проверять принадлежность первого слова &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; и второго слова &amp;lt;tex&amp;gt; L_2 &amp;lt;/tex&amp;gt;. Если хотя бы для одного разбиения оба разрешателя вернут 1, то слово принадлежит &amp;lt;tex&amp;gt; L_1 L_2 &amp;lt;/tex&amp;gt;, иначе — не принадлежит.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
 Языки &amp;lt;tex&amp;gt; L_1, L_2 &amp;lt;/tex&amp;gt; –- перечислимы, тогда языки&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\left. \begin{array}{lll} L_1 \cup L_2 \\ L_1 \cap L_2 \\ L_1 \times L_2\\ L_1^* \\  L_1 L_2 \end{array} \right\} &amp;lt;/tex&amp;gt; тоже перечислимы.&lt;br /&gt;
|proof=&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_2&amp;lt;/tex&amp;gt; — полуразрешающие программы для языков &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt; соответственно. Для доказательства достаточно написать полуразрешающую или перечисляющую программу для каждого случая. Для некоторых языков предоставим оба варианта. Заметим, что &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_2&amp;lt;/tex&amp;gt; могут зависнуть при использовании в полуразрешающей программе для соответствующего языка, но это допустимо.&lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \cup L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
полуразрешающая программа:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''if''' &amp;lt;tex&amp;gt; (p_1(x) == 1) \lor (p_2(x) == 1) &amp;lt;/tex&amp;gt;      &lt;br /&gt;
         '''return 1''' &lt;br /&gt;
&lt;br /&gt;
Перечислитель же для этого языка будет по очереди на один шаг запускать перечислители для &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt; и выдавать по очереди слова из &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt; соответственно.&lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \cap L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
полуразрешающая программа:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''if''' &amp;lt;tex&amp;gt; (p_1(x) == 1) \land (p_2(x) == 1) &amp;lt;/tex&amp;gt;      &lt;br /&gt;
         '''return 1''' &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \times L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
полуразрешающая программа:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(\langle x, y \rangle)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''if''' &amp;lt;tex&amp;gt; (p_1(x) == 1) \land (p_2(y) == 1) &amp;lt;/tex&amp;gt;      &lt;br /&gt;
         '''return 1''' &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1^* :&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
полуразрешающая программа (по аналогии с &amp;lt;tex&amp;gt;L_1^*&amp;lt;/tex&amp;gt; для разрешимого &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt;):&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''forall''' &amp;lt;tex&amp;gt;x_i :&amp;lt;/tex&amp;gt; разбиение &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;     &lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_1) == 1) \land (p_1(x_2) == 1) \land \ ... \ \land (p_1(x_n) == 1)&amp;lt;/tex&amp;gt;&lt;br /&gt;
             '''return''' 1&lt;br /&gt;
&lt;br /&gt;
Перечислитель же строится следующим образом: запускаем перечислитель для &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; в цикле по тайм-лимиту и запоминаем выданные им слова. При выдаче каждого нового слова перебираем все возможные перестановки уже выданных слов и выдаем их. &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 L_2 : &amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
полуразрешающая программа:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''forall''' &amp;lt;tex&amp;gt;x_1, x_2 :&amp;lt;/tex&amp;gt; разбиение &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;     &lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_1) == 1 \land p_2(x_2) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
             '''return''' 1&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Перечислитель же для &amp;lt;tex&amp;gt; L_1 L_2 &amp;lt;/tex&amp;gt; строим следующим образом: запускаем одновременно перечислители для &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;  и &amp;lt;tex&amp;gt; L_2 &amp;lt;/tex&amp;gt;, запоминая все выданные слова. При выдаче новых слов перебираем все возможные пары из запомненных слов и выдаем их конкатенацию.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
 Языки &amp;lt;tex&amp;gt; L_1, L_2 &amp;lt;/tex&amp;gt; –- перечислимы, тогда языки&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\left. \begin{array}{lll} \overline{L_1} \\ L_1 \backslash L_2 \end{array} \right\} &amp;lt;/tex&amp;gt; могут быть не перечислимы.&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
&lt;br /&gt;
Рассмотрим язык &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt;. Предположим, что он перечислим. Тогда имея какое-либо слово, мы можем одновременно запустить перечислители для &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt;. В какой-то момент времени слово появится либо в выводе перечислителя для &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;, либо в выводе перечислителя для &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt;. Тогда получится что &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; разрешим, так как про любое слово мы можем узнать принадлежит оно &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; или не принадлежит. Но мы знаем, что существуют перечислимые, но не разрешимые языки, следовательно, язык &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt; может быть не перечислим. &lt;br /&gt;
&lt;br /&gt;
Теперь рассмотрим &amp;lt;tex&amp;gt; L_1 \backslash L_2 &amp;lt;/tex&amp;gt;. В качестве &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; возьмем язык, состоящий из всех слов. Тогда получится, что язык &amp;lt;tex&amp;gt; L_1 \backslash L_2 &amp;lt;/tex&amp;gt; это &amp;lt;tex&amp;gt; \overline{L_2} &amp;lt;/tex&amp;gt;. Про язык &amp;lt;tex&amp;gt; \overline{L_2} &amp;lt;/tex&amp;gt; мы знаем, что он перечислим не всегда, следовательно и язык &amp;lt;tex&amp;gt; L_1 \backslash L_2 &amp;lt;/tex&amp;gt; также не всегда перечислим.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
* ''Верещагин Н. К., Шень А.'' '''Лекции по математической логике и теории алгоритов. Часть 3. Вычислимые функции''' — М.: МЦНМО, 1999&lt;/div&gt;</summary>
		<author><name>Roman Livarsky</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%97%D0%B0%D0%BC%D0%BA%D0%BD%D1%83%D1%82%D0%BE%D1%81%D1%82%D1%8C_%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B8%D0%BC%D1%8B%D1%85_%D0%B8_%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D1%85_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%BE%D1%82%D0%BD%D0%BE%D1%81%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE_%D1%82%D0%B5%D0%BE%D1%80%D0%B5%D1%82%D0%B8%D0%BA%D0%BE-%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B8_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B9&amp;diff=14897</id>
		<title>Замкнутость разрешимых и перечислимых языков относительно теоретико-множественных и алгебраических операций</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%97%D0%B0%D0%BC%D0%BA%D0%BD%D1%83%D1%82%D0%BE%D1%81%D1%82%D1%8C_%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B8%D0%BC%D1%8B%D1%85_%D0%B8_%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D1%85_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%BE%D1%82%D0%BD%D0%BE%D1%81%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE_%D1%82%D0%B5%D0%BE%D1%80%D0%B5%D1%82%D0%B8%D0%BA%D0%BE-%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B8_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B9&amp;diff=14897"/>
				<updated>2011-12-19T02:32:19Z</updated>
		
		<summary type="html">&lt;p&gt;Roman Livarsky: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
 Языки &amp;lt;tex&amp;gt; L_1, L_2 &amp;lt;/tex&amp;gt; –- разрешимы, тогда языки&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\left. \begin{array}{lll} L_1 \cup L_2 \\ L_1 \cap L_2 \\ \overline{L_1} \\ L_1 \backslash L_2 \\ L_1 \times L_2 \\L_1^* \\  L_1 L_2 \end{array} \right\} &amp;lt;/tex&amp;gt; тоже разрешимы.&lt;br /&gt;
|proof=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_2&amp;lt;/tex&amp;gt; — разрешающие программы для языков  &lt;br /&gt;
&amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt; соответственно. Для доказательства достаточно написать разрешающую программу (разрешитель) для каждого случая. &lt;br /&gt;
&lt;br /&gt;
* Разрешающая программа для языка &amp;lt;tex&amp;gt; L_1 \cup L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \lor (p_2(x) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \cap L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \land (p_2(x) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; \overline{L_1} :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 0)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \backslash L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \land (p_2(x) == 0)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \times L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(\langle x, y \rangle)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \land (p_2(y) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt;L_1^* :&amp;lt;/tex&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''forall''' &amp;lt;tex&amp;gt;x_i :&amp;lt;/tex&amp;gt; разбиение &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;     &lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_1) == 1) \land (p_1(x_2) == 1) \land \ ... \ \land (p_1(x_n) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
         '''then return''' 1&lt;br /&gt;
     '''return''' 0  &lt;br /&gt;
&lt;br /&gt;
Разрешитель будет перебирать все возможные разбиения данного ему слова на подслова, и для каждого проверять принадлежность &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;. Если хотя бы в одном разбиении все подслова будут принадлежать &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;, то все слово принадлежит &amp;lt;tex&amp;gt; L_1^* &amp;lt;/tex&amp;gt;, иначе — не принадлежит. &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 L_2 : &amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''forall''' &amp;lt;tex&amp;gt;x_1, x_2 :&amp;lt;/tex&amp;gt; разбиение &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;     &lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_1) == 1 \land p_2(x_2) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
         '''then return''' 1&lt;br /&gt;
     '''return''' 0  &lt;br /&gt;
&lt;br /&gt;
Разрешитель будет перебирать все возможные разбиения на два слова и проверять принадлежность первого слова &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; и второго слова &amp;lt;tex&amp;gt; L_2 &amp;lt;/tex&amp;gt;. Если хотя бы для одного разбиения оба разрешателя вернут 1, то слово принадлежит &amp;lt;tex&amp;gt; L_1 L_2 &amp;lt;/tex&amp;gt;, иначе — не принадлежит.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
 Языки &amp;lt;tex&amp;gt; L_1, L_2 &amp;lt;/tex&amp;gt; –- перечислимы, тогда языки&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\left. \begin{array}{lll} L_1 \cup L_2 \\ L_1 \cap L_2 \\ L_1 \times L_2\\ L_1^* \\  L_1 L_2 \end{array} \right\} &amp;lt;/tex&amp;gt; тоже перечислимы.&lt;br /&gt;
|proof=&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_2&amp;lt;/tex&amp;gt; — полуразрешающие программы для языков &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt; соответственно. Для доказательства достаточно написать полуразрешающую или перечисляющую программу для каждого случая. Для некоторых языков предоставим оба варианта. Заметим, что &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_2&amp;lt;/tex&amp;gt; могут зависнуть при использовании в полуразрешающей программе для соответствующего языка, но это допустимо.&lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \cup L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
полуразрешающая программа:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''if''' &amp;lt;tex&amp;gt; (p_1(x) == 1) \lor (p_2(x) == 1) &amp;lt;/tex&amp;gt;      &lt;br /&gt;
     '''then return 1''' &lt;br /&gt;
&lt;br /&gt;
Перечислитель же для этого языка будет по очереди на один шаг запускать перечислители для &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt; и выдавать по очереди слова из &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt; соответственно.&lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \cap L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
полуразрешающая программа:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''if''' &amp;lt;tex&amp;gt; (p_1(x) == 1) \land (p_2(x) == 1) &amp;lt;/tex&amp;gt;      &lt;br /&gt;
     '''then return 1''' &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \times L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
полуразрешающая программа:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(\langle x, y \rangle)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''if''' &amp;lt;tex&amp;gt; (p_1(x) == 1) \land (p_2(y) == 1) &amp;lt;/tex&amp;gt;      &lt;br /&gt;
     '''then return 1''' &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1^* :&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
полуразрешающая программа (по аналогии с &amp;lt;tex&amp;gt;L_1^*&amp;lt;/tex&amp;gt; для разрешимого &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt;):&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''forall''' &amp;lt;tex&amp;gt;x_i :&amp;lt;/tex&amp;gt; разбиение &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;     &lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_1) == 1) \land (p_1(x_2) == 1) \land \ ... \ \land (p_1(x_n) == 1)&amp;lt;/tex&amp;gt;&lt;br /&gt;
         '''then return''' 1&lt;br /&gt;
&lt;br /&gt;
Перечислитель строится следующим образом: запускаем перечислитель для &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; в цикле по тайм-лимиту и запоминаем выданные им слова. При выдаче каждого нового слова перебираем все возможные перестановки уже выданных слов и выдаем их. &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 L_2 : &amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
полуразрешающая программа:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''forall''' &amp;lt;tex&amp;gt;x_1, x_2 :&amp;lt;/tex&amp;gt; разбиение &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;     &lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_1) == 1 \land p_2(x_2) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
         '''then return''' 1&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Перечислитель для &amp;lt;tex&amp;gt; L_1 L_2 &amp;lt;/tex&amp;gt; строим следующим образом: запускаем одновременно перечислители для &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;  и &amp;lt;tex&amp;gt; L_2 &amp;lt;/tex&amp;gt;, запоминая все выданные слова. При выдаче новых слов перебираем все возможные пары из запомненных слов и выдаем их конкатенацию.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
 Языки &amp;lt;tex&amp;gt; L_1, L_2 &amp;lt;/tex&amp;gt; –- перечислимы, тогда языки&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\left. \begin{array}{lll} \overline{L_1} \\ L_1 \backslash L_2 \end{array} \right\} &amp;lt;/tex&amp;gt; могут быть не перечислимы.&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
&lt;br /&gt;
Рассмотрим язык &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt;. Предположим, что он перечислим. Тогда имея какое-либо слово, мы можем одновременно запустить перечислители для &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt;. В какой-то момент времени слово появится либо в выводе перечислителя для &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;, либо в выводе перечислителя для &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt;. Тогда получится что &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; разрешим, так как про любое слово мы можем узнать принадлежит оно &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; или не принадлежит. Но мы знаем, что существуют перечислимые, но не разрешимые языки, следовательно, язык &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt; может быть не перечислим. &lt;br /&gt;
&lt;br /&gt;
Теперь рассмотрим &amp;lt;tex&amp;gt; L_1 \backslash L_2 &amp;lt;/tex&amp;gt;. В качестве &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; возьмем язык, состоящий из всех слов. Тогда получится, что язык &amp;lt;tex&amp;gt; L_1 \backslash L_2 &amp;lt;/tex&amp;gt; это &amp;lt;tex&amp;gt; \overline{L_2} &amp;lt;/tex&amp;gt;. Про язык &amp;lt;tex&amp;gt; \overline{L_2} &amp;lt;/tex&amp;gt; мы знаем, что он перечислим не всегда, следовательно и язык &amp;lt;tex&amp;gt; L_1 \backslash L_2 &amp;lt;/tex&amp;gt; также не всегда перечислим.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
* ''Верещагин Н. К., Шень А.'' '''Лекции по математической логике и теории алгоритов. Часть 3. Вычислимые функции''' — М.: МЦНМО, 1999&lt;/div&gt;</summary>
		<author><name>Roman Livarsky</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%97%D0%B0%D0%BC%D0%BA%D0%BD%D1%83%D1%82%D0%BE%D1%81%D1%82%D1%8C_%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B8%D0%BC%D1%8B%D1%85_%D0%B8_%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D1%85_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%BE%D1%82%D0%BD%D0%BE%D1%81%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE_%D1%82%D0%B5%D0%BE%D1%80%D0%B5%D1%82%D0%B8%D0%BA%D0%BE-%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B8_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B9&amp;diff=14896</id>
		<title>Замкнутость разрешимых и перечислимых языков относительно теоретико-множественных и алгебраических операций</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%97%D0%B0%D0%BC%D0%BA%D0%BD%D1%83%D1%82%D0%BE%D1%81%D1%82%D1%8C_%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B8%D0%BC%D1%8B%D1%85_%D0%B8_%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D1%85_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%BE%D1%82%D0%BD%D0%BE%D1%81%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE_%D1%82%D0%B5%D0%BE%D1%80%D0%B5%D1%82%D0%B8%D0%BA%D0%BE-%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B8_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B9&amp;diff=14896"/>
				<updated>2011-12-19T02:31:52Z</updated>
		
		<summary type="html">&lt;p&gt;Roman Livarsky: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
 Языки &amp;lt;tex&amp;gt; L_1, L_2 &amp;lt;/tex&amp;gt; –- разрешимы, тогда языки&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\left. \begin{array}{lll} L_1 \cup L_2 \\ L_1 \cap L_2 \\ \overline{L_1} \\ L_1 \backslash L_2 \\ L_1 \times L_2 \\L_1^* \\  L_1 L_2 \end{array} \right\} &amp;lt;/tex&amp;gt; тоже разрешимы.&lt;br /&gt;
|proof=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_2&amp;lt;/tex&amp;gt; — разрешающие программы для языков  &lt;br /&gt;
&amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt; соответственно. Для доказательства достаточно написать разрешающую программу (разрешитель) для каждого случая. &lt;br /&gt;
&lt;br /&gt;
* Разрешающая программа для языка &amp;lt;tex&amp;gt; L_1 \cup L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \lor (p_2(x) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \cap L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \land (p_2(x) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; \overline{L_1} :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 0)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \backslash L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \land (p_2(x) == 0)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \times L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(\langle x, y \rangle)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \land (p_2(y) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt;L_1^* :&amp;lt;/tex&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''forall''' &amp;lt;tex&amp;gt;x_i :&amp;lt;/tex&amp;gt; разбиение &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;     &lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_1) == 1) \land (p_1(x_2) == 1) \land \ ... \ \land (p_1(x_n) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
         '''then return''' 1&lt;br /&gt;
     '''return''' 0  &lt;br /&gt;
&lt;br /&gt;
Разрешитель будет перебирать все возможные разбиения данного ему слова на подслова, и для каждого проверять принадлежность &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;. Если хотя бы в одном разбиении все подслова будут принадлежать &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;, то все слово принадлежит &amp;lt;tex&amp;gt; L_1^* &amp;lt;/tex&amp;gt;, иначе — не принадлежит. &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 L_2 : &amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''forall''' &amp;lt;tex&amp;gt;x_1, x_2 :&amp;lt;/tex&amp;gt; разбиение &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;     &lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_1) == 1 \land p_2(x_2) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
         '''then return''' 1&lt;br /&gt;
     '''return''' 0  &lt;br /&gt;
&lt;br /&gt;
Разрешитель будет перебирать все возможные разбиения на два слова и проверять принадлежность первого слова &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; и второго слова &amp;lt;tex&amp;gt; L_2 &amp;lt;/tex&amp;gt;. Если хотя бы для одного разбиения оба разрешателя вернут 1, то слово принадлежит &amp;lt;tex&amp;gt; L_1 L_2 &amp;lt;/tex&amp;gt;, иначе — не принадлежит.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
 Языки &amp;lt;tex&amp;gt; L_1, L_2 &amp;lt;/tex&amp;gt; –- перечислимы, тогда языки&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\left. \begin{array}{lll} L_1 \cup L_2 \\ L_1 \cap L_2 \\ L_1 \times L_2\\ L_1^* \\  L_1 L_2 \end{array} \right\} &amp;lt;/tex&amp;gt; тоже перечислимы.&lt;br /&gt;
|proof=&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_2&amp;lt;/tex&amp;gt; — полуразрешающие программы для языков &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt; соответственно. Для доказательства достаточно написать полуразрешающую или перечисляющую программу для каждого случая. Для некоторых языков предоставим оба варианта. Заметим, что &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_2&amp;lt;/tex&amp;gt; могут зависнуть при использовании в полуразрешающей программе для соответствующего языка, но это допустимо.&lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \cup L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
полуразрешающая программа:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''if''' &amp;lt;tex&amp;gt; (p_1(x) == 1) \lor (p_2(x) == 1) &amp;lt;/tex&amp;gt;      &lt;br /&gt;
     '''then return 1''' &lt;br /&gt;
&lt;br /&gt;
Перечислитель же для этого языка будет по очереди на один шаг запускать перечислители для &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt; и выдавать по очереди слова из &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt; соответственно.&lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \cap L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
полуразрешающая программа:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''if''' &amp;lt;tex&amp;gt; (p_1(x) == 1) \land (p_2(x) == 1) &amp;lt;/tex&amp;gt;      &lt;br /&gt;
     '''then return 1''' &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \times L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
полуразрешающая программа:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(\langle x, y \rangle)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''if''' &amp;lt;tex&amp;gt; (p_1(x) == 1) \land (p_2(y) == 1) &amp;lt;/tex&amp;gt;      &lt;br /&gt;
     '''then return 1''' &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1^* :&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
полуразрешающая программа (по аналогии с &amp;lt;tex&amp;gt;L_1^*&amp;lt;/tex&amp;gt; для разрешимого &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt;):&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''forall''' &amp;lt;tex&amp;gt;x_i :&amp;lt;/tex&amp;gt; разбиение &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;     &lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_1) == 1) \land (p_1(x_2) == 1) \land \ ... \ \land (p_1(x_n) == 1)&amp;lt;/tex&amp;gt;&lt;br /&gt;
         '''then return''' 1&lt;br /&gt;
&lt;br /&gt;
Перечислитель строится следующим образом: запускаем перечислитель для &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; в цикле по тайм-лимиту и запоминаем выданные им слова. При выдаче каждого нового слова перебираем все возможные перестановки уже выданных слов и выдаем их. &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 L_2 : &amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
полуразрешающая программа:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''forall''' &amp;lt;tex&amp;gt;x_1, x_2 :&amp;lt;/tex&amp;gt; разбиение &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;     &lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_1) == 1 \land p_2(x_2) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
         '''then return''' 1&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Перечислитель для &amp;lt;tex&amp;gt; L_1 L_2 &amp;lt;/tex&amp;gt; строим следующим образом: запускаем одновременно перечислители для &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;  и &amp;lt;tex&amp;gt; L_2 &amp;lt;/tex&amp;gt;, запоминая все выданные слова. При выдаче новых слов перебираем все возможные пары из запомненных слов и выдаем их конкатенацию.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
 Языки &amp;lt;tex&amp;gt; L_1, L_2 &amp;lt;/tex&amp;gt; –- перечислимы, тогда языки&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\left. \begin{array}{lll} \overline{L_1} \\ L_1 \backslash L_2 \end{array} \right\} &amp;lt;/tex&amp;gt; могут быть не перечислимы.&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
&lt;br /&gt;
Рассмотрим язык &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt;. Предположим, что он перечислим. Тогда имея какое-либо слово, мы можем одновременно запустить перечислители для &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt;. В какой-то момент времени слово появится либо в выводе перечислителя для &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;, либо в выводе перечислителя для &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt;. Тогда получится что &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; разрешим, так как про любое слово мы можем узнать принадлежит оно &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; или не принадлежит. Но мы знаем, что существуют перечислимые, но не разрешимые языки, следовательно, язык &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt; может быть не перечислим. &lt;br /&gt;
&lt;br /&gt;
Теперь рассмотрим &amp;lt;tex&amp;gt; L_1 \backslash L_2 &amp;lt;/tex&amp;gt;. В качестве &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; возьмем язык, состоящий из всех слов. Тогда получится, что язык &amp;lt;tex&amp;gt; L_1 \backslash L_2 &amp;lt;/tex&amp;gt; это &amp;lt;tex&amp;gt; \overline{L_2} &amp;lt;/tex&amp;gt;. Про язык &amp;lt;tex&amp;gt; \overline{L_2} &amp;lt;/tex&amp;gt; мы знаем, что он перечислим не всегда, следовательно и язык &amp;lt;tex&amp;gt; L_1 \backslash L_2 &amp;lt;/tex&amp;gt; также не всегда перечислим.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
* ''Верещагин Н. К., Шень А.'' '''Лекции по математической логике и теории алгоритов. Часть 3. Вычислимые функции''' -- М.: МЦНМО, 1999&lt;/div&gt;</summary>
		<author><name>Roman Livarsky</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%97%D0%B0%D0%BC%D0%BA%D0%BD%D1%83%D1%82%D0%BE%D1%81%D1%82%D1%8C_%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B8%D0%BC%D1%8B%D1%85_%D0%B8_%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D1%85_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%BE%D1%82%D0%BD%D0%BE%D1%81%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE_%D1%82%D0%B5%D0%BE%D1%80%D0%B5%D1%82%D0%B8%D0%BA%D0%BE-%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B8_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B9&amp;diff=14895</id>
		<title>Замкнутость разрешимых и перечислимых языков относительно теоретико-множественных и алгебраических операций</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%97%D0%B0%D0%BC%D0%BA%D0%BD%D1%83%D1%82%D0%BE%D1%81%D1%82%D1%8C_%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B8%D0%BC%D1%8B%D1%85_%D0%B8_%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D1%85_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%BE%D1%82%D0%BD%D0%BE%D1%81%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE_%D1%82%D0%B5%D0%BE%D1%80%D0%B5%D1%82%D0%B8%D0%BA%D0%BE-%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B8_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B9&amp;diff=14895"/>
				<updated>2011-12-19T02:31:21Z</updated>
		
		<summary type="html">&lt;p&gt;Roman Livarsky: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
 Языки &amp;lt;tex&amp;gt; L_1, L_2 &amp;lt;/tex&amp;gt; –- разрешимы, тогда языки&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\left. \begin{array}{lll} L_1 \cup L_2 \\ L_1 \cap L_2 \\ \overline{L_1} \\ L_1 \backslash L_2 \\ L_1 \times L_2 \\L_1^* \\  L_1 L_2 \end{array} \right\} &amp;lt;/tex&amp;gt; тоже разрешимы.&lt;br /&gt;
|proof=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_2&amp;lt;/tex&amp;gt; — разрешающие программы для языков  &lt;br /&gt;
&amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt; соответственно. Для доказательства достаточно написать разрешающую программу (разрешатель) для каждого случая. &lt;br /&gt;
&lt;br /&gt;
* Разрешающая программа для языка &amp;lt;tex&amp;gt; L_1 \cup L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \lor (p_2(x) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \cap L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \land (p_2(x) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; \overline{L_1} :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 0)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \backslash L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \land (p_2(x) == 0)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \times L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(\langle x, y \rangle)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \land (p_2(y) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt;L_1^* :&amp;lt;/tex&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''for''' &amp;lt;tex&amp;gt;x_i :&amp;lt;/tex&amp;gt; разбиение &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;     &lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_i) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
         '''then return''' 1&lt;br /&gt;
     '''return''' 0  &lt;br /&gt;
&lt;br /&gt;
Разрешатель будет перебирать все возможные разбиения данного ему слова на подслова, и для каждого проверять принадлежность &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;. Если хотя бы в одном разбиении все подслова будут принадлежать &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;, то все слово принадлежит &amp;lt;tex&amp;gt; L_1^* &amp;lt;/tex&amp;gt;, иначе — не принадлежит. &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 L_2 : &amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''for''' &amp;lt;tex&amp;gt;x_1, x_2 :&amp;lt;/tex&amp;gt; разбиение &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;     &lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_1) == 1 \land p_2(x_2) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
         '''then return''' 1&lt;br /&gt;
     '''return''' 0  &lt;br /&gt;
&lt;br /&gt;
Разрешатель будет перебирать все возможные разбиения на два слова и проверять принадлежность первого слова &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; и второго слова &amp;lt;tex&amp;gt; L_2 &amp;lt;/tex&amp;gt;. Если хотя бы для одного разбиения оба разрешателя вернут 1, то слово принадлежит &amp;lt;tex&amp;gt; L_1 L_2 &amp;lt;/tex&amp;gt;, иначе — не принадлежит.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
 Языки &amp;lt;tex&amp;gt; L_1, L_2 &amp;lt;/tex&amp;gt; –- перечислимы, тогда языки&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\left. \begin{array}{lll} L_1 \cup L_2 \\ L_1 \cap L_2 \\ L_1 \times L_2\\ L_1^* \\  L_1 L_2 \end{array} \right\} &amp;lt;/tex&amp;gt; тоже перечислимы.&lt;br /&gt;
|proof=&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_2&amp;lt;/tex&amp;gt; — полуразрешающие программы для языков &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt; соответственно. Для доказательства достаточно написать полуразрешающую или перечисляющую программу для каждого случая. Заметим, что &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_2&amp;lt;/tex&amp;gt; могут зависнуть при использовании в полуразрешающей программе для соответствующего языка, но это допустимо.&lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \cup L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
полуразрешающая программа:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''for''' &amp;lt;tex&amp;gt;k = 1\ .. \ \infty &amp;lt;/tex&amp;gt;      &lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt; (p_1|_k(x) == 1) \lor (p_2|_k(x) == 1) &amp;lt;/tex&amp;gt;      &lt;br /&gt;
         '''then return 1''' &lt;br /&gt;
&lt;br /&gt;
Перечислитель же для этого языка будет по очереди на один шаг запускать перечислители для &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt; и выдавать по очереди слова из &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt; соответственно.&lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \cap L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
полуразрешающая программа:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''for''' &amp;lt;tex&amp;gt;k = 1\ .. \ \infty &amp;lt;/tex&amp;gt;      &lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt; (p_1|_k(x) == 1) \land (p_2|_k(x) == 1) &amp;lt;/tex&amp;gt;      &lt;br /&gt;
         '''then return 1''' &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \times L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
полуразрешающая программа:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(\langle x, y \rangle)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''for''' &amp;lt;tex&amp;gt;k = 1\ .. \ \infty &amp;lt;/tex&amp;gt;      &lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt; (p_1|_k(x) == 1) \land (p_2|_k(y) == 1) &amp;lt;/tex&amp;gt;      &lt;br /&gt;
         '''then return 1''' &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1^* :&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
полуразрешающая программа (по аналогии с &amp;lt;tex&amp;gt;L_1^*&amp;lt;/tex&amp;gt; для разрешимого &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt;):&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''for''' &amp;lt;tex&amp;gt;x_i :&amp;lt;/tex&amp;gt; разбиение &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;     &lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_i) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
         '''then return''' 1&lt;br /&gt;
&lt;br /&gt;
Перечислитель строится следующим образом: запускаем перечислитель для &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; в цикле по тайм-лимиту и запоминаем выданные им слова. При выдаче каждого нового слова перебираем все возможные перестановки уже выданных слов и выдаем их. &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 L_2 : &amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
полуразрешающая программа:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''for''' &amp;lt;tex&amp;gt;x_1, x_2 :&amp;lt;/tex&amp;gt; разбиение &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;     &lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_1) == 1 \land p_2(x_2) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
         '''then return''' 1&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Перечислитель для &amp;lt;tex&amp;gt; L_1 L_2 &amp;lt;/tex&amp;gt; строим следующим образом: запускаем одновременно перечислители для &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;  и &amp;lt;tex&amp;gt; L_2 &amp;lt;/tex&amp;gt;, запоминая все выданные слова. При выдаче новых слов перебираем все возможные пары из запомненных слов и выдаем их конкатенацию.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
 Языки &amp;lt;tex&amp;gt; L_1, L_2 &amp;lt;/tex&amp;gt; –- перечислимы, тогда языки&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\left. \begin{array}{lll} \overline{L_1} \\ L_1 \backslash L_2 \end{array} \right\} &amp;lt;/tex&amp;gt; могут быть не перечислимы.&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
&lt;br /&gt;
Рассмотрим язык &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt;. Предположим, что он перечислим. Тогда имея какое-либо слово, мы можем одновременно запустить перечислители для &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt;. В какой-то момент времени слово появится либо в выводе перечислителя для &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;, либо в выводе перечислителя для &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt;. Тогда получится что &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; разрешим, так как про любое слово мы можем узнать принадлежит оно &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; или не принадлежит. Но мы знаем, что существуют перечислимые, но не разрешимые языки, следовательно, язык &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt; может быть не перечислим. &lt;br /&gt;
&lt;br /&gt;
Теперь рассмотрим &amp;lt;tex&amp;gt; L_1 \backslash L_2 &amp;lt;/tex&amp;gt;. В качестве &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; возьмем язык, состоящий из всех слов. Тогда получится, что язык &amp;lt;tex&amp;gt; L_1 \backslash L_2 &amp;lt;/tex&amp;gt; это &amp;lt;tex&amp;gt; \overline{L_2} &amp;lt;/tex&amp;gt;. Про язык &amp;lt;tex&amp;gt; \overline{L_2} &amp;lt;/tex&amp;gt; мы знаем, что он перечислим не всегда, следовательно и язык &amp;lt;tex&amp;gt; L_1 \backslash L_2 &amp;lt;/tex&amp;gt; также не всегда перечислим.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
* ''Верещагин Н. К., Шень А.'' '''Лекции по математической логике и теории алгоритов. Часть 3. Вычислимые функции''' — М.: МЦНМО, 1999&lt;/div&gt;</summary>
		<author><name>Roman Livarsky</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A5%D0%B0%D1%80%D0%B0%D0%BA%D1%82%D0%B5%D1%80%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B0_%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D1%85_%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_%D0%B2%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=14893</id>
		<title>Характеристика перечислимых множеств через вычислимые функции</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A5%D0%B0%D1%80%D0%B0%D0%BA%D1%82%D0%B5%D1%80%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B0_%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D1%85_%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_%D0%B2%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=14893"/>
				<updated>2011-12-19T02:29:46Z</updated>
		
		<summary type="html">&lt;p&gt;Roman Livarsky: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition=Множество &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; называется перечислимым, если выполняется хотя бы одно условие из приведенных ниже:&lt;br /&gt;
# существует программа, перечисляющая все элементы &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; в произвольном порядке.&lt;br /&gt;
# &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; является областью определения [[Вычислимые функции|вычиcлимой функции]] &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; является областью значений [[Вычислимые функции|вычиcлимой функции]] &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# функция &amp;lt;tex&amp;gt;f_X(x) = \begin{cases}&lt;br /&gt;
  1, &amp;amp; x \in X \\&lt;br /&gt;
  \bot, &amp;amp; x \notin X &lt;br /&gt;
\end{cases}&amp;lt;/tex&amp;gt; — вычислима.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Определения ''1'', ''2'', ''3'', ''4'' эквивалентны.&lt;br /&gt;
|proof=&lt;br /&gt;
*1 &amp;lt;tex&amp;gt;\Rightarrow&amp;lt;/tex&amp;gt; 4&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; — программа, перечисляющая &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Приведем программу &amp;lt;tex&amp;gt;q&amp;lt;/tex&amp;gt;, вычисляющую функцию &amp;lt;tex&amp;gt;f_X(x):&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;q(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''for''' &amp;lt;tex&amp;gt;k = 1 \ .. \ \infty&amp;lt;/tex&amp;gt;&lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt; p(k) == x &amp;lt;/tex&amp;gt;&lt;br /&gt;
             '''return''' 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*2 &amp;lt;tex&amp;gt;\Rightarrow&amp;lt;/tex&amp;gt; 1, 3 &amp;lt;tex&amp;gt;\Rightarrow&amp;lt;/tex&amp;gt; 1&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; — область определения [[Вычислимые функции|вычислимой функции]] &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt;, вычисляемой программой &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Тогда &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; перечисляется такой программой:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;q()&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''for''' &amp;lt;tex&amp;gt; TL = 1 \ .. \ \infty &amp;lt;/tex&amp;gt; &lt;br /&gt;
         '''for''' &amp;lt;tex&amp;gt; k = 1 \ ..\ TL&amp;lt;/tex&amp;gt;&lt;br /&gt;
             '''if''' &amp;lt;tex&amp;gt;p(k)|_{TL} \neq \bot &amp;lt;/tex&amp;gt;&lt;br /&gt;
                 '''print'''&amp;lt;tex&amp;gt;(k)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если print&amp;lt;tex&amp;gt;(k)&amp;lt;/tex&amp;gt; заменить на print(&amp;lt;tex&amp;gt;p(k)|_{TL}&amp;lt;/tex&amp;gt;), то &amp;lt;tex&amp;gt;q&amp;lt;/tex&amp;gt; станет перечислять область значений &amp;lt;tex&amp;gt;f(x)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*4 &amp;lt;tex&amp;gt;\Rightarrow&amp;lt;/tex&amp;gt; 2, 4 &amp;lt;tex&amp;gt;\Rightarrow&amp;lt;/tex&amp;gt; 3&lt;br /&gt;
&lt;br /&gt;
Пусть дана &amp;lt;tex&amp;gt;f_X(x)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Введем новую функцию &amp;lt;tex&amp;gt;g(x) = x&amp;lt;/tex&amp;gt;, если &amp;lt;tex&amp;gt;f_X(x) \neq \bot&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Очевидно, она вычислима, и ее область определения и область значений совпадают с &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
* ''Верещагин Н. К., Шень А.'' '''Лекции по математической логике и теории алгоритов. Часть 3. Вычислимые функции''' — М.: МЦНМО, 1999&lt;/div&gt;</summary>
		<author><name>Roman Livarsky</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A5%D0%B0%D1%80%D0%B0%D0%BA%D1%82%D0%B5%D1%80%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B0_%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D1%85_%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_%D0%B2%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=14892</id>
		<title>Характеристика перечислимых множеств через вычислимые функции</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A5%D0%B0%D1%80%D0%B0%D0%BA%D1%82%D0%B5%D1%80%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B0_%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D1%85_%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_%D0%B2%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=14892"/>
				<updated>2011-12-19T02:26:02Z</updated>
		
		<summary type="html">&lt;p&gt;Roman Livarsky: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition=Множество &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; называется перечислимым, если выполняется хотя бы одно условие из приведенных ниже:&lt;br /&gt;
# существует программа, перечисляющая все элементы &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; в произвольном порядке.&lt;br /&gt;
# &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; является областью определения вычиcлимой функции &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; является областью значений вычиcлимой функции &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# функция &amp;lt;tex&amp;gt;f_X(x) = \begin{cases}&lt;br /&gt;
  1, &amp;amp; x \in X \\&lt;br /&gt;
  \bot, &amp;amp; x \notin X &lt;br /&gt;
\end{cases}&amp;lt;/tex&amp;gt; — вычислима.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Определения ''1'', ''2'', ''3'', ''4'' эквивалентны.&lt;br /&gt;
|proof=&lt;br /&gt;
*1 &amp;lt;tex&amp;gt;\Rightarrow&amp;lt;/tex&amp;gt; 4&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; — программа, перечисляющая &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Приведем программу &amp;lt;tex&amp;gt;q&amp;lt;/tex&amp;gt;, вычисляющую функцию &amp;lt;tex&amp;gt;f_X(x):&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;q(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''for''' &amp;lt;tex&amp;gt;k = 1 \ .. \ \infty&amp;lt;/tex&amp;gt;&lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt; p(k) == x &amp;lt;/tex&amp;gt;&lt;br /&gt;
             '''return''' 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*2 &amp;lt;tex&amp;gt;\Rightarrow&amp;lt;/tex&amp;gt; 1, 3 &amp;lt;tex&amp;gt;\Rightarrow&amp;lt;/tex&amp;gt; 1&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; — область определения вычислимой функции &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt;, вычисляемой программой &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Тогда &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; перечисляется такой программой:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;q()&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''for''' &amp;lt;tex&amp;gt; TL = 1 \ .. \ \infty &amp;lt;/tex&amp;gt; &lt;br /&gt;
         '''for''' &amp;lt;tex&amp;gt; k = 1 \ ..\ TL&amp;lt;/tex&amp;gt;&lt;br /&gt;
             '''if''' &amp;lt;tex&amp;gt;p(k)|_{TL} \neq \bot &amp;lt;/tex&amp;gt;&lt;br /&gt;
                 '''print'''&amp;lt;tex&amp;gt;(k)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если print&amp;lt;tex&amp;gt;(k)&amp;lt;/tex&amp;gt; заменить на print(&amp;lt;tex&amp;gt;p(k)|_{TL}&amp;lt;/tex&amp;gt;), то &amp;lt;tex&amp;gt;q&amp;lt;/tex&amp;gt; станет перечислять область значений &amp;lt;tex&amp;gt;f(x)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*4 &amp;lt;tex&amp;gt;\Rightarrow&amp;lt;/tex&amp;gt; 2, 4 &amp;lt;tex&amp;gt;\Rightarrow&amp;lt;/tex&amp;gt; 3&lt;br /&gt;
&lt;br /&gt;
Пусть дана &amp;lt;tex&amp;gt;f_X(x)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Введем новую функцию &amp;lt;tex&amp;gt;g(x) = x&amp;lt;/tex&amp;gt;, если &amp;lt;tex&amp;gt;f_X(x) \neq \bot&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Очевидно, она вычислима, и ее область определения и область значений совпадают с &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
* ''Верещагин Н. К., Шень А.'' '''Лекции по математической логике и теории алгоритов. Часть 3. Вычислимые функции''' — М.: МЦНМО, 1999&lt;/div&gt;</summary>
		<author><name>Roman Livarsky</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%97%D0%B0%D0%BC%D0%BA%D0%BD%D1%83%D1%82%D0%BE%D1%81%D1%82%D1%8C_%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B8%D0%BC%D1%8B%D1%85_%D0%B8_%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D1%85_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%BE%D1%82%D0%BD%D0%BE%D1%81%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE_%D1%82%D0%B5%D0%BE%D1%80%D0%B5%D1%82%D0%B8%D0%BA%D0%BE-%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B8_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B9&amp;diff=14808</id>
		<title>Замкнутость разрешимых и перечислимых языков относительно теоретико-множественных и алгебраических операций</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%97%D0%B0%D0%BC%D0%BA%D0%BD%D1%83%D1%82%D0%BE%D1%81%D1%82%D1%8C_%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B8%D0%BC%D1%8B%D1%85_%D0%B8_%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D1%85_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%BE%D1%82%D0%BD%D0%BE%D1%81%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE_%D1%82%D0%B5%D0%BE%D1%80%D0%B5%D1%82%D0%B8%D0%BA%D0%BE-%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B8_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B9&amp;diff=14808"/>
				<updated>2011-12-18T06:52:15Z</updated>
		
		<summary type="html">&lt;p&gt;Roman Livarsky: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
 Языки &amp;lt;tex&amp;gt; L_1, L_2 &amp;lt;/tex&amp;gt; –- разрешимы, тогда языки&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\left. \begin{array}{lll} L_1 \cup L_2 \\ L_1 \cap L_2 \\ \overline{L_1} \\ L_1 \backslash L_2 \\ L_1 \times L_2 \\L_1^* \\  L_1 L_2 \end{array} \right\} &amp;lt;/tex&amp;gt; тоже разрешимы.&lt;br /&gt;
|proof=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_2&amp;lt;/tex&amp;gt; — разрешающие программы для языков  &lt;br /&gt;
&amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt; соответственно. Для доказательства достаточно написать разрешающую программу (разрешатель) для каждого случая. &lt;br /&gt;
&lt;br /&gt;
* Разрешающая программа для языка &amp;lt;tex&amp;gt; L_1 \cup L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \lor (p_2(x) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \cap L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \land (p_2(x) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; \overline{L_1} :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 0)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \backslash L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \land (p_2(x) == 0)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \times L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(\langle x, y \rangle)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \land (p_2(y) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt;L_1^* :&amp;lt;/tex&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''for''' &amp;lt;tex&amp;gt;x_i :&amp;lt;/tex&amp;gt; разбиение &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;     &lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_i) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
         '''then return''' 1&lt;br /&gt;
     '''return''' 0  &lt;br /&gt;
&lt;br /&gt;
Разрешатель будет перебирать все возможные разбиения данного ему слова на подслова, и для каждого проверять принадлежность &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;. Если хотя бы в одном разбиении все подслова будут принадлежать &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;, то все слово принадлежит &amp;lt;tex&amp;gt; L_1^* &amp;lt;/tex&amp;gt;, иначе — не принадлежит. &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 L_2 : &amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''for''' &amp;lt;tex&amp;gt;x_1, x_2 :&amp;lt;/tex&amp;gt; разбиение &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;     &lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_1) == 1 \land p_2(x_2) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
         '''then return''' 1&lt;br /&gt;
     '''return''' 0  &lt;br /&gt;
&lt;br /&gt;
Разрешатель будет перебирать все возможные разбиения на два слова и проверять принадлежность первого слова &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; и второго слова &amp;lt;tex&amp;gt; L_2 &amp;lt;/tex&amp;gt;. Если хотя бы для одного разбиения оба разрешателя вернут 1, то слово принадлежит &amp;lt;tex&amp;gt; L_1 L_2 &amp;lt;/tex&amp;gt;, иначе — не принадлежит.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
 Языки &amp;lt;tex&amp;gt; L_1, L_2 &amp;lt;/tex&amp;gt; –- перечислимы, тогда языки&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\left. \begin{array}{lll} L_1 \cup L_2 \\ L_1 \cap L_2 \\ L_1 \times L_2\\ L_1^* \\  L_1 L_2 \end{array} \right\} &amp;lt;/tex&amp;gt; тоже перечислимы.&lt;br /&gt;
|proof=&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_2&amp;lt;/tex&amp;gt; — полуразрешающие программы для языков &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt; соответственно. Для доказательства достаточно написать полуразрешающую или перечисляющую программу для каждого случая. Заметим, что &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_2&amp;lt;/tex&amp;gt; могут зависнуть при использовании в полуразрешающей программе для соответствующего языка, но это допустимо.&lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \cup L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
полуразрешающая программа:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''for''' &amp;lt;tex&amp;gt;k = 1\ .. \ \infty &amp;lt;/tex&amp;gt;      &lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt; (p_1|_k(x) == 1) \lor (p_2|_k(x) == 1) &amp;lt;/tex&amp;gt;      &lt;br /&gt;
         '''then return 1''' &lt;br /&gt;
&lt;br /&gt;
Перечислитель же для этого языка будет по очереди на один шаг запускать перечислители для &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt; и выдавать по очереди слова из &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt; соответственно.&lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \cap L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
полуразрешающая программа:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''for''' &amp;lt;tex&amp;gt;k = 1\ .. \ \infty &amp;lt;/tex&amp;gt;      &lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt; (p_1|_k(x) == 1) \land (p_2|_k(x) == 1) &amp;lt;/tex&amp;gt;      &lt;br /&gt;
         '''then return 1''' &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \times L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
полуразрешающая программа:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(\langle x, y \rangle)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''for''' &amp;lt;tex&amp;gt;k = 1\ .. \ \infty &amp;lt;/tex&amp;gt;      &lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt; (p_1|_k(x) == 1) \land (p_2|_k(y) == 1) &amp;lt;/tex&amp;gt;      &lt;br /&gt;
         '''then return 1''' &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1^* :&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
полуразрешающая программа (по аналогии с &amp;lt;tex&amp;gt;L_1^*&amp;lt;/tex&amp;gt; для разрешимого &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt;):&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''for''' &amp;lt;tex&amp;gt;x_i :&amp;lt;/tex&amp;gt; разбиение &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;     &lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_i) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
         '''then return''' 1&lt;br /&gt;
&lt;br /&gt;
Перечислитель строится следующим образом: запускаем перечислитель для &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; в цикле по тайм-лимиту и запоминаем выданные им слова. При выдаче каждого нового слова перебираем все возможные перестановки уже выданных слов и выдаем их. &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 L_2 : &amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
полуразрешающая программа:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''for''' &amp;lt;tex&amp;gt;x_1, x_2 :&amp;lt;/tex&amp;gt; разбиение &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;     &lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_1) == 1 \land p_2(x_2) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
         '''then return''' 1&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Перечислитель для &amp;lt;tex&amp;gt; L_1 L_2 &amp;lt;/tex&amp;gt; строим следующим образом: запускаем одновременно перечислители для &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;  и &amp;lt;tex&amp;gt; L_2 &amp;lt;/tex&amp;gt;, запоминая все выданные слова. При выдаче новых слов перебираем все возможные пары из запомненных слов и выдаем их конкатенацию.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
 Языки &amp;lt;tex&amp;gt; L_1, L_2 &amp;lt;/tex&amp;gt; –- перечислимы, тогда языки&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\left. \begin{array}{lll} \overline{L_1} \\ L_1 \backslash L_2 \end{array} \right\} &amp;lt;/tex&amp;gt; могут быть не перечислимы.&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
&lt;br /&gt;
Рассмотрим язык &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt;. Предположим, что он перечислим. Тогда имея какое-либо слово, мы можем одновременно запустить перечислители для &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt;. В какой-то момент времени слово появится либо в выводе перечислителя для &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;, либо в выводе перечислителя для &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt;. Тогда получится что &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; разрешим, так как про любое слово мы можем узнать принадлежит оно &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; или не принадлежит. Но мы знаем, что существуют перечислимые, но не разрешимые языки, следовательно, язык &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt; может быть не перечислим. &lt;br /&gt;
&lt;br /&gt;
Теперь рассмотрим &amp;lt;tex&amp;gt; L_1 \backslash L_2 &amp;lt;/tex&amp;gt;. В качестве &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; возьмем язык, состоящий из всех слов. Тогда получится, что язык &amp;lt;tex&amp;gt; L_1 \backslash L_2 &amp;lt;/tex&amp;gt; это &amp;lt;tex&amp;gt; \overline{L_2} &amp;lt;/tex&amp;gt;. Про язык &amp;lt;tex&amp;gt; \overline{L_2} &amp;lt;/tex&amp;gt; мы знаем, что он перечислим не всегда, следовательно и язык &amp;lt;tex&amp;gt; L_1 \backslash L_2 &amp;lt;/tex&amp;gt; также не всегда перечислим.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
* ''Верещагин Н. К., Шень А.'' '''Лекции по математической логике и теории алгоритов. Часть 3. Вычислимые функции''' -- М.: МЦНМО, 1999&lt;/div&gt;</summary>
		<author><name>Roman Livarsky</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A5%D0%B0%D1%80%D0%B0%D0%BA%D1%82%D0%B5%D1%80%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B0_%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D1%85_%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_%D0%B2%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=14807</id>
		<title>Характеристика перечислимых множеств через вычислимые функции</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A5%D0%B0%D1%80%D0%B0%D0%BA%D1%82%D0%B5%D1%80%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B0_%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D1%85_%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_%D0%B2%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;diff=14807"/>
				<updated>2011-12-18T06:51:44Z</updated>
		
		<summary type="html">&lt;p&gt;Roman Livarsky: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition=Множество &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; называется перечислимым, если выполняется хотя бы одно условие из приведенных ниже:&lt;br /&gt;
# Существует программа перечисляющая все элементы &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; в произвольном порядке.&lt;br /&gt;
# &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; является областью определения вычиcлимой функции &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; является областью значений вычиcлимой функции &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt;. &lt;br /&gt;
# Функция &amp;lt;tex&amp;gt;f_X(x) = \begin{cases}&lt;br /&gt;
  1, &amp;amp; x \in X \\&lt;br /&gt;
  \bot, &amp;amp; x \notin X &lt;br /&gt;
\end{cases}&amp;lt;/tex&amp;gt; — вычислима.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Определения ''1'', ''2'', ''3'', ''4'' эквивалентны.&lt;br /&gt;
|proof=&lt;br /&gt;
*1 &amp;lt;tex&amp;gt;\Rightarrow&amp;lt;/tex&amp;gt; 4&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; — программа, перечисляющая &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Приведем программу &amp;lt;tex&amp;gt;q&amp;lt;/tex&amp;gt;, вычисляющую функцию &amp;lt;tex&amp;gt;f_X(x):&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;q(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''for''' &amp;lt;tex&amp;gt;k = 1 \ .. \ \infty&amp;lt;/tex&amp;gt;&lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt; p(k) == x &amp;lt;/tex&amp;gt;&lt;br /&gt;
         '''then return''' 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*2 &amp;lt;tex&amp;gt;\Rightarrow&amp;lt;/tex&amp;gt; 1, 3 &amp;lt;tex&amp;gt;\Rightarrow&amp;lt;/tex&amp;gt; 1&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; — область определения вычислимой функции &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt;, вычисляемой программой &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Введем обозначение: &amp;lt;tex&amp;gt;p(x)|_{TL}&amp;lt;/tex&amp;gt; &amp;amp;nbsp; — &amp;amp;nbsp; запустить &amp;amp;nbsp; &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt; &amp;amp;nbsp; на &amp;amp;nbsp; &amp;lt;tex&amp;gt;TL&amp;lt;/tex&amp;gt; &amp;amp;nbsp; секунд. Если &amp;amp;nbsp; &amp;lt;tex&amp;gt;p(x)|_{TL}&amp;lt;/tex&amp;gt; &amp;amp;nbsp; за &amp;amp;nbsp; &amp;lt;tex&amp;gt;TL&amp;lt;/tex&amp;gt; &amp;amp;nbsp; секунд так и не вернула значение функции &amp;lt;tex&amp;gt;f(x)&amp;lt;/tex&amp;gt;, то возвращаем &amp;lt;tex&amp;gt;\bot&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тогда &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; перечисляется такой программой:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;q()&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''for''' &amp;lt;tex&amp;gt; TL = 1 \ .. \ \infty &amp;lt;/tex&amp;gt; &lt;br /&gt;
         '''for''' &amp;lt;tex&amp;gt; k = 1 \ ..\ TL&amp;lt;/tex&amp;gt;&lt;br /&gt;
             '''if''' &amp;lt;tex&amp;gt;p(k)|_{TL} \neq \bot &amp;lt;/tex&amp;gt;&lt;br /&gt;
             '''then print'''&amp;lt;tex&amp;gt;(k)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если print&amp;lt;tex&amp;gt;(k)&amp;lt;/tex&amp;gt; заменить на print(&amp;lt;tex&amp;gt;p(k)|_{TL}&amp;lt;/tex&amp;gt;), то &amp;lt;tex&amp;gt;q&amp;lt;/tex&amp;gt; станет перечислять область значений &amp;lt;tex&amp;gt;f(x)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*4 &amp;lt;tex&amp;gt;\Rightarrow&amp;lt;/tex&amp;gt; 2, 4 &amp;lt;tex&amp;gt;\Rightarrow&amp;lt;/tex&amp;gt; 3&lt;br /&gt;
&lt;br /&gt;
Пусть дана &amp;lt;tex&amp;gt;f_X(x)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Введем новую функцию &amp;lt;tex&amp;gt;g(x) = x&amp;lt;/tex&amp;gt;, если  &amp;lt;tex&amp;gt;f_X(x) \neq \bot&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Очевидно, она вычислима, и ее область определения и область значений совпадают с &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
* ''Верещагин Н. К., Шень А.'' '''Лекции по математической логике и теории алгоритов. Часть 3. Вычислимые функции''' -- М.: МЦНМО, 1999&lt;/div&gt;</summary>
		<author><name>Roman Livarsky</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%97%D0%B0%D0%BC%D0%BA%D0%BD%D1%83%D1%82%D0%BE%D1%81%D1%82%D1%8C_%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B8%D0%BC%D1%8B%D1%85_%D0%B8_%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D1%85_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%BE%D1%82%D0%BD%D0%BE%D1%81%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE_%D1%82%D0%B5%D0%BE%D1%80%D0%B5%D1%82%D0%B8%D0%BA%D0%BE-%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B8_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B9&amp;diff=14806</id>
		<title>Замкнутость разрешимых и перечислимых языков относительно теоретико-множественных и алгебраических операций</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%97%D0%B0%D0%BC%D0%BA%D0%BD%D1%83%D1%82%D0%BE%D1%81%D1%82%D1%8C_%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B8%D0%BC%D1%8B%D1%85_%D0%B8_%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D1%85_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%BE%D1%82%D0%BD%D0%BE%D1%81%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE_%D1%82%D0%B5%D0%BE%D1%80%D0%B5%D1%82%D0%B8%D0%BA%D0%BE-%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B8_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B9&amp;diff=14806"/>
				<updated>2011-12-18T06:11:36Z</updated>
		
		<summary type="html">&lt;p&gt;Roman Livarsky: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
 Языки &amp;lt;tex&amp;gt; L_1, L_2 &amp;lt;/tex&amp;gt; –- разрешимы, тогда языки&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\left. \begin{array}{lll} L_1 \cup L_2 \\ L_1 \cap L_2 \\ \overline{L_1} \\ L_1 \backslash L_2 \\ L_1 \times L_2 \\L_1^* \\  L_1 L_2 \end{array} \right\} &amp;lt;/tex&amp;gt; тоже разрешимы.&lt;br /&gt;
|proof=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_2&amp;lt;/tex&amp;gt; — разрешающие программы для языков  &lt;br /&gt;
&amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt; соответственно. Для доказательства достаточно написать разрешающую программу (разрешатель) для каждого случая. &lt;br /&gt;
&lt;br /&gt;
* Разрешающая программа для языка &amp;lt;tex&amp;gt; L_1 \cup L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \lor (p_2(x) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \cap L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \land (p_2(x) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; \overline{L_1} :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 0)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \backslash L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \land (p_2(x) == 0)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \times L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(\langle x, y \rangle)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \land (p_2(y) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt;L_1^* :&amp;lt;/tex&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''for''' &amp;lt;tex&amp;gt;x_i :&amp;lt;/tex&amp;gt; разбиение &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;     &lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_i) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
         '''then return''' 1&lt;br /&gt;
     '''return''' 0  &lt;br /&gt;
&lt;br /&gt;
Разрешатель будет перебирать все возможные разбиения данного ему слова на подслова, и для каждого проверять принадлежность &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;. Если хотя бы в одном разбиении все подслова будут принадлежать &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;, то все слово принадлежит &amp;lt;tex&amp;gt; L_1^* &amp;lt;/tex&amp;gt;, иначе — не принадлежит. &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 L_2 : &amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''for''' &amp;lt;tex&amp;gt;x_1, x_2 :&amp;lt;/tex&amp;gt; разбиение &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;     &lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_1) == 1 \land p_2(x_2) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
         '''then return''' 1&lt;br /&gt;
     '''return''' 0  &lt;br /&gt;
&lt;br /&gt;
Разрешатель будет перебирать все возможные разбиения на два слова и проверять принадлежность первого слова &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; и второго слова &amp;lt;tex&amp;gt; L_2 &amp;lt;/tex&amp;gt;. Если хотя бы для одного разбиения оба разрешателя вернут 1, то слово принадлежит &amp;lt;tex&amp;gt; L_1 L_2 &amp;lt;/tex&amp;gt;, иначе — не принадлежит.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
 Языки &amp;lt;tex&amp;gt; L_1, L_2 &amp;lt;/tex&amp;gt; –- перечислимы, тогда языки&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\left. \begin{array}{lll} L_1 \cup L_2 \\ L_1 \cap L_2 \\ L_1 \times L_2\\ L_1^* \\  L_1 L_2 \end{array} \right\} &amp;lt;/tex&amp;gt; тоже перечислимы.&lt;br /&gt;
|proof=&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_2&amp;lt;/tex&amp;gt; — полуразрешающие программы для языков &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt; соответственно. Для доказательства достаточно написать полуразрешающую или перечисляющую программу для каждого случая. Заметим, что &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_2&amp;lt;/tex&amp;gt; могут зависнуть при использовании в полуразрешающей программе для соответствующего языка, но это допустимо.&lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \cup L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
полуразрешающая программа:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''for''' &amp;lt;tex&amp;gt;k = 1\ .. \ \infty &amp;lt;/tex&amp;gt;      &lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt; (p_1|_k(x) == 1) \lor (p_2|_k(x) == 1) &amp;lt;/tex&amp;gt;      &lt;br /&gt;
         '''then return 1''' &lt;br /&gt;
&lt;br /&gt;
Перечислитель же для этого языка будет по очереди на один шаг запускать перечислители для &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt; и выдавать по очереди слова из &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt; соответственно.&lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \cap L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
полуразрешающая программа:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''for''' &amp;lt;tex&amp;gt;k = 1\ .. \ \infty &amp;lt;/tex&amp;gt;      &lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt; (p_1|_k(x) == 1) \land (p_2|_k(x) == 1) &amp;lt;/tex&amp;gt;      &lt;br /&gt;
         '''then return 1''' &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 \times L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
полуразрешающая программа:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(\langle x, y \rangle)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''for''' &amp;lt;tex&amp;gt;k = 1\ .. \ \infty &amp;lt;/tex&amp;gt;      &lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt; (p_1|_k(x) == 1) \land (p_2|_k(y) == 1) &amp;lt;/tex&amp;gt;      &lt;br /&gt;
         '''then return 1''' &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1^* :&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
полуразрешающая программа (по аналогии с &amp;lt;tex&amp;gt;L_1^*&amp;lt;/tex&amp;gt; для разрешимого &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt;):&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''for''' &amp;lt;tex&amp;gt;x_i :&amp;lt;/tex&amp;gt; разбиение &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;     &lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_i) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
         '''then return''' 1&lt;br /&gt;
&lt;br /&gt;
Перечислитель строится следующим образом: запускаем перечислитель для &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; в цикле по тайм-лимиту и запоминаем выданные им слова. При выдаче каждого нового слова перебираем все возможные перестановки уже выданных слов и выдаем их. &lt;br /&gt;
&lt;br /&gt;
* Для языка &amp;lt;tex&amp;gt; L_1 L_2 : &amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
полуразрешающая программа:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''for''' &amp;lt;tex&amp;gt;x_1, x_2 :&amp;lt;/tex&amp;gt; разбиение &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;     &lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_1) == 1 \land p_2(x_2) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
         '''then return''' 1&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Перечислитель для &amp;lt;tex&amp;gt; L_1 L_2 &amp;lt;/tex&amp;gt; строим следующим образом: запускаем одновременно перечислители для &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;  и &amp;lt;tex&amp;gt; L_2 &amp;lt;/tex&amp;gt;, запоминая все выданные слова. При выдаче новых слов перебираем все возможные пары из запомненных слов и выдаем их конкатенацию.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
 Языки &amp;lt;tex&amp;gt; L_1, L_2 &amp;lt;/tex&amp;gt; –- перечислимы, тогда языки&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\left. \begin{array}{lll} \overline{L_1} \\ L_1 \backslash L_2 \end{array} \right\} &amp;lt;/tex&amp;gt; могут быть не перечислимы.&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
&lt;br /&gt;
Рассмотрим язык &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt;. Предположим, что он перечислим. Тогда имея какое-либо слово, мы можем одновременно запустить перечислители для &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt;. В какой-то момент времени слово появится либо в выводе перечислителя для &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;, либо в выводе перечислителя для &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt;. Тогда получится что &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; разрешим, так как про любое слово мы можем узнать принадлежит оно &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; или не принадлежит. Но мы знаем, что существуют перечислимые, но не разрешимые языки, следовательно, язык &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt; может быть не перечислим. &lt;br /&gt;
&lt;br /&gt;
Теперь рассмотрим &amp;lt;tex&amp;gt; L_1 \backslash L_2 &amp;lt;/tex&amp;gt;. В качестве &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; возьмем язык, состоящий из всех слов. Тогда получится, что язык &amp;lt;tex&amp;gt; L_1 \backslash L_2 &amp;lt;/tex&amp;gt; это &amp;lt;tex&amp;gt; \overline{L_2} &amp;lt;/tex&amp;gt;. Про язык &amp;lt;tex&amp;gt; \overline{L_2} &amp;lt;/tex&amp;gt; мы знаем, что он перечислим не всегда, следовательно и язык &amp;lt;tex&amp;gt; L_1 \backslash L_2 &amp;lt;/tex&amp;gt; также не всегда перечислим.&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Roman Livarsky</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%97%D0%B0%D0%BC%D0%BA%D0%BD%D1%83%D1%82%D0%BE%D1%81%D1%82%D1%8C_%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B8%D0%BC%D1%8B%D1%85_%D0%B8_%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D1%85_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%BE%D1%82%D0%BD%D0%BE%D1%81%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE_%D1%82%D0%B5%D0%BE%D1%80%D0%B5%D1%82%D0%B8%D0%BA%D0%BE-%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B8_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B9&amp;diff=14803</id>
		<title>Замкнутость разрешимых и перечислимых языков относительно теоретико-множественных и алгебраических операций</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%97%D0%B0%D0%BC%D0%BA%D0%BD%D1%83%D1%82%D0%BE%D1%81%D1%82%D1%8C_%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B8%D0%BC%D1%8B%D1%85_%D0%B8_%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D1%85_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%BE%D1%82%D0%BD%D0%BE%D1%81%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE_%D1%82%D0%B5%D0%BE%D1%80%D0%B5%D1%82%D0%B8%D0%BA%D0%BE-%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B8_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B9&amp;diff=14803"/>
				<updated>2011-12-18T05:47:07Z</updated>
		
		<summary type="html">&lt;p&gt;Roman Livarsky: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
 Языки &amp;lt;tex&amp;gt; L_1, L_2 &amp;lt;/tex&amp;gt; –- разрешимы, тогда языки&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\left. \begin{array}{lll} L_1 \cup L_2 \\ L_1 \cap L_2 \\ \overline{L_1} \\ L_1 \backslash L_2 \\ L_1 \times L_2 \\L_1^* \\  L_1 L_2 \end{array} \right\} &amp;lt;/tex&amp;gt; тоже разрешимы.&lt;br /&gt;
|proof=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_2&amp;lt;/tex&amp;gt; — разрешающие программы для языков  &lt;br /&gt;
&amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt; соответственно. Для доказательства достаточно написать разрешающую программу (разрешатель) для каждого случая. &lt;br /&gt;
&lt;br /&gt;
Разрешающая программа для языка &amp;lt;tex&amp;gt; L_1 \cup L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \lor (p_2(x) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Для языка &amp;lt;tex&amp;gt; L_1 \cap L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \land (p_2(x) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Для языка &amp;lt;tex&amp;gt; \overline{L_1} :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 0)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Для языка &amp;lt;tex&amp;gt; L_1 \backslash L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \land (p_2(x) == 0)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Для языка &amp;lt;tex&amp;gt; L_1 \times L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(\langle x, y \rangle)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \land (p_2(y) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Для языка &amp;lt;tex&amp;gt;L_1^* :&amp;lt;/tex&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''for''' &amp;lt;tex&amp;gt;x_i :&amp;lt;/tex&amp;gt; разбиение &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;     &lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_i) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
         '''then return''' 1&lt;br /&gt;
     '''return''' 0  &lt;br /&gt;
&lt;br /&gt;
Разрешатель будет перебирать все возможные разбиения данного ему слова на подслова, и для каждого проверять принадлежность &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;. Если хотя бы в одном разбиении все подслова будут принадлежать &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;, то все слово принадлежит &amp;lt;tex&amp;gt; L_1^* &amp;lt;/tex&amp;gt;, иначе — не принадлежит. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Для языка &amp;lt;tex&amp;gt; L_1 L_2 : &amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''for''' &amp;lt;tex&amp;gt;x_1, x_2 :&amp;lt;/tex&amp;gt; разбиение &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;     &lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_1) == 1 \land p_2(x_2) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
         '''then return''' 1&lt;br /&gt;
     '''return''' 0  &lt;br /&gt;
&lt;br /&gt;
Разрешатель будет перебирать все возможные разбиения на два слова и проверять принадлежность первого слова &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; и второго слова &amp;lt;tex&amp;gt; L_2 &amp;lt;/tex&amp;gt;. Если хотя бы для одного разбиения оба разрешателя вернут 1, то слово принадлежит &amp;lt;tex&amp;gt; L_1 L_2 &amp;lt;/tex&amp;gt;, иначе — не принадлежит.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
 Языки &amp;lt;tex&amp;gt; L_1, L_2 &amp;lt;/tex&amp;gt; –- перечислимы, тогда языки&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\left. \begin{array}{lll} L_1 \cup L_2 \\ L_1 \cap L_2 \\ L_1 \times L_2\\ L_1^* \\  L_1 L_2 \end{array} \right\} &amp;lt;/tex&amp;gt; тоже перечислимы.&lt;br /&gt;
|proof=&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_2&amp;lt;/tex&amp;gt; — полуразрешающие программы для языков &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt; соответственно. Для доказательства достаточно написать полуразрешающую или перечисляющую программу для каждого случая. Заметим, что &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_2&amp;lt;/tex&amp;gt; могут зависнуть при использовании в полуразрешающей программе для соответствующего языка, но это допустимо.&lt;br /&gt;
&lt;br /&gt;
Для языка &amp;lt;tex&amp;gt; L_1 \cup L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
полуразрешающая программа:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''for''' &amp;lt;tex&amp;gt;k = 1\ .. \ \infty &amp;lt;/tex&amp;gt;      &lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt; (p_1|_k(x) == 1) \lor (p_2|_k(x) == 1) &amp;lt;/tex&amp;gt;      &lt;br /&gt;
         '''then return 1''' &lt;br /&gt;
&lt;br /&gt;
Перечислитель же для этого языка будет по очереди на один шаг запускать перечислители для &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt; и выдавать по очереди слова из &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt; соответственно.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Для языка &amp;lt;tex&amp;gt; L_1 \cap L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
полуразрешающая программа:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''for''' &amp;lt;tex&amp;gt;k = 1\ .. \ \infty &amp;lt;/tex&amp;gt;      &lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt; (p_1|_k(x) == 1) \land (p_2|_k(x) == 1) &amp;lt;/tex&amp;gt;      &lt;br /&gt;
         '''then return 1''' &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Для языка &amp;lt;tex&amp;gt; L_1 \times L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
полуразрешающая программа:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(\langle x, y \rangle)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''for''' &amp;lt;tex&amp;gt;k = 1\ .. \ \infty &amp;lt;/tex&amp;gt;      &lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt; (p_1|_k(x) == 1) \land (p_2|_k(y) == 1) &amp;lt;/tex&amp;gt;      &lt;br /&gt;
         '''then return 1''' &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Для языка &amp;lt;tex&amp;gt; L_1^* :&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
полуразрешающая программа (по аналогии с &amp;lt;tex&amp;gt;L_1^*&amp;lt;/tex&amp;gt; для разрешимого &amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt;):&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''for''' &amp;lt;tex&amp;gt;x_i :&amp;lt;/tex&amp;gt; разбиение &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;     &lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_i) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
         '''then return''' 1&lt;br /&gt;
&lt;br /&gt;
Перечислитель строится следующим образом: запускаем перечислитель для &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; в цикле по тайм-лимиту и запоминаем выданные им слова. При выдаче каждого нового слова перебираем все возможные перестановки уже выданных слов и выдаем их. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Для языка &amp;lt;tex&amp;gt; L_1 L_2 : &amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
полуразрешающая программа:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''for''' &amp;lt;tex&amp;gt;x_1, x_2 :&amp;lt;/tex&amp;gt; разбиение &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;     &lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_1) == 1 \land p_2(x_2) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
         '''then return''' 1&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Перечислитель для &amp;lt;tex&amp;gt; L_1 L_2 &amp;lt;/tex&amp;gt; строим следующим образом: запускаем одновременно перечислители для &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;  и &amp;lt;tex&amp;gt; L_2 &amp;lt;/tex&amp;gt;, запоминая все выданные слова. При выдаче новых слов перебираем все возможные пары из запомненных слов и выдаем их конкатенацию.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
 Языки &amp;lt;tex&amp;gt; L_1, L_2 &amp;lt;/tex&amp;gt; –- перечислимы, тогда языки&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\left. \begin{array}{lll} \overline{L_1} \\ L_1 \backslash L_2 \end{array} \right\} &amp;lt;/tex&amp;gt; могут быть не перечислимы.&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
&lt;br /&gt;
Рассмотрим язык &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt;. Предположим, что он перечислим. Тогда имея какое-либо слово, мы можем одновременно запустить перечислители для &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt;. В какой-то момент времени слово появится либо в выводе перечислителя для &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;, либо в выводе перечислителя для &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt;. Тогда получится что &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; разрешим, так как про любое слово мы можем узнать принадлежит оно &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; или не принадлежит. Но мы знаем, что существуют перечислимые, но не разрешимые языки, следовательно, язык &amp;lt;tex&amp;gt; \overline{L_1} &amp;lt;/tex&amp;gt; может быть не перечислим. &lt;br /&gt;
&lt;br /&gt;
Теперь рассмотрим &amp;lt;tex&amp;gt; L_1 \backslash L_2 &amp;lt;/tex&amp;gt;. В качестве &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; возьмем язык, состоящий из всех слов. Тогда получится, что язык &amp;lt;tex&amp;gt; L_1 \backslash L_2 &amp;lt;/tex&amp;gt; это &amp;lt;tex&amp;gt; \overline{L_2} &amp;lt;/tex&amp;gt;. Про язык &amp;lt;tex&amp;gt; \overline{L_2} &amp;lt;/tex&amp;gt; мы знаем, что он перечислим не всегда, следовательно и язык &amp;lt;tex&amp;gt; L_1 \backslash L_2 &amp;lt;/tex&amp;gt; также не всегда перечислим.&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Roman Livarsky</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%97%D0%B0%D0%BC%D0%BA%D0%BD%D1%83%D1%82%D0%BE%D1%81%D1%82%D1%8C_%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B8%D0%BC%D1%8B%D1%85_%D0%B8_%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D1%85_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%BE%D1%82%D0%BD%D0%BE%D1%81%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE_%D1%82%D0%B5%D0%BE%D1%80%D0%B5%D1%82%D0%B8%D0%BA%D0%BE-%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B8_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B9&amp;diff=14788</id>
		<title>Замкнутость разрешимых и перечислимых языков относительно теоретико-множественных и алгебраических операций</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%97%D0%B0%D0%BC%D0%BA%D0%BD%D1%83%D1%82%D0%BE%D1%81%D1%82%D1%8C_%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B8%D0%BC%D1%8B%D1%85_%D0%B8_%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D1%8B%D1%85_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%BE%D1%82%D0%BD%D0%BE%D1%81%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE_%D1%82%D0%B5%D0%BE%D1%80%D0%B5%D1%82%D0%B8%D0%BA%D0%BE-%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%B8_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B9&amp;diff=14788"/>
				<updated>2011-12-18T03:58:53Z</updated>
		
		<summary type="html">&lt;p&gt;Roman Livarsky: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
 Языки &amp;lt;tex&amp;gt; L_1, L_2 &amp;lt;/tex&amp;gt; –- разрешимы, тогда языки&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\left. \begin{array}{lll} L_1 \cup L_2 \\ L_1 \cap L_2 \\ \overline{L_1} \\ L_1 \backslash L_2 \\ L_1 \times L_2 \\L_1^* \\  L_1 L_2 \end{array} \right\} &amp;lt;/tex&amp;gt; тоже разрешимы.&lt;br /&gt;
|proof=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;p_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;p_2&amp;lt;/tex&amp;gt; — разрешающие программы для языков  &lt;br /&gt;
&amp;lt;tex&amp;gt;L_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;L_2&amp;lt;/tex&amp;gt; соответственно. Для доказательства достаточно написать разрешающую программу (разрешитель) для каждого случая. &lt;br /&gt;
&lt;br /&gt;
Разрешающая программа для языка &amp;lt;tex&amp;gt; L_1 \cup L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \land (p_2(x) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Для языка &amp;lt;tex&amp;gt; L_1 \cap L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \lor (p_2(x) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Для языка &amp;lt;tex&amp;gt; \overline{L_1} :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 0)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Для языка &amp;lt;tex&amp;gt; L_1 \backslash L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \land (p_2(x) == 0)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Для языка &amp;lt;tex&amp;gt; L_1 \times L_2 :&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(\langle x, y \rangle)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''return''' &amp;lt;tex&amp;gt;(p_1(x) == 1) \land (p_2(y) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Для языка &amp;lt;tex&amp;gt;L_1^* :&amp;lt;/tex&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''for''' &amp;lt;tex&amp;gt;x_i :&amp;lt;/tex&amp;gt; разбиение &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;     &lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_i) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
         '''then return''' 1&lt;br /&gt;
     '''return''' 0  &lt;br /&gt;
&lt;br /&gt;
Разрешатель будет перебирать все возможные разбиения данного ему слова на подслова, и для каждого проверять принадлежность &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;. Если хотя бы в одном разбиении все подслова будут принадлежать &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;, то все слово принадлежит &amp;lt;tex&amp;gt; L_1^* &amp;lt;/tex&amp;gt;, иначе — не принадлежит. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Для языка &amp;lt;tex&amp;gt; L_1 L_2 : &amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt;p(x)&amp;lt;/tex&amp;gt;&lt;br /&gt;
     '''for''' &amp;lt;tex&amp;gt;x_1, x_2 :&amp;lt;/tex&amp;gt; разбиение &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;     &lt;br /&gt;
         '''if''' &amp;lt;tex&amp;gt;(p_1(x_1) == 1 \land p_2(x_2) == 1)&amp;lt;/tex&amp;gt; &lt;br /&gt;
         '''then return''' 1&lt;br /&gt;
     '''return''' 0  &lt;br /&gt;
&lt;br /&gt;
Разрешитель будет перебирать все возможные разбиения на два слова и проверять принадлежность первого слова &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; и второго слова &amp;lt;tex&amp;gt; L_2 &amp;lt;/tex&amp;gt;. Если хотя бы для одного разбиения оба разрешателя вернут 1, то слово принадлежит &amp;lt;tex&amp;gt; L_1 L_2 &amp;lt;/tex&amp;gt;, иначе — не принадлежит.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
 &amp;lt;tex&amp;gt; L_1, L_2 &amp;lt;/tex&amp;gt; –- перечислимы, тогда&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\left. \begin{array}{lll} L_1 \cup L_2 \\ L_1 \cap L_2 \\ L_1^* \\  L_1 L_2 \end{array} \right\} &amp;lt;/tex&amp;gt; перечислимы&lt;br /&gt;
&amp;lt;tex&amp;gt;\left. \begin{array}{lll} \bar{L_1} \\ L_1 \backslash L_2 \end{array} \right\} &amp;lt;/tex&amp;gt; могут быть не перечислимы&lt;br /&gt;
|proof=&lt;br /&gt;
Для &amp;lt;tex&amp;gt; L_1 \cup L_2 &amp;lt;/tex&amp;gt; перечислитель будет по очереди на один шаг запускать перечислители &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;  и &amp;lt;tex&amp;gt; L_2 &amp;lt;/tex&amp;gt; и выдавать по очереди слова из  &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;  и &amp;lt;tex&amp;gt; L_2 &amp;lt;/tex&amp;gt;. Дальше воспользуемся возможностью построить полувычислитель для перечислимого языка. Для языка &amp;lt;tex&amp;gt; L_1 \cap L_2 &amp;lt;/tex&amp;gt; построим полувычислитель. Запустим по очереди полувычислители для &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; и  &amp;lt;tex&amp;gt; L_2 &amp;lt;/tex&amp;gt;. Если слово принадлежит &amp;lt;tex&amp;gt; L_1 \cap L_2 &amp;lt;/tex&amp;gt;, то оба полувычислителя выдадут 1, иначе один из полувычислителей зависнет, и полувычислитель для &amp;lt;tex&amp;gt; L_1 \cap L_2 &amp;lt;/tex&amp;gt; тоже зависнет, что допустимо. Для &amp;lt;tex&amp;gt; L_1^* &amp;lt;/tex&amp;gt; перечислитель строится следующим образом: запускаем перечислитель для &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; в цикле и запоминаем выданные им слова. При выдаче каждого нового слова перебираем все возможные перестановки уже выданных слов и выдаем их. Перечислитель для &amp;lt;tex&amp;gt; L_1 L_2 &amp;lt;/tex&amp;gt; строим следующим образом: запускаем одновременно перечислители для &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;  и &amp;lt;tex&amp;gt; L_2 &amp;lt;/tex&amp;gt;, запоминая все выданные слова. При выдаче новых слов перебираем все возможные пары из запомненных слов и выдаем их.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Рассмотрим язык &amp;lt;tex&amp;gt; \bar{L_1} &amp;lt;/tex&amp;gt;. Предположим, что он перечислим. Тогда имея какое-либо слово, мы можем одновременно запустить перечислители для &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; \bar{L_1} &amp;lt;/tex&amp;gt;. В какой-то момент времени слово появится либо в выводе перечислителя для &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt;, либо в выводе перечислителя для &amp;lt;tex&amp;gt; \bar{L_1} &amp;lt;/tex&amp;gt;. Тогда получится что &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; разрешим, так как про любое слово мы можем узнать принадлежит оно &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; или не принадлежит. Но мы знаем, что существуют перечислимые, но не разрешимые языки, следовательно, язык &amp;lt;tex&amp;gt; \bar{L_1} &amp;lt;/tex&amp;gt; может быть не перечислим. Теперь рассмотрим &amp;lt;tex&amp;gt; L_1 \backslash L_2 &amp;lt;/tex&amp;gt;. В качестве &amp;lt;tex&amp;gt; L_1 &amp;lt;/tex&amp;gt; возьмем язык, состоящий из всех слов. Тогда получится, что язык &amp;lt;tex&amp;gt; L_1 \backslash L_2 &amp;lt;/tex&amp;gt; это &amp;lt;tex&amp;gt; \bar{L_2} &amp;lt;/tex&amp;gt;. Про язык &amp;lt;tex&amp;gt; \bar{L_2} &amp;lt;/tex&amp;gt; мы знаем, что он перечислим не всегда, следовательно и язык &amp;lt;tex&amp;gt; L_1 \backslash L_2 &amp;lt;/tex&amp;gt; также не всегда перечислим.&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Roman Livarsky</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_RMQ_%D0%BA_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B5_LCA&amp;diff=8432</id>
		<title>Сведение задачи RMQ к задаче LCA</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_RMQ_%D0%BA_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B5_LCA&amp;diff=8432"/>
				<updated>2011-05-06T03:48:25Z</updated>
		
		<summary type="html">&lt;p&gt;Roman Livarsky: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Постановка задачи RMQ ==&lt;br /&gt;
Дан массив &amp;lt;tex&amp;gt;A[1..N]&amp;lt;/tex&amp;gt;. Поступают запросы вида &amp;lt;tex&amp;gt;(i, j)&amp;lt;/tex&amp;gt;, на каждый запрос требуется найти минимум в массиве &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;, начиная с позиции &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; и заканчивая позицией &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt;.&lt;br /&gt;
== Алгоритм ==&lt;br /&gt;
[[Файл:Wiki.PNG|thumb|right|300x160px|Пример построенного дерева для массива А]]&lt;br /&gt;
Декартово дерево (Сartesian tree) на массиве &amp;lt;tex&amp;gt;A[1..N]&amp;lt;/tex&amp;gt; - это бинарное дерево, рекурсивно определенное следующим образом:&lt;br /&gt;
* Корнем дерева является минимальное значение в массиве &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;, скажем &amp;lt;tex&amp;gt;A[i]&amp;lt;/tex&amp;gt;. &lt;br /&gt;
* Левым поддеревом является декартово дерево на массиве &amp;lt;tex&amp;gt;A[1..i-1]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
* Правым поддеревом является декартово дерево на массиве &amp;lt;tex&amp;gt;A[i+1..N]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Построим декартово дерево на массиве &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;. Тогда &amp;lt;tex&amp;gt;RMQ(i, j)&amp;lt;/tex&amp;gt; = &amp;lt;tex&amp;gt;LCA(A[i], A[j])&amp;lt;/tex&amp;gt;.&lt;br /&gt;
== Доказательство ==&lt;br /&gt;
Мы знаем что:&lt;br /&gt;
* 1. Любая вершина дерева всегда имеет меньшее значение, чем её дети. Тогда любой предок &amp;lt;tex&amp;gt;A[i]&amp;lt;/tex&amp;gt; или &amp;lt;tex&amp;gt;A[j]&amp;lt;/tex&amp;gt; меньше их самих.&lt;br /&gt;
* 2. Все вершины, которые лежат в дереве на пути от &amp;lt;tex&amp;gt;A[i]&amp;lt;/tex&amp;gt; до &amp;lt;tex&amp;gt;A[j]&amp;lt;/tex&amp;gt;, а так же их поддеревья образуют подмассив &amp;lt;tex&amp;gt;A[i..j]&amp;lt;/tex&amp;gt; (возьмём только правое поддерево у &amp;lt;tex&amp;gt;A[i]&amp;lt;/tex&amp;gt; и левое поддерево у &amp;lt;tex&amp;gt;A[j]&amp;lt;/tex&amp;gt;). Т.к. всё, что левее &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-го элемента в массиве, лежит левее &amp;lt;tex&amp;gt;A[i]&amp;lt;/tex&amp;gt; в дереве, и всё, что правее &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt;-го, лежит правее &amp;lt;tex&amp;gt;A[j]&amp;lt;/tex&amp;gt;. A дерево содержит все элементы &amp;lt;tex&amp;gt;A[1..N]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
* 3. Из всех вершин, определенных в п.2, &amp;lt;tex&amp;gt;LCA(A[i], A[j])&amp;lt;/tex&amp;gt; ближайший к корню и по п.1 имеет наименьшее значение в подмассиве &amp;lt;tex&amp;gt;A[i..j]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
== Сложность ==&lt;br /&gt;
Построение дерева наивным алгоритмом &amp;lt;tex&amp;gt;O(n^2)&amp;lt;/tex&amp;gt;. Существует алгоритм построения за &amp;lt;tex&amp;gt;O(n)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Препроцессинг для &amp;lt;tex&amp;gt;LCA&amp;lt;/tex&amp;gt; - &amp;lt;tex&amp;gt;O(n)&amp;lt;/tex&amp;gt; и ответ на запрос &amp;lt;tex&amp;gt;O(1)&amp;lt;/tex&amp;gt;. &lt;br /&gt;
В итоге получили &amp;lt;tex&amp;gt;RMQ&amp;lt;/tex&amp;gt; {построение &amp;lt;tex&amp;gt;O(n)&amp;lt;/tex&amp;gt;, запрос &amp;lt;tex&amp;gt;O(1)&amp;lt;/tex&amp;gt;}.&lt;br /&gt;
== См.также ==&lt;br /&gt;
*[[Сведение задачи LCA к задаче RMQ]]&lt;/div&gt;</summary>
		<author><name>Roman Livarsky</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Wiki.PNG&amp;diff=8431</id>
		<title>Файл:Wiki.PNG</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Wiki.PNG&amp;diff=8431"/>
				<updated>2011-05-06T03:44:12Z</updated>
		
		<summary type="html">&lt;p&gt;Roman Livarsky: Пример дерева для массива&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Пример дерева для массива&lt;/div&gt;</summary>
		<author><name>Roman Livarsky</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_RMQ_%D0%BA_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B5_LCA&amp;diff=8430</id>
		<title>Сведение задачи RMQ к задаче LCA</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_RMQ_%D0%BA_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B5_LCA&amp;diff=8430"/>
				<updated>2011-05-06T03:29:23Z</updated>
		
		<summary type="html">&lt;p&gt;Roman Livarsky: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Постановка задачи RMQ ==&lt;br /&gt;
Дан массив &amp;lt;tex&amp;gt;A[1..N]&amp;lt;/tex&amp;gt;. Поступают запросы вида &amp;lt;tex&amp;gt;(i, j)&amp;lt;/tex&amp;gt;, на каждый запрос требуется найти минимум в массиве &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;, начиная с позиции &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; и заканчивая позицией &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt;.&lt;br /&gt;
== Алгоритм ==&lt;br /&gt;
Декартово дерево(Сartesian tree) на массиве &amp;lt;tex&amp;gt;A[1..N]&amp;lt;/tex&amp;gt; - это бинарное дерево, рекурсивно определенное следующим образом:&lt;br /&gt;
* Корнем дерева является минимальное значение в массиве &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;, скажем &amp;lt;tex&amp;gt;A[i]&amp;lt;/tex&amp;gt;. &lt;br /&gt;
* Левым поддеревом является декартово дерево на массиве &amp;lt;tex&amp;gt;A[1..i-1]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
* Правым поддеревом является декартово дерево на массиве &amp;lt;tex&amp;gt;A[i+1..N]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Построим декартово дерево на массиве &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;. Тогда &amp;lt;tex&amp;gt;RMQ(i, j)&amp;lt;/tex&amp;gt; = &amp;lt;tex&amp;gt;LCA(A[i], A[j])&amp;lt;/tex&amp;gt;.&lt;br /&gt;
== Доказательство ==&lt;br /&gt;
Мы знаем что:&lt;br /&gt;
* 1. Любая вершина дерева всегда имеет меньшее значение, чем её дети. Тогда любой предок &amp;lt;tex&amp;gt;A[i]&amp;lt;/tex&amp;gt; или &amp;lt;tex&amp;gt;A[j]&amp;lt;/tex&amp;gt; меньше их самих.&lt;br /&gt;
* 2. Все вершины, которые лежат в дереве на пути от &amp;lt;tex&amp;gt;A[i]&amp;lt;/tex&amp;gt; до &amp;lt;tex&amp;gt;A[j]&amp;lt;/tex&amp;gt;, а так же их поддеревья образуют подмассив &amp;lt;tex&amp;gt;A[i..j]&amp;lt;/tex&amp;gt;(возьмём только правое поддерево у &amp;lt;tex&amp;gt;A[i]&amp;lt;/tex&amp;gt; и левое поддерево у &amp;lt;tex&amp;gt;A[j]&amp;lt;/tex&amp;gt;). Т.к. всё, что левее &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-го элемента в массиве, лежит левее &amp;lt;tex&amp;gt;A[i]&amp;lt;/tex&amp;gt; в дереве, и всё, что правее &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt;-го, лежит правее &amp;lt;tex&amp;gt;A[j]&amp;lt;/tex&amp;gt;. A дерево содержит все элементы &amp;lt;tex&amp;gt;A[1..N]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
* 3. Из всех вершин, определенных в п.2, &amp;lt;tex&amp;gt;LCA(A[i], A[j])&amp;lt;/tex&amp;gt; ближайший к корню и по п.1 имеет наименьшее значение в подмассиве &amp;lt;tex&amp;gt;A[i..j]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
== Сложность ==&lt;br /&gt;
Построение дерева наивным алгоритмом &amp;lt;tex&amp;gt;O(n^2)&amp;lt;/tex&amp;gt;. Существует алгоритм построение за &amp;lt;tex&amp;gt;O(n)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Препроцессинг для &amp;lt;tex&amp;gt;LCA&amp;lt;/tex&amp;gt; - &amp;lt;tex&amp;gt;O(n)&amp;lt;/tex&amp;gt; и ответ на запрос &amp;lt;tex&amp;gt;O(1)&amp;lt;/tex&amp;gt;. В итоге получили &amp;lt;tex&amp;gt;RMQ&amp;lt;/tex&amp;gt; {построение &amp;lt;tex&amp;gt;O(n)&amp;lt;/tex&amp;gt;, запрос &amp;lt;tex&amp;gt;O(1)&amp;lt;/tex&amp;gt;}.&lt;br /&gt;
== См.также ==&lt;br /&gt;
*[[Сведение задачи LCA к задаче RMQ]]&lt;/div&gt;</summary>
		<author><name>Roman Livarsky</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_RMQ_%D0%BA_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B5_LCA&amp;diff=8429</id>
		<title>Сведение задачи RMQ к задаче LCA</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_RMQ_%D0%BA_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B5_LCA&amp;diff=8429"/>
				<updated>2011-05-06T03:28:39Z</updated>
		
		<summary type="html">&lt;p&gt;Roman Livarsky: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Постановка задачи RMQ ==&lt;br /&gt;
Дан массив &amp;lt;tex&amp;gt;A[1..N]&amp;lt;/tex&amp;gt;. Поступают запросы вида &amp;lt;tex&amp;gt;(i, j)&amp;lt;/tex&amp;gt;, на каждый запрос требуется найти минимум в массиве &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;, начиная с позиции &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; и заканчивая позицией &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt;.&lt;br /&gt;
== Алгоритм ==&lt;br /&gt;
Декартово дерево(Сartesian tree) на массиве &amp;lt;tex&amp;gt;A[1..N]&amp;lt;/tex&amp;gt; - это бинарное дерево, рекурсивно определенное следующим образом:&lt;br /&gt;
* 1. Корнем дерева является минимальное значение в массиве &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;, скажем &amp;lt;tex&amp;gt;A[i]&amp;lt;/tex&amp;gt;. &lt;br /&gt;
* 2. Левым поддеревом является декартово дерево на массиве &amp;lt;tex&amp;gt;A[1..i-1]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
* 3. Правым поддеревом является декартово дерево на массиве &amp;lt;tex&amp;gt;A[i+1..N]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Построим декартово дерево на массиве &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;. Тогда &amp;lt;tex&amp;gt;RMQ(i, j)&amp;lt;/tex&amp;gt; = &amp;lt;tex&amp;gt;LCA(A[i], A[j])&amp;lt;/tex&amp;gt;.&lt;br /&gt;
== Доказательство ==&lt;br /&gt;
Мы знаем что:&lt;br /&gt;
* 1. Любая вершина дерева всегда имеет меньшее значение, чем её дети. Тогда любой предок &amp;lt;tex&amp;gt;A[i]&amp;lt;/tex&amp;gt; или &amp;lt;tex&amp;gt;A[j]&amp;lt;/tex&amp;gt; меньше их самих.&lt;br /&gt;
* 2. Все вершины, которые лежат в дереве на пути от &amp;lt;tex&amp;gt;A[i]&amp;lt;/tex&amp;gt; до &amp;lt;tex&amp;gt;A[j]&amp;lt;/tex&amp;gt;, а так же их поддеревья образуют подмассив &amp;lt;tex&amp;gt;A[i..j]&amp;lt;/tex&amp;gt;(возьмём только правое поддерево у &amp;lt;tex&amp;gt;A[i]&amp;lt;/tex&amp;gt; и левое поддерево у &amp;lt;tex&amp;gt;A[j]&amp;lt;/tex&amp;gt;). Т.к. всё, что левее &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-го элемента в массиве, лежит левее &amp;lt;tex&amp;gt;A[i]&amp;lt;/tex&amp;gt; в дереве, и всё, что правее &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt;-го, лежит правее &amp;lt;tex&amp;gt;A[j]&amp;lt;/tex&amp;gt;. A дерево содержит все элементы &amp;lt;tex&amp;gt;A[1..N]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
* 3. Из всех вершин, определенных в п.2, &amp;lt;tex&amp;gt;LCA(A[i], A[j])&amp;lt;/tex&amp;gt; ближайший к корню и по п.1 имеет наименьшее значение в подмассиве &amp;lt;tex&amp;gt;A[i..j]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
== Сложность ==&lt;br /&gt;
Построение дерева наивным алгоритмом &amp;lt;tex&amp;gt;O(n^2)&amp;lt;/tex&amp;gt;. Существует алгоритм построение за &amp;lt;tex&amp;gt;O(n)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Препроцессинг для &amp;lt;tex&amp;gt;LCA&amp;lt;/tex&amp;gt; - &amp;lt;tex&amp;gt;O(n)&amp;lt;/tex&amp;gt; и ответ на запрос &amp;lt;tex&amp;gt;O(1)&amp;lt;/tex&amp;gt;. В итоге получили &amp;lt;tex&amp;gt;RMQ&amp;lt;/tex&amp;gt; {построение &amp;lt;tex&amp;gt;O(n)&amp;lt;/tex&amp;gt;, запрос &amp;lt;tex&amp;gt;O(1)&amp;lt;/tex&amp;gt;}.&lt;br /&gt;
== См.также ==&lt;br /&gt;
*[[Сведение задачи LCA к задаче RMQ]]&lt;/div&gt;</summary>
		<author><name>Roman Livarsky</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_RMQ_%D0%BA_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B5_LCA&amp;diff=8428</id>
		<title>Сведение задачи RMQ к задаче LCA</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_RMQ_%D0%BA_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B5_LCA&amp;diff=8428"/>
				<updated>2011-05-06T03:20:02Z</updated>
		
		<summary type="html">&lt;p&gt;Roman Livarsky: Новая страница: «== Постановка задачи RMQ == Дан массив &amp;lt;tex&amp;gt;A[1..N]&amp;lt;/tex&amp;gt;. Поступают запросы вида &amp;lt;tex&amp;gt;(i, j)&amp;lt;/tex&amp;gt;, на каждый …»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Постановка задачи RMQ ==&lt;br /&gt;
Дан массив &amp;lt;tex&amp;gt;A[1..N]&amp;lt;/tex&amp;gt;. Поступают запросы вида &amp;lt;tex&amp;gt;(i, j)&amp;lt;/tex&amp;gt;, на каждый запрос требуется найти минимум в массиве &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;, начиная с позиции &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; и заканчивая позицией &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt;.&lt;br /&gt;
== Алгоритм ==&lt;br /&gt;
Декартово дерево(Сartesian tree) на массиве &amp;lt;tex&amp;gt;A[1..N]&amp;lt;/tex&amp;gt; - это бинарное дерево, рекурсивно определенное следующим образом:&lt;br /&gt;
* Корнем дерева является минимальное значение в массиве &amp;lt;tex&amp;gt;А&amp;lt;/tex&amp;gt;,скажем &amp;lt;tex&amp;gt;A[i]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
* Левым поддеревом является декартово дерево на массиве &amp;lt;tex&amp;gt;A[1..i-1]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
* Правым поддеревом является декартово дерево на массиве &amp;lt;tex&amp;gt;A[i+1..N]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Построим декартово дерево на массиве &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;. Тогда &amp;lt;tex&amp;gt;RMQ(i, j)&amp;lt;/tex&amp;gt; = &amp;lt;tex&amp;gt;LCA(A[i], A[j])&amp;lt;/tex&amp;gt;.&lt;br /&gt;
== Доказательство ==&lt;br /&gt;
Мы знаем что:&lt;br /&gt;
* 1. Любая вершина дерева всегда имеет меньшее значение, чем её дети. Тогда любой предок &amp;lt;tex&amp;gt;A[i]&amp;lt;/tex&amp;gt; или &amp;lt;tex&amp;gt;A[j]&amp;lt;/tex&amp;gt; меньше их самих.&lt;br /&gt;
* 2. Все вершины, которые лежат в дереве на пути от &amp;lt;tex&amp;gt;A[i]&amp;lt;/tex&amp;gt; до &amp;lt;tex&amp;gt;A[j]&amp;lt;/tex&amp;gt;, а так же их поддеревья образуют подмассив &amp;lt;tex&amp;gt;A[i..j]&amp;lt;/tex&amp;gt;(возьмём только правое поддерево у &amp;lt;tex&amp;gt;A[i]&amp;lt;/tex&amp;gt; и левое поддерево у &amp;lt;tex&amp;gt;A[j]&amp;lt;/tex&amp;gt;). Т.к. всё, что левее &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-го элемента в массиве, лежит левее &amp;lt;tex&amp;gt;A[i]&amp;lt;/tex&amp;gt; в дереве, и всё, что правее &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt;-го, лежит правее &amp;lt;tex&amp;gt;A[j]&amp;lt;/tex&amp;gt;. A дерево содержит все элементы &amp;lt;tex&amp;gt;A[1..N]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
* 3. Из всех вершин, определенных в п.2, &amp;lt;tex&amp;gt;LCA(A[i], A[j])&amp;lt;/tex&amp;gt; ближайший к корню и по п.1 имеет наименьшее значение в подмассиве &amp;lt;tex&amp;gt;A[i..j]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
== Сложность ==&lt;br /&gt;
Построение дерева наивным алгоритмом &amp;lt;tex&amp;gt;O(n^2)&amp;lt;/tex&amp;gt;. Существует алгоритм построение за &amp;lt;tex&amp;gt;O(n)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Препроцессинг для &amp;lt;tex&amp;gt;LCA O(n)&amp;lt;/tex&amp;gt; и ответ на запрос &amp;lt;tex&amp;gt;O(1)&amp;lt;/tex&amp;gt;. В итоге получили &amp;lt;tex&amp;gt;RMQ&amp;lt;/tex&amp;gt; {построение &amp;lt;tex&amp;gt;O(n)&amp;lt;/tex&amp;gt;, запрос &amp;lt;tex&amp;gt;O(1)&amp;lt;/tex&amp;gt;}.&lt;br /&gt;
== См.также ==&lt;br /&gt;
*[[Сведение задачи RMQ к задаче LCA]]&lt;/div&gt;</summary>
		<author><name>Roman Livarsky</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%BE_%D0%BD%D0%B0%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D1%8F%D1%85_%D0%BA_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B5_%D0%BE_%D0%BF%D0%BE%D1%82%D0%BE%D0%BA%D0%B5_%D0%BC%D0%B8%D0%BD%D0%B8%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D1%81%D1%82%D0%BE%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D0%B8&amp;diff=7101</id>
		<title>Сведение задачи о назначениях к задаче о потоке минимальной стоимости</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%BE_%D0%BD%D0%B0%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D1%8F%D1%85_%D0%BA_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B5_%D0%BE_%D0%BF%D0%BE%D1%82%D0%BE%D0%BA%D0%B5_%D0%BC%D0%B8%D0%BD%D0%B8%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D1%81%D1%82%D0%BE%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D0%B8&amp;diff=7101"/>
				<updated>2011-01-15T22:02:03Z</updated>
		
		<summary type="html">&lt;p&gt;Roman Livarsky: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Постановка задачи ==&lt;br /&gt;
* Дана квадратная матрица &amp;lt;tex&amp;gt;A_{N\times N}&amp;lt;/tex&amp;gt;. Нужно выбрать в ней &amp;lt;tex&amp;gt;N&amp;lt;/tex&amp;gt; элементов так, чтобы в каждой строке и столбце был выбран только один элемент, а сумма значений этих элементов была наименьшей.&lt;br /&gt;
* Имеется &amp;lt;tex&amp;gt;N&amp;lt;/tex&amp;gt; заказов и &amp;lt;tex&amp;gt;N&amp;lt;/tex&amp;gt; станков. Про каждый заказ известна стоимость его изготовления на каждом станке. На каждом станке можно выполнять только один заказ. Требуется распределить все заказы по станкам так, чтобы минимизировать суммарную стоимость.&lt;br /&gt;
&lt;br /&gt;
== Сведение к задаче о потоке минимальной стоимости ==&lt;br /&gt;
[[Файл:pic.PNG|thumb|right|275x250px|Пример построенного графа для матрицы А]]&lt;br /&gt;
Построим двудольный граф &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; следующим образом:&lt;br /&gt;
* Имеется исток &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; и сток &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt;.&lt;br /&gt;
* В первой доле находятся &amp;lt;tex&amp;gt;N&amp;lt;/tex&amp;gt; вершин, соответствующие строкам матрицы или заказам. &lt;br /&gt;
* Во второй &amp;lt;tex&amp;gt;N&amp;lt;/tex&amp;gt; вершин, соответствующие столбцам матрицы или станкам.&lt;br /&gt;
* Между каждой вершиной &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; первой доли и каждой вершиной &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt; второй доли проведём ребро с пропускной способностью 1 и стоимостью &amp;lt;tex&amp;gt;A_{ij}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
* От истока &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; проведём рёбра ко всем вершинам &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; первой доли с пропускной способностью 1 и стоимостью 0.&lt;br /&gt;
* От каждой вершины второй доли &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt; к стоку &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt; проведём ребро с пропускной способностью 1 и стоимостью 0.&lt;br /&gt;
&lt;br /&gt;
Найдём в полученном графе &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; максимальный [[Поток минимальной стоимости|поток минимальной стоимости]]. &amp;lt;br /&amp;gt;&lt;br /&gt;
Понятно, что величина потока будет равна &amp;lt;tex&amp;gt;N&amp;lt;/tex&amp;gt;. Заметим, что для каждой вершины &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; из первой доли найдётся только одна вершина &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt; из второй доли, такая, что поток &amp;lt;tex&amp;gt;f(i, j) = 1&amp;lt;/tex&amp;gt;. Поскольку найденный поток имеет минимальную стоимость, то сумма стоимостей выбранных рёбер будет наименьшей из возможных. Поэтому, это взаимно однозначное соответствие между вершинами первой доли и вершинами второй доли является решением задачи.&lt;br /&gt;
&lt;br /&gt;
== Асимптотика == &lt;br /&gt;
Асимптотика этого решения равна асимптотике алгоритма, выбранного для поиска потока.&lt;br /&gt;
== Источники ==&lt;br /&gt;
[http://e-maxx.ru/algo/assignment_mincostflow Задача о назначениях. Решение с помощью min-cost-flow]&lt;/div&gt;</summary>
		<author><name>Roman Livarsky</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Pic.PNG&amp;diff=7097</id>
		<title>Файл:Pic.PNG</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Pic.PNG&amp;diff=7097"/>
				<updated>2011-01-15T21:58:17Z</updated>
		
		<summary type="html">&lt;p&gt;Roman Livarsky: загружена новая версия «Файл:Pic.PNG»:&amp;amp;#32;Пример построенного графа для данной матрицы А&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Пример построенного графа для данной матрицы А&lt;/div&gt;</summary>
		<author><name>Roman Livarsky</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%BE_%D0%BD%D0%B0%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D1%8F%D1%85_%D0%BA_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B5_%D0%BE_%D0%BF%D0%BE%D1%82%D0%BE%D0%BA%D0%B5_%D0%BC%D0%B8%D0%BD%D0%B8%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D1%81%D1%82%D0%BE%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D0%B8&amp;diff=7080</id>
		<title>Сведение задачи о назначениях к задаче о потоке минимальной стоимости</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%BE_%D0%BD%D0%B0%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D1%8F%D1%85_%D0%BA_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B5_%D0%BE_%D0%BF%D0%BE%D1%82%D0%BE%D0%BA%D0%B5_%D0%BC%D0%B8%D0%BD%D0%B8%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D1%81%D1%82%D0%BE%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D0%B8&amp;diff=7080"/>
				<updated>2011-01-15T21:40:20Z</updated>
		
		<summary type="html">&lt;p&gt;Roman Livarsky: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Постановка задачи ==&lt;br /&gt;
* Дана квадратная матрица &amp;lt;tex&amp;gt;A_{N\times N}&amp;lt;/tex&amp;gt;. Нужно выбрать в ней &amp;lt;tex&amp;gt;N&amp;lt;/tex&amp;gt; элементов так, чтобы в каждой строке и столбце был выбран только один элемент, а сумма значений этих элементов была наименьшей.&lt;br /&gt;
* Имеется &amp;lt;tex&amp;gt;N&amp;lt;/tex&amp;gt; заказов и &amp;lt;tex&amp;gt;N&amp;lt;/tex&amp;gt; станков. Про каждый заказ известна стоимость его изготовления на каждом станке. На каждом станке можно выполнять только один заказ. Требуется распределить все заказы по станкам так, чтобы минимизировать суммарную стоимость.&lt;br /&gt;
&lt;br /&gt;
== Сведение к задаче о потоке минимальной стоимости ==&lt;br /&gt;
[[Файл:pic.PNG|thumb|right|275x250px|Пример построенного графа для матрицы А]]&lt;br /&gt;
Построим двудольный граф &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; следующим образом:&lt;br /&gt;
* Имеется исток &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; и сток &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt;.&lt;br /&gt;
* В первой доле находятся &amp;lt;tex&amp;gt;N&amp;lt;/tex&amp;gt; вершин, соответствующие строкам матрицы или заказам. &lt;br /&gt;
* Во второй &amp;lt;tex&amp;gt;N&amp;lt;/tex&amp;gt; вершин, соответствующие столбцам матрицы или станкам.&lt;br /&gt;
* Между каждой вершиной &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; первой доли и каждой вершиной &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt; второй доли проведём ребро с пропускной способностью 1 и стоимостью &amp;lt;tex&amp;gt;A_{ij}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
* От истока &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; проведём рёбра ко всем вершинам &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; первой доли с пропускной способностью 1 и стоимостью 0.&lt;br /&gt;
* От каждой вершины второй доли &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt; к стоку &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt; проведём ребро с пропускной способностью 1 и стоимостью 0.&lt;br /&gt;
&lt;br /&gt;
Найдём в полученном графе &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; максимальный [[Поток минимальной стоимости|поток минимальной стоимости]]. &amp;lt;br /&amp;gt;&lt;br /&gt;
Понятно, что величина потока будет равна &amp;lt;tex&amp;gt;N&amp;lt;/tex&amp;gt;. Заметим, что для каждой вершины &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; из первой доли найдётся только одна вершина &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt; из второй доли, такая, что поток &amp;lt;tex&amp;gt;f(i, j) = 1&amp;lt;/tex&amp;gt;. Поскольку найденный поток имеет минимальную стоимость, то сумма стоимостей выбранных рёбер будет наименьшей из возможных. Поэтому, это взаимно однозначное соответствие между вершинами первой доли и вершинами второй доли является решением задачи.&lt;br /&gt;
&lt;br /&gt;
== Асимптотика == &lt;br /&gt;
Очевидно, асимптотика этого решения составляет &amp;lt;tex&amp;gt;O(N^5)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
== Источники ==&lt;br /&gt;
[http://e-maxx.ru/algo/assignment_mincostflow Задача о назначениях. Решение с помощью min-cost-flow]&lt;/div&gt;</summary>
		<author><name>Roman Livarsky</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Pic.PNG&amp;diff=7074</id>
		<title>Файл:Pic.PNG</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Pic.PNG&amp;diff=7074"/>
				<updated>2011-01-15T21:37:18Z</updated>
		
		<summary type="html">&lt;p&gt;Roman Livarsky: Пример построенного графа для данной матрицы А&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Пример построенного графа для данной матрицы А&lt;/div&gt;</summary>
		<author><name>Roman Livarsky</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%BE_%D0%BD%D0%B0%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D1%8F%D1%85_%D0%BA_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B5_%D0%BE_%D0%BF%D0%BE%D1%82%D0%BE%D0%BA%D0%B5_%D0%BC%D0%B8%D0%BD%D0%B8%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D1%81%D1%82%D0%BE%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D0%B8&amp;diff=6662</id>
		<title>Сведение задачи о назначениях к задаче о потоке минимальной стоимости</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%BE_%D0%BD%D0%B0%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D1%8F%D1%85_%D0%BA_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B5_%D0%BE_%D0%BF%D0%BE%D1%82%D0%BE%D0%BA%D0%B5_%D0%BC%D0%B8%D0%BD%D0%B8%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D1%81%D1%82%D0%BE%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D0%B8&amp;diff=6662"/>
				<updated>2011-01-14T08:41:29Z</updated>
		
		<summary type="html">&lt;p&gt;Roman Livarsky: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Постановка задачи ==&lt;br /&gt;
* Дана квадратная матрица &amp;lt;tex&amp;gt;A_{N\times N}&amp;lt;/tex&amp;gt;. Нужно выбрать в ней &amp;lt;tex&amp;gt;N&amp;lt;/tex&amp;gt; элементов так, чтобы в каждой строке и столбце был выбран только один элемент, а сумма значений этих элементов была наименьшей.&lt;br /&gt;
* Имеется &amp;lt;tex&amp;gt;N&amp;lt;/tex&amp;gt; заказов и &amp;lt;tex&amp;gt;N&amp;lt;/tex&amp;gt; станков. Про каждый заказ известна стоимость его изготовления на каждом станке. На каждом станке можно выполнять только один заказ. Требуется распределить все заказы по станкам так, чтобы минимизировать суммарную стоимость.&lt;br /&gt;
&lt;br /&gt;
== Сведение к задаче о потоке минимальной стоимости ==&lt;br /&gt;
Построим двудольный граф &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; следующим образом:&lt;br /&gt;
* Имеется сток &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; и исток &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt;.&lt;br /&gt;
* В первой доле находятся &amp;lt;tex&amp;gt;N&amp;lt;/tex&amp;gt; вершин, соответствующие строкам матрицы или заказам. &lt;br /&gt;
* Во второй &amp;lt;tex&amp;gt;N&amp;lt;/tex&amp;gt; вершин, соответствующие столбцам матрицы или станкам.&lt;br /&gt;
* Между каждой вершиной &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; первой доли и каждой вершиной &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt; второй доли проведём ребро с пропускной способностью 1 и стоимостью &amp;lt;tex&amp;gt;A_{ij}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
* От истока &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; проведём рёбра ко всем вершинам &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; первой доли с пропускной способностью 1 и стоимостью 0.&lt;br /&gt;
* От каждой вершины второй доли &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt; к стоку &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt; проведём ребро с пропускной способностью 1 и стоимостью 0.&lt;br /&gt;
&lt;br /&gt;
Найдём в полученном графе &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; максимальный [[Поток минимальной стоимости|поток минимальной стоимости]]. &amp;lt;br /&amp;gt;&lt;br /&gt;
Понятно, что величина потока будет равна &amp;lt;tex&amp;gt;N&amp;lt;/tex&amp;gt;. Заметим, что для каждой вершины &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; из первой доли найдётся только одна вершина &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt; из второй доли, такая, что поток &amp;lt;tex&amp;gt;F_{ij} = 1&amp;lt;/tex&amp;gt;. Поскольку найденный поток имеет минимальную стоимость, то сумма стоимостей выбранных рёбер будет наименьшей из возможных. Поэтому, это взаимно однозначное соответствие между вершинами первой доли и вершинами второй доли является решением задачи.&lt;br /&gt;
&lt;br /&gt;
== Источники ==&lt;br /&gt;
[http://e-maxx.ru/algo/assignment_mincostflow Задача о назначениях. Решение с помощью min-cost-flow]&lt;/div&gt;</summary>
		<author><name>Roman Livarsky</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%BE_%D0%BD%D0%B0%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D1%8F%D1%85_%D0%BA_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B5_%D0%BE_%D0%BF%D0%BE%D1%82%D0%BE%D0%BA%D0%B5_%D0%BC%D0%B8%D0%BD%D0%B8%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D1%81%D1%82%D0%BE%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D0%B8&amp;diff=6661</id>
		<title>Сведение задачи о назначениях к задаче о потоке минимальной стоимости</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%BE_%D0%BD%D0%B0%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D1%8F%D1%85_%D0%BA_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B5_%D0%BE_%D0%BF%D0%BE%D1%82%D0%BE%D0%BA%D0%B5_%D0%BC%D0%B8%D0%BD%D0%B8%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D1%81%D1%82%D0%BE%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D0%B8&amp;diff=6661"/>
				<updated>2011-01-14T08:36:37Z</updated>
		
		<summary type="html">&lt;p&gt;Roman Livarsky: Новая страница: «== Постановка задачи == * Дана квадратная матрица &amp;lt;tex&amp;gt;A_{N\times N}&amp;lt;/tex&amp;gt;. Нужно выбрать в ней &amp;lt;tex&amp;gt;N&amp;lt;/tex&amp;gt; э…»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Постановка задачи ==&lt;br /&gt;
* Дана квадратная матрица &amp;lt;tex&amp;gt;A_{N\times N}&amp;lt;/tex&amp;gt;. Нужно выбрать в ней &amp;lt;tex&amp;gt;N&amp;lt;/tex&amp;gt; элементов так, чтобы в каждой строке и столбце был выбран только один элемент, а сумма значений этих элементов была наименьшей.&lt;br /&gt;
* Имеется &amp;lt;tex&amp;gt;N&amp;lt;/tex&amp;gt; заказов и &amp;lt;tex&amp;gt;N&amp;lt;/tex&amp;gt; станков. Про каждый заказ известна стоимость его изготовления на каждом станке. На каждом станке можно выполнять только один заказ. Требуется распределить все заказы по станкам так, чтобы минимизировать суммарную стоимость.&lt;br /&gt;
&lt;br /&gt;
== Сведение к задаче о потоке минимальной стоимости ==&lt;br /&gt;
Построим двудольный граф &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; следующим образом:&lt;br /&gt;
* Имеется сток &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; и исток &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt;.&lt;br /&gt;
* В первой доле находятся &amp;lt;tex&amp;gt;N&amp;lt;/tex&amp;gt; вершин, соответствующие строкам матрицы или заказам. &lt;br /&gt;
* Во второй &amp;lt;tex&amp;gt;N&amp;lt;/tex&amp;gt; вершин, соответствующие столбцам матрицы или станкам.&lt;br /&gt;
* Между каждой вершиной &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; первой доли и каждой вершиной &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt; второй доли проведём ребро с пропускной способностью 1 и стоимостью &amp;lt;tex&amp;gt;A_{ij}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
* От истока &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; проведём рёбра ко всем вершинам &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; первой доли с пропускной способностью 1 и стоимостью 0.&lt;br /&gt;
* От каждой вершины второй доли &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt; к стоку &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt; проведём ребро с пропускной способностью 1 и стоимостью 0.&lt;br /&gt;
&lt;br /&gt;
Найдём в полученном графе &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; максимальный [[Поток минимальной стоимости|поток минимальной стоимости]]. &amp;lt;br /&amp;gt;&lt;br /&gt;
Понятно, что величина потока будет равна &amp;lt;tex&amp;gt;N&amp;lt;/tex&amp;gt;. Заметим, что для каждой вершины &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; из первой доли найдётся только одна вершина &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt; из второй доли, такая, что поток &amp;lt;tex&amp;gt;F_{ij} = 1&amp;lt;/tex&amp;gt;. Поскольку найденный поток имеет минимальную стоимость, то сумма стоимостей выбранных рёбер будет наименьшей из возможных. Поэтому, это взаимно однозначное соответствие между вершинами первой доли и вершинами второй доли является решением задачи.&lt;/div&gt;</summary>
		<author><name>Roman Livarsky</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%94%D0%B8%D1%80%D0%B0%D0%BA%D0%B0&amp;diff=4482</id>
		<title>Теорема Дирака</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%94%D0%B8%D1%80%D0%B0%D0%BA%D0%B0&amp;diff=4482"/>
				<updated>2010-10-28T03:02:49Z</updated>
		
		<summary type="html">&lt;p&gt;Roman Livarsky: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Если &amp;lt;tex&amp;gt;n &amp;gt; 3&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;deg\ v \ge n/2&amp;lt;/tex&amp;gt;  для любой вершины &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; неориентированного графа  &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, то  &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; - гамильтонов граф.&lt;br /&gt;
|proof=&lt;br /&gt;
По [[Теорема Хватала|теореме Хватала]]: для &amp;lt;tex&amp;gt;\forall k&amp;lt;/tex&amp;gt; верна импликация &amp;lt;tex&amp;gt;d_k \le k &amp;lt; n/2 \Rightarrow d_{n-k} \ge n-k&amp;lt;/tex&amp;gt; &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Источники ==&lt;br /&gt;
Харари Ф. - Теория графов. '''ISBN 978-5-397-00622-4'''&lt;/div&gt;</summary>
		<author><name>Roman Livarsky</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%9E%D1%80%D0%B5&amp;diff=4481</id>
		<title>Теорема Оре</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%9E%D1%80%D0%B5&amp;diff=4481"/>
				<updated>2010-10-28T02:59:29Z</updated>
		
		<summary type="html">&lt;p&gt;Roman Livarsky: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Если &amp;lt;tex&amp;gt;n \ge  3&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;deg\ u + deg\ v \ge n&amp;lt;/tex&amp;gt;  для любых двух различных несмежных вершин &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; неориентированного графа  &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, то  &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; - гамильтонов граф.&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
&lt;br /&gt;
Пусть, от противного, существует граф &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, который удовлетворяет условию теоремы, но не является гамильтоновым графом.&lt;br /&gt;
Будем добавлять к нему новые ребра до тех пор, пока не получим максимальный негамильтонов граф &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt;. В силу того, что мы только добавляли ребра, условие теоремы не нарушилось.&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;u,v&amp;lt;/tex&amp;gt; несмежные вершины в полученном графе &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt;. Если добавить ребро &amp;lt;tex&amp;gt;uv&amp;lt;/tex&amp;gt;, появится гамильтонов цикл. Тогда путь &amp;lt;tex&amp;gt;(u,v)&amp;lt;/tex&amp;gt; - гамильтонов.&lt;br /&gt;
&lt;br /&gt;
Для вершин &amp;lt;tex&amp;gt;u,v&amp;lt;/tex&amp;gt; выполнено &amp;lt;tex&amp;gt;deg\ u + deg\ v \ge n.&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
По принципу Дирихле всегда найдутся две смежные вершины &amp;lt;tex&amp;gt; t_1,t_2&amp;lt;/tex&amp;gt; на пути &amp;lt;tex&amp;gt;(u,v)&amp;lt;/tex&amp;gt; ,т.е. &amp;lt;tex&amp;gt;u..t_1t_2..v&amp;lt;/tex&amp;gt; , такие, что существует ребро &amp;lt;tex&amp;gt;ut_2&amp;lt;/tex&amp;gt; и ребро &amp;lt;tex&amp;gt;t_1v.&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Действительно, пусть &amp;lt;tex&amp;gt;S=&amp;lt;/tex&amp;gt; { &amp;lt;tex&amp;gt; i| e_i=ut_{i+1} \in EG&amp;lt;/tex&amp;gt; } и &amp;lt;tex&amp;gt;T = &amp;lt;/tex&amp;gt; { &amp;lt;tex&amp;gt; i| f_i=t_iv \in EG&amp;lt;/tex&amp;gt; }&lt;br /&gt;
&lt;br /&gt;
Имеем: &amp;lt;tex&amp;gt;\left\vert S \right\vert + \left\vert T \right\vert = deg\ u + deg\ v \ge n &amp;lt;/tex&amp;gt;, но &amp;lt;tex&amp;gt;\left\vert S + T \right\vert &amp;lt; n.&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда &amp;lt;tex&amp;gt;\left\vert S\cap T \right\vert = \left\vert S \right\vert + \left\vert T \right\vert - \left\vert S+T \right\vert &amp;gt; 0&amp;lt;/tex&amp;gt; т.е. &amp;lt;tex&amp;gt;\exists i| ut_{i+1}\in EG&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; t_iv \in EG.&amp;lt;/tex&amp;gt;&lt;br /&gt;
Получили противоречие, т.к. &amp;lt;tex&amp;gt;u..t_1v..t_2u&amp;lt;/tex&amp;gt; - гамильтонов цикл.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Источники ==&lt;br /&gt;
1. Асанов М. О., Баранский В. А., Расин В. В. - Дискретная математика: Графы, матроиды, алгоритмы. '''ISBN 978-5-8114-1068-2'''&amp;lt;br /&amp;gt;&lt;br /&gt;
2. Харари Ф. - Теория графов. '''ISBN 978-5-397-00622-4'''&lt;/div&gt;</summary>
		<author><name>Roman Livarsky</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%94%D0%B8%D1%80%D0%B0%D0%BA%D0%B0&amp;diff=3932</id>
		<title>Теорема Дирака</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%94%D0%B8%D1%80%D0%B0%D0%BA%D0%B0&amp;diff=3932"/>
				<updated>2010-10-14T02:13:33Z</updated>
		
		<summary type="html">&lt;p&gt;Roman Livarsky: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Если &amp;lt;tex&amp;gt;n &amp;gt; 3&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;deg\ v \ge n/2&amp;lt;/tex&amp;gt;  для любой вершины &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; неориентированного графа  &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, то  &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; - гамильтонов граф.&lt;br /&gt;
|proof=&lt;br /&gt;
По [[Теорема Хватала|теореме Хватала]]: для &amp;lt;tex&amp;gt;\forall k&amp;lt;/tex&amp;gt; верна импликация &amp;lt;tex&amp;gt;d_k \le k &amp;lt; n/2 \Rightarrow d_{n-k} \ge n-k&amp;lt;/tex&amp;gt; &lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Roman Livarsky</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%9E%D1%80%D0%B5&amp;diff=3930</id>
		<title>Теорема Оре</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%9E%D1%80%D0%B5&amp;diff=3930"/>
				<updated>2010-10-14T02:11:54Z</updated>
		
		<summary type="html">&lt;p&gt;Roman Livarsky: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Если &amp;lt;tex&amp;gt;n \ge  3&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;deg\ u + deg\ v \ge n&amp;lt;/tex&amp;gt;  для любых двух различных несмежных вершин &amp;lt;tex&amp;gt;u&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; неориентированного графа  &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, то  &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; - гамильтонов граф.&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
&lt;br /&gt;
Пусть, от противного, существует граф &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt;, который удовлетворяет условию теоремы, но не является гамильтоновым графом.&lt;br /&gt;
Будем добавлять к нему новые ребра до тех пор, пока не получим максимальный негамильтонов граф &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt;. В силу того, что мы только добавляли ребра, условие теоремы не нарушилось.&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;u,v&amp;lt;/tex&amp;gt; несмежные вершины в полученном графе &amp;lt;tex&amp;gt;G'&amp;lt;/tex&amp;gt;. Если добавить ребро &amp;lt;tex&amp;gt;uv&amp;lt;/tex&amp;gt;, появится гамильтонов цикл. Тогда путь &amp;lt;tex&amp;gt;(u,v)&amp;lt;/tex&amp;gt; - гамильтонов.&lt;br /&gt;
&lt;br /&gt;
Для вершин &amp;lt;tex&amp;gt;u,v&amp;lt;/tex&amp;gt; выполнено &amp;lt;tex&amp;gt;deg\ u + deg\ v \ge n.&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
По принципу Дирихле всегда найдутся две смежные вершины &amp;lt;tex&amp;gt; t_1,t_2&amp;lt;/tex&amp;gt; на пути &amp;lt;tex&amp;gt;(u,v)&amp;lt;/tex&amp;gt; ,т.е. &amp;lt;tex&amp;gt;u..t_1t_2..v&amp;lt;/tex&amp;gt; , такие, что существует ребро &amp;lt;tex&amp;gt;ut_2&amp;lt;/tex&amp;gt; и ребро &amp;lt;tex&amp;gt;t_1v.&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Действительно, пусть &amp;lt;tex&amp;gt;S=&amp;lt;/tex&amp;gt; { &amp;lt;tex&amp;gt; i| e_i=ut_{i+1} \in EG&amp;lt;/tex&amp;gt; } и &amp;lt;tex&amp;gt;T = &amp;lt;/tex&amp;gt; { &amp;lt;tex&amp;gt; i| f_i=t_iv \in EG&amp;lt;/tex&amp;gt; }&lt;br /&gt;
&lt;br /&gt;
Имеем: &amp;lt;tex&amp;gt;\left\vert S \right\vert + \left\vert T \right\vert = deg\ u + deg\ v \ge n &amp;lt;/tex&amp;gt;, но &amp;lt;tex&amp;gt;\left\vert S + T \right\vert &amp;lt; n.&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда &amp;lt;tex&amp;gt;\left\vert S\cap T \right\vert = \left\vert S \right\vert + \left\vert T \right\vert - \left\vert S+T \right\vert &amp;gt; 0&amp;lt;/tex&amp;gt; т.е. &amp;lt;tex&amp;gt;\exists i| ut_{i+1}\in EG&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; t_iv \in EG.&amp;lt;/tex&amp;gt;&lt;br /&gt;
Получили противоречие, т.к. &amp;lt;tex&amp;gt;u..t_1v..t_2u&amp;lt;/tex&amp;gt; - гамильтонов цикл.&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Roman Livarsky</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%94%D0%B8%D1%80%D0%B0%D0%BA%D0%B0&amp;diff=3927</id>
		<title>Теорема Дирака</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%94%D0%B8%D1%80%D0%B0%D0%BA%D0%B0&amp;diff=3927"/>
				<updated>2010-10-14T02:02:29Z</updated>
		
		<summary type="html">&lt;p&gt;Roman Livarsky: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Если &amp;lt;tex&amp;gt;\ n &amp;gt; 3&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;deg\ v \ge n/2&amp;lt;/tex&amp;gt;  для любой вершины &amp;lt;tex&amp;gt;\ v&amp;lt;/tex&amp;gt; неориентированного графа  &amp;lt;tex&amp;gt;\ G&amp;lt;/tex&amp;gt;, то  &amp;lt;tex&amp;gt;\ G&amp;lt;/tex&amp;gt; - гамильтонов граф.&lt;br /&gt;
|proof=&lt;br /&gt;
По [[Теорема Хватала|теореме Хватала]]: для &amp;lt;tex&amp;gt;\forall k&amp;lt;/tex&amp;gt; верна импликация &amp;lt;tex&amp;gt;d_k \le k &amp;lt; n/2 \Rightarrow d_{n-k} \ge n-k&amp;lt;/tex&amp;gt; &lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Roman Livarsky</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%94%D0%B8%D1%80%D0%B0%D0%BA%D0%B0&amp;diff=3671</id>
		<title>Теорема Дирака</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%94%D0%B8%D1%80%D0%B0%D0%BA%D0%B0&amp;diff=3671"/>
				<updated>2010-10-11T21:09:04Z</updated>
		
		<summary type="html">&lt;p&gt;Roman Livarsky: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Если &amp;lt;math&amp;gt;\ n &amp;gt; 3&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;deg\ v \ge n/2&amp;lt;/math&amp;gt;  для любой вершины &amp;lt;math&amp;gt;\ v&amp;lt;/math&amp;gt; неориентированного графа  '''G''', то  '''G''' - гамильтонов граф.&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
По теореме Хватала: '''для''' &amp;lt;math&amp;gt;\forall k&amp;lt;/math&amp;gt; '''верна импликация''' &amp;lt;math&amp;gt;d_k \le k &amp;lt; n/2 \Rightarrow d_{n-k} \ge n-k&amp;lt;/math&amp;gt; &lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Roman Livarsky</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%9E%D1%80%D0%B5&amp;diff=3670</id>
		<title>Теорема Оре</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%9E%D1%80%D0%B5&amp;diff=3670"/>
				<updated>2010-10-11T21:00:25Z</updated>
		
		<summary type="html">&lt;p&gt;Roman Livarsky: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Если &amp;lt;math&amp;gt;n \ge  3&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;deg\ u + deg \ v \ge n&amp;lt;/math&amp;gt;  для любых двух различных несмежных вершин &amp;lt;math&amp;gt;\ u&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;\ v&amp;lt;/math&amp;gt; неориентированного графа  '''G''', то  '''G''' - гамильтонов граф.&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
&lt;br /&gt;
Пусть, от противного, существует граф '''G''', который удовлетворяет условию теоремы, но не является гамильтоновым графом.&lt;br /&gt;
Будем добавлять к нему новые ребра до тех пор, пока не получим максимальный негамильтонов граф '''G''''. В силу того, что мы только добавляли ребра, условие теоремы не нарушилось.&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;\ u,v&amp;lt;/math&amp;gt; несмежные вершины в полученном графе '''G''''. Если добавить ребро &amp;lt;math&amp;gt;\ uv&amp;lt;/math&amp;gt;, появится гамильтонов цикл. Тогда путь &amp;lt;math&amp;gt;\ (u,v)&amp;lt;/math&amp;gt; - гамильтонов.&lt;br /&gt;
&lt;br /&gt;
Для вершин &amp;lt;math&amp;gt;\ u,v&amp;lt;/math&amp;gt; выполнено &amp;lt;math&amp;gt;deg\ u + deg \ v \ge n.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
По принципу Дирихле всегда найдутся две смежные вершины &amp;lt;math&amp;gt;\ t_1,t_2&amp;lt;/math&amp;gt; на пути &amp;lt;math&amp;gt;\ (u,v)&amp;lt;/math&amp;gt; ,т.е. &amp;lt;math&amp;gt;\ u..t_1t_2..v&amp;lt;/math&amp;gt; , такие, что существует ребро &amp;lt;math&amp;gt;\ ut_2&amp;lt;/math&amp;gt; и ребро &amp;lt;math&amp;gt;\ t_1v.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Действительно, пусть &amp;lt;math&amp;gt;\ S = &amp;lt;/math&amp;gt; { &amp;lt;math&amp;gt; i| e_i=ut_{i+1} \in EG&amp;lt;/math&amp;gt; } и &amp;lt;math&amp;gt;\ T = &amp;lt;/math&amp;gt; { &amp;lt;math&amp;gt; i| f_i=t_iv \in EG&amp;lt;/math&amp;gt; }&lt;br /&gt;
&lt;br /&gt;
Имеем: &amp;lt;math&amp;gt;\left\vert S \right\vert + \left\vert T \right\vert = deg\ u + deg \ v \ge n &amp;lt;/math&amp;gt;, но &amp;lt;math&amp;gt;\left\vert S + T \right\vert &amp;lt; n.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда &amp;lt;math&amp;gt;\left\vert S\cap T \right\vert = \left\vert S \right\vert + \left\vert T \right\vert - \left\vert S+T \right\vert &amp;gt; 0&amp;lt;/math&amp;gt; т.е. &amp;lt;math&amp;gt;\exists i| ut_{i+1}\in EG&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt; t_iv \in EG.&amp;lt;/math&amp;gt;&lt;br /&gt;
Получили противоречие, т.к. &amp;lt;math&amp;gt;\ u..t_1v..t_2u&amp;lt;/math&amp;gt; - гамильтонов цикл.&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Roman Livarsky</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%9E%D1%80%D0%B5&amp;diff=3560</id>
		<title>Теорема Оре</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%9E%D1%80%D0%B5&amp;diff=3560"/>
				<updated>2010-10-10T23:32:11Z</updated>
		
		<summary type="html">&lt;p&gt;Roman Livarsky: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Если &amp;lt;math&amp;gt;n \ge  3&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;deg\ u + deg \ v \ge n&amp;lt;/math&amp;gt;  для любых двух различных несмежных вершин &amp;lt;math&amp;gt;\ u&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;\ v&amp;lt;/math&amp;gt; неориентированного графа  '''G''', то  '''G''' - гамильтонов граф.&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
&lt;br /&gt;
Пусть, от противного, существует граф '''G''', который удовлетворяет условию теоремы, но не является гамильтоновым графом.&lt;br /&gt;
Будем добавлять к нему новые ребра до тех пор, пока не получим максимальный негамильтонов граф '''G''''. В силу того, что мы только добавляли ребра, условие теоремы не нарушилось.&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;\ u,v&amp;lt;/math&amp;gt; несмежные вершины в полученном графе '''G''''. Если добавить ребро &amp;lt;math&amp;gt;\ uv&amp;lt;/math&amp;gt;, появится гамильтонов цикл. Тогда путь &amp;lt;math&amp;gt;\ (u,v)&amp;lt;/math&amp;gt; - гамильтонов.&lt;br /&gt;
&lt;br /&gt;
Для вершин &amp;lt;math&amp;gt;\ u,v&amp;lt;/math&amp;gt; выполнено &amp;lt;math&amp;gt;deg\ u + deg \ v \ge n.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
По принципу Дирихле, всегда найдутся две смежные вершины &amp;lt;math&amp;gt;\ t_1,t_2&amp;lt;/math&amp;gt; на пути &amp;lt;math&amp;gt;\ (u,v)&amp;lt;/math&amp;gt; ,т.е. &amp;lt;math&amp;gt;\ u..t_1t_2..v&amp;lt;/math&amp;gt; , такие, что существует ребро &amp;lt;math&amp;gt;\ ut_2&amp;lt;/math&amp;gt; и ребро &amp;lt;math&amp;gt;\ t_1v.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Действительно, пусть &amp;lt;math&amp;gt;\ S = &amp;lt;/math&amp;gt; { &amp;lt;math&amp;gt; i| e_i=ut_{i+1} \in EG&amp;lt;/math&amp;gt; } и &amp;lt;math&amp;gt;\ T = &amp;lt;/math&amp;gt; { &amp;lt;math&amp;gt; i| f_i=t_iv \in EG&amp;lt;/math&amp;gt; }&lt;br /&gt;
&lt;br /&gt;
Имеем: &amp;lt;math&amp;gt;\left\vert S \right\vert + \left\vert T \right\vert = deg\ u + deg \ v \ge n &amp;lt;/math&amp;gt;, но &amp;lt;math&amp;gt;\left\vert S + T \right\vert &amp;lt; n.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда &amp;lt;math&amp;gt;\left\vert S\cap T \right\vert = \left\vert S \right\vert + \left\vert T \right\vert - \left\vert S+T \right\vert &amp;gt; 0&amp;lt;/math&amp;gt; т.е. &amp;lt;math&amp;gt;\exists i| ut_{i+1}\in EG&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt; t_iv \in EG.&amp;lt;/math&amp;gt;&lt;br /&gt;
Получили противоречие, т.к. &amp;lt;math&amp;gt;\ u..t_1v..t_2u&amp;lt;/math&amp;gt; - гамильтонов цикл.&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Roman Livarsky</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%9E%D1%80%D0%B5&amp;diff=3549</id>
		<title>Теорема Оре</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%9E%D1%80%D0%B5&amp;diff=3549"/>
				<updated>2010-10-10T23:08:25Z</updated>
		
		<summary type="html">&lt;p&gt;Roman Livarsky: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Если &amp;lt;math&amp;gt;n \ge  3&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;deg\ u + deg \ v \ge n&amp;lt;/math&amp;gt;  для любых двух различных несмежных вершин &amp;lt;math&amp;gt;\ u&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;\ v&amp;lt;/math&amp;gt; неориентированного графа  '''G''', то  '''G''' - гамильтонов граф.&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
&lt;br /&gt;
Пусть, от противного, существует граф '''G''', который удовлетворяет условию теоремы, но не является гамильтоновым графом.&lt;br /&gt;
Будем добавлять к нему новые ребра до тех пор, пока не получим максимальный негамильтонов граф '''G''''. В силу того, что мы только добавляли ребра, условие теоремы не нарушилось.&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;\ u,v&amp;lt;/math&amp;gt; несмежные вершины в полученном графе '''G''''. Если добавить ребро &amp;lt;math&amp;gt;\ uv&amp;lt;/math&amp;gt;, появится гамильтонов цикл. Тогда путь &amp;lt;math&amp;gt;\ (u,v)&amp;lt;/math&amp;gt; - гамильтонов.&lt;br /&gt;
&lt;br /&gt;
Для вершин &amp;lt;math&amp;gt;\ u,v&amp;lt;/math&amp;gt; выполнено &amp;lt;math&amp;gt;deg\ u + deg \ v \ge n.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
По принципу Дирихле, всегда найдутся две смежные вершины &amp;lt;math&amp;gt;\ t_1,t_2&amp;lt;/math&amp;gt; на пути &amp;lt;math&amp;gt;\ (u,v)&amp;lt;/math&amp;gt; ,т.е. &amp;lt;math&amp;gt;\ u..t_1t_2..v&amp;lt;/math&amp;gt; , такие, что существует ребро &amp;lt;math&amp;gt;\ ut_2&amp;lt;/math&amp;gt; и ребро &amp;lt;math&amp;gt;\ t_1v.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Действительно, пусть &amp;lt;math&amp;gt;\ S = &amp;lt;/math&amp;gt; { &amp;lt;math&amp;gt; i| e_i=ut_{i+1} \in EG&amp;lt;/math&amp;gt; } и &amp;lt;math&amp;gt;\ T = &amp;lt;/math&amp;gt; { &amp;lt;math&amp;gt; i| f_i=t_iv \in EG&amp;lt;/math&amp;gt; }&lt;br /&gt;
&lt;br /&gt;
Имеем: &amp;lt;math&amp;gt;\left\vert S \right\vert + \left\vert T \right\vert = deg\ u + deg \ v \ge n &amp;lt;/math&amp;gt;, но &amp;lt;math&amp;gt;\left\vert S + T \right\vert &amp;lt; n.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
И тогда:  &amp;lt;math&amp;gt;\left\vert S\cap T \right\vert = \left\vert S \right\vert + \left\vert T \right\vert - \left\vert S+T \right\vert &amp;gt; 0&amp;lt;/math&amp;gt; т.е. &amp;lt;math&amp;gt;\exists i| ut_{i+1}\in EG&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt; t_iv \in EG.&amp;lt;/math&amp;gt;&lt;br /&gt;
Получили противоречие, т.к. &amp;lt;math&amp;gt;\ u..t_1v..t_2u&amp;lt;/math&amp;gt; - гамильтонов цикл.&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Roman Livarsky</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%9E%D1%80%D0%B5&amp;diff=3512</id>
		<title>Теорема Оре</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%9E%D1%80%D0%B5&amp;diff=3512"/>
				<updated>2010-10-10T19:54:09Z</updated>
		
		<summary type="html">&lt;p&gt;Roman Livarsky: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Если &amp;lt;math&amp;gt;n \ge  3&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;deg\ u + deg \ v \ge n&amp;lt;/math&amp;gt;  для любых двух различных несмежных вершин &amp;lt;math&amp;gt;\ u&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;\ v&amp;lt;/math&amp;gt; неориентированного графа  '''G''', то  '''G''' - гамильтонов граф.&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
&lt;br /&gt;
Пусть, от противного, существует граф '''G''', который удовлетворяет условию теоремы, но не является гамильтоновым графом.&lt;br /&gt;
Будем добавлять к нему новые ребра до тех пор, пока не получим максимальный негамильтонов граф '''G''''. В силу того, что мы только добавляли ребра, условие теоремы не нарушилось.&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;\ u,v&amp;lt;/math&amp;gt; несмежные вершины в полученном графе '''G''''. Если добавить ребро &amp;lt;math&amp;gt;\ uv&amp;lt;/math&amp;gt;, появится гамильтонов цикл. Тогда путь &amp;lt;math&amp;gt;\ (u,v)&amp;lt;/math&amp;gt; - гамильтонов.&lt;br /&gt;
&lt;br /&gt;
Для вершин &amp;lt;math&amp;gt;\ u,v&amp;lt;/math&amp;gt; выполнено &amp;lt;math&amp;gt;deg\ u + deg \ v \ge n&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
По принципу Дирихле, всегда найдутся две смежные вершины &amp;lt;math&amp;gt;\ t_1,t_2&amp;lt;/math&amp;gt; на пути &amp;lt;math&amp;gt;\ (u,v)&amp;lt;/math&amp;gt; ,т.е. &amp;lt;math&amp;gt;\ u..t_1t_2..v&amp;lt;/math&amp;gt; , такие, что существует ребро &amp;lt;math&amp;gt;\ ut_2&amp;lt;/math&amp;gt; и ребро &amp;lt;math&amp;gt;\ t_1v&amp;lt;/math&amp;gt;.&lt;br /&gt;
Получили противоречие, т.к. &amp;lt;math&amp;gt;\ u..t_1v..t_2u&amp;lt;/math&amp;gt; - гамильтонов цикл.&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Roman Livarsky</name></author>	</entry>

	</feed>