оператор μ

редактировать

В теории вычислимости, в мю-оператора, оператора минимизации или неограниченных операторов поиска поисках наименьшего натурального числа с заданным свойством. Добавление μ-оператора к пяти примитивным рекурсивным операторам позволяет определить все вычислимые функции.

Содержание

  • 1 Определение
  • 2 свойства
  • 3 Примеры
    • 3.1 Пример 1. Ограниченный μ-оператор - это примитивно рекурсивная функция.
    • 3.2 Пример 2: Неограниченный μ-оператор не является примитивно-рекурсивным
    • 3.3 Пример 3: Определение неограниченного μ-оператора в терминах абстрактной машины
  • 4 См. Также
  • 5 Сноски
    • 5.1 Полная демонстрация функций
    • 5.2 Альтернативные абстрактные машинные модели неограниченного μ-оператора из Мински (1967) и Булоса-Берджесса-Джеффри (2002)
  • 6 Ссылки

Определение

Предположим, что R ( y, x 1,..., x k ) - фиксированное ( k +1) -арное отношение на натуральных числах. Μ-оператор «µ y », в неограниченной или ограниченной форме, является «теоретико-числовой функцией», определяемой от натуральных чисел к натуральным числам. Однако «μ y » содержит предикат над натуральными числами, который возвращает истину, когда предикат удовлетворен, и ложь, когда это не так.

Ограниченная μ-оператор появляется ранее в Клини (1952) Глава IX примитивно рекурсивных функций, §45 Предикаты, главный фактор - представление, как:

« » (стр. 225) μ y y lt; z р ( y ) .     В мере   y lt; z   такой, что   р ( y ) ,   если   ( y ) y lt; z р ( y ) ;   иначе ,   z . {\ displaystyle \ mu y_ {y lt;z} R (y). \ \ {\ t_dv {Наименьшее}} \ y lt;z \ {\ t_dv {такое, что}} \ R (y), \ {\ t_dv { if}} \ (\ exists y) _ {y lt;z} R (y); \ {\ t_dv {else}}, \ z.}

Стивен Клини отмечает, что любое из шести ограничений неравенства на диапазон переменной y разрешено, т. Е. Y lt; z, y ≤ z, w lt; y lt; z, w lt; y ≤ z, w ≤ y lt; z и w ≤ y ≤ z. «Когда указанный диапазон не содержит y, такого что R ( y ) [является« истинным »], значение выражения « μ y »является кардинальным числом диапазона» (стр. 226); вот почему в приведенном выше определении появляется значение по умолчанию " z ". Как показано ниже, ограниченный μ-оператор «μ y y lt; z » определяется в терминах двух примитивно рекурсивных функций, называемых конечной суммой Σ и конечным произведением Π, функции предиката, которая «выполняет проверку», и представляющей функции, которая преобразует {t, f} на { 0, 1 }.

В главе XI §57 Общие рекурсивные функции Клини определяет неограниченный μ-оператор над переменной y следующим образом:

" " (стр. 279, где " " означает "существует y такое, что...") ( y ) μ y р ( y ) знак равно { наименьшее (натуральное число)   y   такой, что   р ( y ) } {\ displaystyle (\ существует y) \ mu yR (y) = \ {{\ t_dv {наименьшее (натуральное число)}} \ y \ {\ t_dv {такое, что}} \ R (y) \}} ( y ) {\ Displaystyle (\ существует у)}

В этом случае сам R или его представляющая функция выдает 0, когда он удовлетворен (т. Е. Выдает истину ); затем функция возвращает число y. Для y не существует верхней границы, поэтому в его определении не фигурируют выражения неравенства.

Для данного R ( y ) неограниченный μ-оператор μ y R ( y ) (обратите внимание на отсутствие требований для «(E y )») является частичной функцией. Вместо этого Клини делает это как общую функцию (см. Стр. 317):

