Кері-Говард та програми з неконструктивних доказів


29

Це додаткове запитання

Чим відрізняються докази та програми (або між пропозиціями та типами)?

Яка програма відповідала б неконструктивному (класичному) доказуванню форми k T(e,k)¬k T(e,k) ? (Припустимо, що T - якесь цікаве визначальне відношення, наприклад, e th TM не зупиняється на к кроках.)

(ps: Я розміщую це питання частково, тому що мені цікаво дізнатися більше про те, що означає Ніл під « перекладом Годеля-Гентцена - це перетворення, що проходить у своєму коментарі» .)


2
Часткова відповідь на сторінці 2 цих конспектів лекцій . Це трохи криптично; Я спробую викопати щось більш повне.
Дейв Кларк

Написати свою відповідь потрібно трохи більше часу, ніж планувалося, оскільки я помилився, вирішивши довести те, що знав, а не просто стверджувати їх. :)
Neel Krishnaswami

1
Ця стаття мала найновіший JSL . Суть полягає в тому, що обчислювальний вміст класичних доказів може сильно залежати від того, як ви вирішили його витягти. Я ще не дуже переварив його, але думав, що викину його туди.
Марк Рейтблат

Але ви вказали, що Т є визначальним відношенням, тож випливає, що існують конструктивні докази вашої пропозиції. Класична логіка - це підмножина інтуїтивістської логіки, і ви вказали, що T належить до цієї підмножини, називаючи її визначальною.
wren romano

Рен, це я теж спочатку думав! Але пропозиція P у прикладі P \ / ~ P у запитанні, якщо насправді кількісно визначена для всіх k, і це кількісне визначення T не обов'язково вирішується.
jbapple

Відповіді:


25

Це цікаве питання. Очевидно , не можна очікувати , щоб мати програму , яка вирішує для кожного е чи кТ(е,к) є, чи ні, оскільки це вирішить проблему зупинки. Як уже згадувалося, існує кілька способів обчислення доказів: розширення Кері-Говарда, усвідомлюваність, діалектика тощо. Але всі вони обчислювально інтерпретували б теорему, яку ви згадали більш-менш, наступним чином.

Для простоти розглянемо еквівалентну класичну теорему

(1) ij(¬Т(е,j)¬Т(е,i))

Це (конструктивно) еквівалентно одній згаданої тому , що з урахуванням можна вирішити , слід чи до Т ( е , до ) має місце чи ні, просто перевіряючи значення ¬ Т ( е , я ) . Якщо ¬ T ( e , i ) виконується, то i ¬ T ( e , i ) і, отже, ¬ i T ( e , i ) . Якщо з іншого бокуiкТ(е,к)¬Т(е,i)¬Т(е,i)i¬Т(е,i)¬iТ(е,i) не дотримується тоді (1) маємоj ( ¬ T ( e , j ) ), з чого випливаєj T ( e , j ) .¬Т(е,i)j(¬Т(е,j))jТ(е,j)

Тепер знову ми не можемо обчислити в (1) для кожного даного e, оскільки ми знову вирішимо задачу зупинки. Усі інтерпретації, про які було сказано вище, мали б поглянути на еквівалентну теоремуiе

