Дана ответила на вопрос. Но вот некоторые комментарии с практической стороны.
Обратите внимание, что неразрешимо проверить, доказуемо ли данное предложение в ZFC. не имеет для этого никакого значения. P = N P (фактически P = c o N P ) означает, что легко найти доказательства для высказывательных тавтологий , а не предложений первого порядка, таких как GC.P=NPP=NPP=coNP
Это чтобы проверить, есть ли доказательство данного предложения данной длины l (в унарном виде) в фиксированной теории (например, ZFC). Так что, если P = N P , то есть алгоритм polytime, чтобы проверить это. Принятие l как некоторого фиксированного многочлена в длине предложения приведет к алгоритму polytime.NPlP=NPl
Практически (это упоминается Годелем в его знаменитом письме фон Нейману): если , то существует алгоритм с полиномиальным временем, который дает предложение первого порядка и l (в унарном), алгоритм может найти, если предложение имеет размер L доказательство в ZFC. Идея Годеля заключалась в том, что в этом случае, если эквивалентность P = N P действительно выполнима (т. Е. Алгоритм - это не просто P, а, скажем, D T i m e ( n 2 )P=NPllP=NPPDTime(n2)), тогда можно взять этот алгоритм и запустить его, чтобы проверить доказательства возможной, но очень большой длины, которая будет больше, чем любое доказательство, которое когда-либо сможет придумать любой человек, и если алгоритм не находит ответа, то Приговор практически невозможно доказать. Уловка, о которой упоминала Дана, также сработает, чтобы найти доказательство.
Для практических средств:
P=NPDTime(10000n10000)
оно найдет доказательство только в том случае, если оно есть (то есть предложение не является неразрешимым предложением в ZFC), более того, доказательство должно быть практически коротким.
P≠NPNP=DTime(nlog∗n)