ε y р ( Икс , y ) знак равно { в мере  y  такой, что  р ( Икс , y ) , если  ( E y ) р ( Икс , y ) 0 , иначе . {\ displaystyle \ varepsilon yR (x, y) = {\ begin {case} {\ text {the least}} y {\ text {такой, что}} R (x, y), amp; {\ text {if}} (Ey) R (x, y) \\ 0, amp; {\ text {иначе}}. \ End {case}}}

Полная версия неограниченного μ-оператора изучается в обратной математике высшего порядка ( Kohlenbach (2005)) в следующей форме:

( μ 2 ) ( ж 1 ) ( ( п 0 ) ( ж ( п ) знак равно 0 ) ж ( μ ( ж ) ) знак равно 0 ) , {\ Displaystyle (\ существует \ му ^ {2}) (\ forall f ^ {1}) {\ big (} (\ существует п ^ {0}) (е (п) = 0) \ rightarrow f (\ му (f)) = 0 {\ big)},}

где верхние индексы означают, что n - нулевой порядок, f - первый порядок, а μ - второй порядок. Эта аксиома дает начало системе большой пятерки ACA 0 в сочетании с обычной базовой теорией обратной математики высшего порядка.

Характеристики

(i) В контексте примитивных рекурсивных функций, где переменная поиска y μ-оператора ограничена, например y lt; z в формуле ниже, если предикат R является примитивно рекурсивным (Доказательство Клини №E, стр. 228), тогда

μ y y lt; z R ( y, x 1,..., x n ) - примитивно рекурсивная функция.

(ii) В контексте (общих) рекурсивных функций, где переменная поиска y не ограничена, но гарантированно существует для всех значений x i параметров полного рекурсивного предиката R,

( x 1 ),..., ( x n ) (Ey) R ( y, x i,..., x n ) влечет, что μ y R ( y, x i,..., x n ) является полная рекурсивная функция.
Здесь ( x i ) означает «для всех x i », а E y означает «существует по крайней мере одно значение y такое, что...» (см. Kleene (1952) с. 279.)

тогда пять примитивных рекурсивных операторов плюс неограниченный, но полный µ-оператор дают начало тому, что Клини назвал «общими» рекурсивными функциями (т. е. полными функциями, определяемыми шестью операторами рекурсии).

(iii) В контексте частично рекурсивных функций : предположим, что отношение R выполняется тогда и только тогда, когда частично рекурсивная функция сходится к нулю. И предположим, что эта частично рекурсивная функция сходится (к чему-то, не обязательно к нулю) всякий раз, когда определено μ y R ( y, x 1,..., x k ) и y равно μ y R ( y, x 1,..., x k ) или меньше. Тогда функция μ y R ( y, x 1,..., x k ) также является частично рекурсивной функцией.

Оператор μ используется для характеристики вычислимых функций как рекурсивных функций μ.

В конструктивной математике оператор неограниченного поиска связан с принципом Маркова.

Примеры

Пример 1. Ограниченный μ-оператор - это примитивно рекурсивная функция.

Далее x представляет собой строку x i,..., x n.

Ограниченная μ-оператор может быть выражен, а просто в терминах двух примитивно рекурсивных функций (далее «пруф»), которые также используется для определения СЛУЧАЯ функции-продукт-из-терминов Π и сумма-из-терминов Σ (ср Kleene #B стр. 224). (При необходимости подходит любая граница для переменной, например s ≤ t или t lt; z, или 5 lt; x lt;17 и т. Д.). Например:

  • Π s ≤ t f s ( x, s ) = f 0 ( x, 0) × f 1 ( x, 1) ×... × f t ( x, t )
  • Σ t lt; z g t ( x, t ) = g 0 ( x, 0) + g 1 ( x, 1) +... + g z-1 ( x, z -1)

Прежде чем мы продолжим, нам нужно ввести функцию ψ, называемую « представляющей функцией » предиката R. Функция ψ определяется от входов (t = «истина», f = «ложь») до выходов (0, 1) ( обратите внимание на порядок ! ). В этом случае вход в ψ. т.е. {t, f}. исходит из вывода R:

  • ψ (R = t) = 0
  • ψ (R = f) = 1

Клини показывает, что μ y y lt; z R ( y ) определяется следующим образом; мы видим, что функция произведения Π действует как логический оператор ИЛИ, а сумма Σ действует как логическое И, но производит {Σ ≠ 0, Σ = 0}, а не просто {1, 0}:

μ y y lt; z R ( y ) = Σ t lt; z Π s ≤ t ψ (R ( x, t, s )) =
[ψ ( x, 0, 0)] +
[ψ ( x, 1, 0) × ψ ( x, 1, 1)] +
[ψ ( x, 2, 0) × ψ ( x, 2, 1) × ψ ( x, 2, 2)] +
... +
[ψ ( x, z -1, 0) × ψ ( x, z -1, 1) × ψ ( x, z -1, 2) ×... × ψ ( x, z -1, z -1)]
Обратите внимание, что Σ на самом деле является примитивной рекурсией с базой Σ ( x, 0) = 0 и шагом индукции Σ ( x, y +1) = Σ ( x, y ) + Π ( x, y ). Произведение Π также является примитивной рекурсией с базовым шагом Π ( x, 0) = ψ ( x, 0) и шагом индукции Π ( x, y +1) = Π ( x, y ) × ψ ( x, y +1).

Уравнение проще, если рассмотреть его на примере, приведенном Клини. Он только что сделал записи для представляющей функции ψ (R ( y )). Он обозначил представляющие функции χ ( y ), а не ψ ( x, y ):

y 0 1 2 3 4 5 6 7 = г
χ ( у ) 1 1 1 0 1 0 0
π ( y ) = Π s ≤ y χ ( s ) 1 1 1 0 0 0 0 0
σ ( y ) = Σ t lt; y π ( t ) 1 2 3 3 3 3 3 3
наименьшее y lt; z такое, что R ( y ) "истинно": φ ( y ) = μ y y lt; z R ( y ) 3

Пример 2: Неограниченный μ-оператор не является примитивно-рекурсивным

Неограниченный μ-оператор - функция μ y - обычно определяется в текстах. Но читатель может задаться вопросом, почему неограниченный μ-оператор ищет функцию R ( x, y ), чтобы получить ноль, а не какое-то другое натуральное число.

В сноске Мински разрешает своему оператору завершиться, когда внутренняя функция производит совпадение с параметром « k »; этот пример также полезен, потому что он показывает формат другого автора:
«Для μ t [φ ( t ) = k ]» (стр. 210)

Причина для нуля состоит в том, что неограниченный оператор μ y будет определен в терминах функции «продукт» Π, индекс y которой может «расти» по мере поиска μ-оператором. Как отмечено в приведенном выше примере, произведение Π x lt; y строки чисел ψ ( x, 0) *,..., * ψ ( x, y ) дает ноль всякий раз, когда один из его членов ψ ( x, i ) равно нулю:

Π s lt; y = ψ ( x, 0) *,..., * ψ ( x, y ) = 0

если любой ψ ( x, i ) = 0, где 0≤ i ≤ s. Таким образом, Π действует как логическое И.

Функция μ y производит на «выходе» единственное натуральное число y = {0, 1, 2, 3,...}. Однако внутри оператора может появиться одна из пары «ситуаций»: (а) «теоретико-числовая функция» χ, которая производит одно натуральное число, или (б) «предикат» R, который дает либо {t = true, f = false}. (И в контексте частично рекурсивных функций Клини позже допускает третий результат: «μ = не определился».)

Клини разделяет свое определение неограниченного μ-оператора на две ситуации (a) и (b). Для ситуации (b), прежде чем предикат R ( x, y ) сможет служить в качестве арифметической в ​​продукте Π, его выход {t, f} должен сначала "обработаться" его представляющей функцией χ, чтобы получить {0, 1}. А для ситуации (а), если нужно использовать одно определение, то теоретико-числовая функция χ должна давать ноль, чтобы «удовлетворить» µ-оператор. Урегулировав этот вопрос, он демонстрирует с помощью единственного «Доказательства III», что типы (a) или (b) вместе с пятью примитивными рекурсивными операторами дают (полные) рекурсивные функции с этим условием для полной функции :

Для всех параметров х, должна быть предоставлена демонстрация, чтобы показать, что у существует, удовлетворяющие условия (а) μ у ψ ( х, у ) или (б) М у R ( х, у ).

Клини также допускает третью ситуацию (с), которая не требует демонстрации «для всех х у существует такое, что ф ( х, у ).» Он использует это в своем доказательстве того, что существует больше полных рекурсивных функций, чем можно перечислить ; cf сноска Общая демонстрация функций.

Доказательство Клини носит неформальный характер и использует пример, аналогичный первому, но сначала он приводит μ-оператор в другую форму, которая использует «произведение терминов» Π, действующее на функцию χ, которая дает натуральное число n, которое может - любое натуральное число и 0 в том случае, если проверка u-оператора "выполнена".

Определение переработано с помощью Π-функции:
μ y y lt; z χ ( y ) =
  • (i): π ( x, y ) = s lt; y χ ( x, s )
  • (ii): φ ( x ) = τ (π ( x, y ), π ( x, y ' ), y )
  • (iii): τ ( z ', 0, y ) = y ; τ ( u, v, w ) не определено при u = 0 или v gt; 0.

Это тонко. На первый взгляд кажется, что в уравнениях используется примитивная рекурсия. Но Клини не дал нам базового шага и шага индукции общего вида:

  • базовый шаг: φ (0, x ) = φ ( x )
  • шаг индукции: φ (0, x ) = ψ (y, φ (0, x ), x )

Чтобы увидеть, что происходит, мы сначала должны напомнить себе, что мы присвоили параметр (натуральное число) каждой переменной x i. Во-вторых, мы действительно видим, как работает оператор-преемник, повторяющий y (то есть y ' ). И, в-третьих, мы видим, что функция μ y y lt; z χ ( y, x ) просто порождает экземпляры χ ( y, x ), т.е. χ (0, x ), χ (1, x ),... до тех пор, пока экземпляр дает 0. В-четвертых, когда экземпляр χ ( n, x ) дает 0, средний член τ, то есть v = π ( x, y ' ), дает 0. Наконец, когда средний член v = 0, μ y y lt; z χ ( y ) выполняет строку (iii) и «выходит». Представление Клини уравнений (ii) и (iii) было изменено, чтобы показать, что линия (iii) представляет выход - выход осуществляется только тогда, когда поиск успешно находит y, удовлетворяющий χ ( y ), и средний продукт-член π ( x, y ' ) равно 0; затем оператор прекращает поиск с τ ( z ', 0, y ) = y.

τ (π ( x, y ), π ( x, y ' ), y ), то есть:
  • τ (π ( x, 0), π ( x, 1), 0),
  • τ (π ( x, 1), π ( x, 2), 1)
  • τ (π ( x, 2), π ( x, 3), 2)
  • τ (π ( x, 3), π ( x, 4), 3)
  • ... пока совпадение не произойдет при y = n, а затем:
  • τ ( z ', 0, y ) = τ ( z', 0, n ) = n и поиск μ-оператора закончен.

Для примера Клини «... рассмотрим [s] любых фиксированных значений ( x i,..., x n ) и напишем [s] просто 'χ ( y )' вместо 'χ ( x i,..., x n ), y ) '":

y 0 1 2 3 4 5 6 7 и Т. Д.
χ ( у ) 3 1 2 0 9 0 1 5 ...
π ( y ) = Π s ≤ y χ ( s ) 1 3 3 6 0 0 0 0 ...
наименьшее y lt; z такое, что R ( y ) "истинно": φ ( y ) = μ y y lt; z R ( y ) 3

Пример 3: определение неограниченного μ-оператора в терминах абстрактной машины

Оба Минского (1967) с. 21 и Булос-Берджесс-Джеффри (2002) стр. 60-61 дают определения μ-оператора как абстрактной машины; см. сноску Альтернативные определения μ.

Следующая демонстрация следует за Минским без «особенности», упомянутой в сноске. Демонстрация будет использовать модель «преемника» счетной машины, тесно связанную с аксиомами Пеано и примитивными рекурсивными функциями. Модель состоит из (i) конечного автомата с ТАБЛИЦЕЙ инструкций и так называемого «регистра состояний», который мы переименуем в «Регистр инструкций» (IR), (ii) нескольких «регистров», каждый из которых может содержат только одно натуральное число и (iii) набор инструкций из четырех «команд», описанных в следующей таблице:

Далее символ «[r]» означает «содержимое», а «→ r» указывает действие по отношению к регистру r.
Инструкция Мнемонический Действие в регистре (ах) "r" Действие по реестру инструкций, IR
Регистр CLeaR CLR (r) 0 → г [ИК] + 1 → ИК
Регистр INCrement INC (r) [г] + 1 → г [ИК] + 1 → ИК
Перейти, если равно JE (r 1, r 2, z) никто ЕСЛИ [r 1 ] = [r 2 ] ТО z → IR ELSE [IR] + 1 → IR
Остановка ЧАС никто [ИК] → ИК

Алгоритм для оператора минимизации μ y [φ ( x, y )], по сути, будет создавать последовательность экземпляров функции φ ( x, y ) по мере увеличения значения параметра y (натуральное число); процесс будет продолжаться (см. примечание † ниже) до тех пор, пока не произойдет совпадение между выходом функции φ ( x, y ) и некоторым заранее установленным числом (обычно 0). Таким образом, вычисление φ ( x, y ) требует вначале присвоения натурального числа каждой из его переменных x и присвоения "числа совпадений" (обычно 0) регистру " w ", а число (обычно 0) для регистрации y.

Примечание †: Неограниченный μ-оператор будет продолжать этот процесс попытки сопоставления до бесконечности или до тех пор, пока не произойдет совпадение. Таким образом, регистр « y » должен быть неограниченным - он должен иметь возможность «удерживать» число произвольного размера. В отличие от «реальной» компьютерной модели, абстрактные машинные модели позволяют это. В случае ограниченного μ-оператора ограниченный снизу μ-оператор должен начинаться с содержания y, установленного на число, отличное от нуля. Ограниченный сверху µ-оператор потребует дополнительного регистра «ub» для хранения числа, представляющего верхнюю границу, плюс дополнительная операция сравнения; алгоритм может предусматривать как нижнюю, так и верхнюю границы.

Далее мы предполагаем, что регистр инструкций (IR) встречает «подпрограмму» μ y с номером инструкции « n ». Его первым действием будет установка числа в специальный регистр « w » - «пример» числа, которое функция φ ( x, y ) должна произвести, прежде чем алгоритм сможет завершить работу (классически это число ноль, но см. сноска об использовании чисел, отличных от нуля). Следующим действием алгоритма по команде « n +1» будет очистка регистра « y » - « y » будет действовать как «повышающий счетчик», который начинается с 0. Затем по команде « n +2» алгоритм вычисляет его функция φ ( x, y ) - мы предполагаем, что это требует j инструкций для выполнения - и в конце ее вычисления φ ( x, y) помещает свой вывод в регистр "φ". В инструкции ( n + j +3) rd алгоритм сравнивает число в регистре " w " (например, 0) с числом в регистре "φ" - если они совпадают, алгоритм завершился успешно и уходит через exit ; в противном случае это увеличивает содержимое « у » зарегистрировать и петлю назад с этим новым у-значением для пробной функции ф ( х, у ) снова.

ИК Инструкция Действие по регистрации Действие по регистру инструкций IR
п μ y [φ ( x, y )]: CLR (w) 0 → ш [ИК] + 1 → ИК
п +1 CLR ( г ) 0 → y [ИК] + 1 → ИК
п +2 петля: ф ( х, у ) φ ([ x ], [ y ]) → φ [ИК] + j + 1 → ИК
п + j +3 JE (φ, w, выход) никто СЛУЧАЙ: {IF [φ] = [ w ] THEN выход → IR ELSE [IR] + 1 → IR}
п + j +4 INC ( г ) [ y ] + 1 → y [ИК] + 1 → ИК
п + j +5 JE (0, 0, цикл) Безусловный прыжок СЛУЧАЙ: {IF [r 0 ] = [r 0 ] THEN цикл → IR ELSE цикл → IR}
п + j +6 выход: и Т. Д.

Смотрите также

Сноски

Полная демонстрация функций

Что является обязательным, если функция должна быть полной функцией, - это демонстрация каким-либо другим методом (например, индукцией ), что для каждой без исключения комбинации значений ее параметров x i некоторое натуральное число y будет удовлетворять μ-оператору, так что алгоритм что означает, что расчет может завершиться:

«... мы всегда должны бояться предполагать, что система уравнений действительно определяет общерекурсивную (то есть полную) функцию. Обычно нам требуются вспомогательные доказательства для этого, например, в форме индуктивного доказательства того, что для каждого значения аргумента вычисление завершается уникальным значением ". (Минский (1967) с.186)
«Другими словами, мы не должны утверждать, что функция эффективно вычислима на том основании, что она была показана как общая (то есть полная) рекурсивная, если только демонстрация того, что она является общей рекурсивной, не эффективна» (Kleene (1952) p..319)

Пример того, что это означает на практике, см. В примерах рекурсивных функций mu - даже простейший алгоритм усеченного вычитания « x - y = d » может дать в неопределенных случаях, когда x lt; y, (1) без завершения, (2) без чисел (т.е. что-то не так с форматом, поэтому доходность не считается натуральным числом) или (3) обман: неправильные числа в правильном формате. «Правильный» алгоритм вычитания требует внимательного отношения ко всем «случаям».

( x, y ) = {(0, 0), ( a, 0), (0, b ), ( a ≥ b, b ), ( a = b, b ), ( a lt; b, b )}.

Но даже когда было показано, что алгоритм дает ожидаемый результат в экземплярах {(0, 0), (1, 0), (0, 1), (2, 1), (1, 1), (1, 2)}, мы остались с неприятным чувством, пока мы не можем изобрести «убедительное доказательство», что случаи ( х, у ) = ( п, т ) все дали ожидаемые результаты. На точку зрения Клини: достаточно ли убедительна наша «демонстрация» (то есть алгоритм, который является нашей демонстрацией), чтобы считаться эффективной ?

Альтернативные абстрактные машинные модели неограниченного μ-оператора от Мински (1967) и Булоса-Берджесса-Джеффри (2002)

Неограниченный μ-оператор определен Минским (1967), с. 210, но со специфическим недостатком: оператор не даст t = 0, если его предикат (тест IF-THEN-ELSE) удовлетворен; скорее это дает t = 2. В версии Минского счетчик - « t », а функция φ ( t, x ) помещает его номер в регистр φ. В обычном регистре определения μ регистр w будет содержать 0, но Мински отмечает, что он может содержать любое число k. Набор инструкций Мински эквивалентен следующему, где "JNE" = Перейти к z, если не равно:

{CLR ( r ), INC ( r ), JNE ( r j, r k, z )}
ИК Инструкция Действие по регистрации Действие по реестру инструкций, IR
п μ y φ ( x ): CLR ( w ) 0 → ш [ИК] + 1 → ИК
п + 1 CLR ( т ) 0 → т [ИК] + 1 → ИК
п +2 петля: ф ( у, х ) φ ([ t ], [ x ]) → φ [ИК] + j + 1 → ИК
п + j +3 INC ( т ) [ t ] + 1 → t [ИК] + 1 → ИК
п + j +4 JNE (φ, w, цикл) никто СЛУЧАЙ: {ЕСЛИ [φ] ≠ [ w ] ТО "выход" → IR ELSE [IR] + 1 → IR}
п + j +5 INC ( т ) [ t ] + 1 → t [ИК] + 1 → ИК
п + j +6 выход: и Т. Д.

Неограниченный μ-оператор также определен Булосом-Берджессом-Джеффри (2002) с. 60-61 для счетчика с набором команд, эквивалентным следующему:

{CLR (r), INC (r), DEC (r), JZ (r, z), H}

В этой версии счетчик «y» называется «r2», а функция f ( x, r2) помещает его номер в регистр «r3». Возможно, причина, по которой Булос-Берджесс-Джеффри очищает r3, заключается в том, чтобы облегчить безусловный переход в петлю ; это часто делается с помощью специального регистра «0», который содержит «0»:

ИК Инструкция Действие по регистрации Действие по реестру инструкций, IR
п μ r 2 [f ( x, r 2 )]: CLR ( r 2 ) 0 → r 2 [ИК] + 1 → ИК
п +1 петля: f ( y, x ) f ([ t ], [ x ]) → r 3 [ИК] + j + 1 → ИК
п +2 JZ ( r 3, выход) никто IF [ r 3 ] = 0 THEN выход → IR ELSE [IR] + 1 → IR
п + j +3 CLR ( r 3 ) 0 → r 3 [ИК] + 1 → ИК
п + j +4 INC ( r 2 ) [ r 2 ] + 1 → r 2 [ИК] + 1 → ИК
п + j +5 JZ ( r 3, петля) СЛУЧАЙ: {IF [ r 3 ] = 0 THEN loop → IR ELSE [IR] + 1 → IR}
п + j +6 выход: и Т. Д.

Рекомендации

На страницах 210-215 Мински показывает, как создать μ-оператор, используя модель регистровой машины, тем самым демонстрируя ее эквивалентность общерекурсивным функциям.
Последняя правка сделана 2023-04-16 04:10:35
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте