Это интересный вопрос. Очевидно, нельзя ожидать наличия программы, которая решает для каждого , выполняется ли или нет, так как это решило бы проблему остановки. Как уже упоминалось, существует несколько способов вычислительной интерпретации доказательств: расширения Карри-Ховарда, реализуемость, диалектика и так далее. Но все они вычислили бы теорему, которую вы упомянули, более или менее следующим образом.∀ k T ( e , k )е∀ к Т( е , к )
Для простоты рассмотрим эквивалентную классическую теорему
(1)∃ я ∀ j ( ¬ T( e , j ) → ¬ T( е , я ) )
Это (конструктивно) эквивалентно упомянутому, потому что, учитывая мы можем решить, выполняется ли или нет, просто проверив значение . Если выполнено, то и, следовательно, . Если, с другой стороны, не выполняется, то в силу (1) имеем что влечет .∀ K T ( е , K ) ¬ T ( е , я ) ¬ Т ( е , я ) ∃ я ¬ Т ( е , я ) ¬ ∀ я Т ( е , я ) ¬ Т ( е , я ) ∀ J ( ¬ T ( e , j ) → ⊥ )я∀ к Т( е , к )¬ T( е , я )¬ T( е , я )∃ я ¬ T( е , я )¬ ∀ я T( е , я )¬ T( е , я )∀ j ( ¬ T( e , j ) → ⊥ )∀ j T( e , j )
Теперь снова мы не можем вычислить в (1) для каждого заданного потому что мы снова решили бы проблему остановки. То, что сделали бы все упомянутые выше интерпретации, это посмотреть на эквивалентную теоремуеяе
(2)∀ ф∃ я'( ¬ T( е , е( я') ) → ¬ T( е , я') )
Функция называется функцией Хербранда. Он пытается вычислить контрпример для каждого данного потенциального свидетеля . Ясно, что (1) и (2) эквивалентны. Слева направо это конструктивно, просто возьмите в (2), где - предполагаемое свидетельство (1). Справа налево нужно рассуждать классически. Предположим, (1) не было правдой. Затем,j i i ′ = i iеJяi′=ii
(3)∀i∃j¬(¬T(e,j)→¬T(e,i))
Пусть будет функцией, свидетельствующей об этом, т.е.f′
(4)∀i¬(¬T(e,f′(i))→¬T(e,i))
Теперь возьмем в (2) и получим для некоторого . Но, взяв в (4), мы получим отрицание этого противоречия. Отсюда (2) влечет (1). ( ¬ T ( e , f ′ ( i ′ ) ) → ¬ T ( e , i ′ ) ) i ′ i = i ′f=f′(¬T(e,f′(i′))→¬T(e,i′))i′i=i′
Итак, мы имеем, что (1) и (2) классически эквивалентны. Но интересно то, что (2) теперь имеет очень простое конструктивное свидетельство. Просто возьмите если не выполняется, потому что тогда вывод (2) верен; или же возьмите если выполняется , потому что тогда не выполняется, и предпосылка (2) ложна, что делает его снова верным.T ( e , f ( 0 ) ) i ′ = 0 T ( e , f ( 0 ) ) ¬ T ( e , f ( 0 ) )i′=f(0)T(e,f(0))i′=0T(e,f(0))¬T(e,f(0))
Следовательно, способ вычислительной интерпретации классической теоремы, подобной (1), состоит в том, чтобы посмотреть на (классически) эквивалентную формулировку, которая может быть конструктивно доказана в нашем случае (2).
Упомянутые выше различные интерпретации расходятся только в том, как всплывает функция . В случае реализуемости и интерпретации диалектики это явно дается интерпретацией в сочетании с некоторой формой отрицательного перевода (например, Геделя-Генцена). В случае расширений Curry-Howard с операторами call-cc и продолжением функция возникает из-за того, что программе разрешено «знать», как будет использоваться определенное значение (в нашем случае ), поэтому является продолжением программы около точки, где вычисляется.е I е Iffifi
Другим важным моментом является то, что вы хотите, чтобы переход от (1) к (2) был «модульным», т. Е. Если (1) используется для доказательства (1 '), то его интерпретация (2) должна использоваться аналогичным образом. чтобы доказать толкование (1 '), скажите (2'). Все упомянутые выше интерпретации делают это, включая отрицательный перевод Геделя-Генцена.