(2) fi'(¬Т(е,f(i'))¬Т(е,i'))

Функція називається функцією Гербранда. Він намагається обчислити зустрічний приклад j для кожного даного потенційного свідка i . Зрозуміло, що (1) і (2) рівнозначні. Зліва направо це конструктивно, просто візьміть i = i в (2), де i є припущеним свідком (1). Справа наліво треба міркувати класично. Припустимо, що (1) не відповідає дійсності. Потім,fjii'=ii

(3) ij¬(¬Т(е,j)¬Т(е,i))

Нехай - функція, що свідчить про це, тобтоf'

(4) i¬(¬Т(е,f'(i))¬Т(е,i))

Тепер візьмемо в (2) і маємо ( ¬ T ( e , f ( i ) ) ¬ T ( e , i ) ) , для деякого i . Але беручи i = i в (4), ми отримуємо заперечення цього, протиріччя. Звідси (2) випливає (1).f=f'(¬Т(е,f'(i'))¬Т(е,i'))i'i=i'

Отже, маємо, що (1) і (2) класично рівнозначні. Але цікавим є те, що (2) зараз є дуже простим конструктивним свідком. Просто візьміть якщо T ( e , f ( 0 ) ) не виконується, тому що тоді висновок (2) істинний; інакше візьмемо i = 0, якщо T ( e , f ( 0 ) ) виконується, тому що тоді ¬ T ( e , f ( 0 )i'=f(0)Т(е,f(0))i'=0Т(е,f(0))¬Т(е,f(0)) не втримується, а передумова (2) хибна, що робить його знову істинним.

Отже, спосіб обчислювальної інтерпретації класичної теореми типу (1) - це дивитись на (класично) еквівалентну формулювання, що може бути конструктивно доведено в нашому випадку (2).

Різні трактування, згадані вище, розходяться лише у тому, як функція з'являється. У випадку реалізації та інтерпретації діалектики це явно дається інтерпретацією, коли вона поєднується з деякою формою негативного перекладу (як, наприклад, Гедель-Генцен). У випадку розширень Curry-Howard з операторами call-cc та продовження функція f виникає з того, що програмі дозволено "знати", як буде використовуватися певне значення (у нашому випадку i ), тому f - це продовження програми навколо точки, де я обчислюється.ffifi

Ще одним важливим моментом є те, що ви хочете, щоб перехід від (1) до (2) був "модульним", тобто якщо (1) використовується для доказування (1 '), то його інтерпретацію (2) слід використовувати аналогічно довести інтерпретацію (1 '), скажімо, (2'). Усі трактування, згадані вище, роблять це, включаючи негативний переклад Геделя-Генцена.


8
Ласкаво просимо! Тут чудово бачити теоретика експертного доказування.
Neel Krishnaswami

1
Дякую Пауло, ваша відповідь прояснила частину картини у пов’язаній проблемі, над якою я працюю.
Каве

17

Досить добре відомо, що класична та інтуїтивістська арифметика є рівнозначними.

Один із способів показати це через "негативні вбудовування" класичної логіки в інтуїтивістську логіку. Отже, припустимо, - формули класичної арифметики першого порядку. Тепер ми можемо визначити формулу інтуїтивістської логіки так:ϕ

G()=¬¬G(ϕψ)=¬¬(G(ϕ)G(ψ))G()=¬G(¬ϕ)=¬G(ϕ)G(ϕψ)=¬(¬G(ϕ)¬G(ψ))G(x.ϕ)=x.¬¬G(ϕ)G(x.ϕ)=¬x.¬(G(ϕ))G(P)=¬¬P

Зауважимо, що - це, в основному, гомоморфізм, який проникає у додаткові не всюди, за винятком того, що при диз'юнкціях та екзистенціаліалі він використовує подвійність де Моргана, щоб перетворити їх у сполучники та універсалії. (Я впевнений, що це не точний переклад Годеля-Гентцена, оскільки я підготував його для цієї відповіді - в основному все, що ви пишете, використовуючи подвійне заперечення + подвійність Моргана, спрацює. Цей різновид насправді виявляється важливим для обчислювальні інтерпретації класичної логіки; див. нижче.)G(ϕ)

По-перше: Очевидно, що цей переклад зберігає класичну істину, так що є істинним тоді і лише тоді, коли ϕ є, класично кажучи.G(ϕ)ϕ

По- друге , це менш очевидно, але все ж буває, що для формул в фрагмент, доцільність в інтуїтивістській та класичній логіці збігаються. Спосіб довести це - спершу розглянути формули, виведені з цієї граматики:,,,¬

A,B::=x.A(x)|AB|AB|¬A|¬¬P

І тоді ми можемо довести як лема (за допомогою індукції на ), що G ( A )A похідний інтуїтивно. Отже, тепер ми можемо показати рівномірність негативних формул, зробивши індукцію над структурою доказування (скажімо, послідовного обчислення) і використавши попередню лему для моделювання закону виключеної середини.G(A)A

Отже, як ви повинні думати про це інтуїтивно?

  • По-перше, доказово-теоретичний погляд. Якщо подивитися на правила послідовного числення, то можна побачити, що єдине місце класичної та інтуїтивістської логіки серйозно відрізняється - це правила диз'юнкції та екзистенціалів. Отже, ми використовуємо цей факт, щоб показати, що докази в одній логіці цих формул можуть бути переведені на докази в іншій. Це показує, як мислити конструктивну логіку як розширення класичної логіки з двома новими сполучниками і . Те, що ми називаємо "класичним існуванням" та "класичною диз'юнкцією", були лише абревіатурами, що включають , сполучення та заперечення, і щоб говорити про фактичне існування, нам потрібно було запровадити нові сполучники.

  • По-друге, є топологічний вигляд. Тепер модель класичної логіки (як сімейство множин) - булева алгебра (тобто сімейство підмножин, закритих під довільними об'єднаннями, перетинами та доповненнями). Виявляється, модель інтуїтивно-логічної логіки є топологічним простором , при цьому пропозиції трактуються як відкриті множини. Їх інтерпретація заперечення є внутрішньою частиною доповнення, і тоді легко показати, що , а це означає, що подвійне заперечення направляє нас у найменший клопен, що охоплює кожну відкриту --- і клопен утворює a Булева алгебра.¬¬¬П=¬П

Тепер, завдяки Керрі-Говарду, ми знаємо, як інтерпретувати докази в інтуїтивістській логіці як функціональні програми. Отже, одна можлива відповідь (але не єдина) на питання "який конструктивний зміст класичного доказу?" наступне:

Обчислювальний зміст класичного доказу є будь-яким обчислювальним змістом перекладу його доказування (згідно з негативним перекладом).

Тож розглянемо переклад . Отже, це говорить про те, що конструктивний зміст виключеної середини - це те саме, що говорити про те, що ¬ P і і ¬ ¬ P має місце не у тому випадку, тобто, несуперечливе. Отже, в цьому сенсі закону виключеної середини насправді не дуже багато обчислювального змісту.Г(А¬А)=¬(¬Г(А)¬¬Г(А))¬П¬¬П

Щоб побачити, що це конкретно, згадайте, що конструктивно заперечення визначається як . Отже ця формула є ( ( G ( A )¬А==А . Наступний біт коду Ocaml буде ілюструвати:((Г(А))((Г(А))))

type bot = Void of bot
type 'a not = 'a -> bot

let excluded_middle : ('a not * 'a not not) not = fun (u, k) -> k u 

Тобто, якщо ви отримаєте не-А, а не-не-А, ви можете просто передати перше заперечення другому, щоб отримати необхідне протиріччя.

Тепер, що таке продовження перетворень стилю?

  • Продовження типу є те , що має значення типу т і обчислює остаточну відповідь від нього.ττ
  • Продовження використовуються для моделювання контекстів програми. Тобто у нас може бути термін оцінюється як частина значно більшої програми C [ 3 + 5 ] . Все те, що навколо нього, отримає результат обчислення 3 + 5 та обчислить остаточну відповідь.3+5С[3+5]3+5
  • Таким чином, ви можете думати про продовження типу як функцію τ α , де α - будь-який тип відповіді.τταα
  • Так що якщо у вас є програма типу т , ми можемо «КПС-новонавернений» це знаходячи член типу ( т & alpha ; ) альфа , який буде в кінцевому підсумку проходження незалежно від е б обчислений для її продовження. (В основному, це просто робить потік управління явним.)еτ(τα)αе
  • Але ми повинні зробити це спадково, щоб кожен підрозділ програми зробив своє продовження явним.

Тепер,

  • Негативний переклад в основному спадково передає до ¬ ¬ ϕ .ϕ¬¬ϕ
  • Однак, хоча наш переклад використовує заперечення, він ніколи фактично не усуває помилкове судження, тому переклад працює параметрично в цій пропозиції.
  • Зокрема, ми можемо замінити будь-яким типом відповіді α .α
  • Тож ми спадково заміщаємо на ( ϕ α ) α .ϕ(ϕα)α
  • Це перетворення CPS.

Я побачив "перетворення" CPS, оскільки, як я вже згадував раніше, існує багато негативних перекладів, які дозволяють вам довести цю теорему, і кожен відповідає різній трансформації CPS. В операційному плані кожна трансформація відповідає різному порядку оцінювання . Отже, не існує унікальної обчислювальної інтерпретації класичної логіки, оскільки у вас є вибір, а вибір різниці має дуже різні експлуатаційні характеристики.


3
Це чудова відповідь. Це нагадало мені документ Вадлера "Call-by-value is dual to call-by-name": homepages.inf.ed.ac.uk/wadler/topics/call-by-need.html , який містить дуже запам'ятовується анекдот у розділі 4 пояснити зв’язок між callCC та виключеною серединою.
sclv

8

Є цілі конференції з теми неконструктивних доказів як програм , і я не є експертом з цього питання. Нагорі Ніл Крішнасвамі натякав на більш довгу відповідь, яку він готує, яка, судячи з його роботи тут, буде чудовою. Це лише смак відповіді.

Виявляється, тип виклику з поточним продовженням відповідає пропозиції, відомому як закон Перса , який може бути використаний для доказу Закону виключеного середини ( ). Програма LEM може бути записана за допомогою callcc. В Coq:П,П¬П

Set Implicit Arguments.

Axiom callcc : forall (A B : Set), ((A -> B) -> A) -> A.

Lemma lem : forall (A B:Set), sum A (A -> B).
Proof.
  intros.
  eapply callcc.
  intros H.
  right.
  intros.
  apply H.
  left.
  assumption.
Defined.

Recursive Extraction lem.

надає код O'Caml:

type ('a, 'b) sum =
  | Inl of 'a
  | Inr of 'b

(** val callcc : (('a1 -> 'a2) -> 'a1) -> 'a1 **)

let callcc =
  failwith "AXIOM TO BE REALIZED"

(** val lem : ('a1, 'a1 -> no) sum **)

let lem =
    callcc (fun h -> Inr (fun h0 -> h (Inl h0)))

Найчистіший вступ до цього, що я бачив, - у «Тілевому понятті про контроль» Тіма Гріффіна .


3
Вам слід спробувати витягнути в схему і сказати, що процедура вилучення повинна витягувати вашу callccсхему callcc. Тоді ви можете реально випробувати речі.
Андрій Бауер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.