In mathematical logic, the Hilbert–Bernays provability conditions, named after David Hilbert and Paul Bernays, are a set of requirements for formalized provability predicates in formal theories of arithmetic (Smith 2007:224).
These conditions are used in many proofs of Kurt Gödel's second incompleteness theorem. They are also closely related to axioms of provability logic.
Let be a formal theory of arithmetic with a formalized provability predicate, which is expressed as a formula of with one free number variable. For each formula in the theory, let be the Gödel number of . The Hilbert–Bernays provability conditions are:
Note that is predicate of numbers, and it is a provability predicate in the sense that the intended interpretation of is that there exists a number that codes for a proof of . Formally what is required of is the above three conditions.
In the more concise notation of provability logic, letting
T\vdash\varphi
T
\varphi
\Box\varphi
Prov(\#(\varphi))
(T\vdash\varphi)\to(T\vdash\Box\varphi)
T\vdash(\Box\phi\to\Box\Box\phi)
T\vdash(\Box(\varphi\to\psi)\to\Box\varphi\to\Box\psi)
The Hilbert–Bernays provability conditions, combined with the diagonal lemma, allow proving both of Gödel's incompleteness theorems shortly. Indeed the main effort of Godel's proofs lied in showing that these conditions (or equivalent ones) and the diagonal lemma hold for Peano arithmetics; once these are established the proof can be easily formalized.
Using the diagonal lemma, there is a formula
\rho
T\Vdash\rho\leftrightarrow\negProv(\#(\rho))
For the first theorem only the first and third conditions are needed.
The condition that is ω-consistent is generalized by the condition that if for every formula, if proves, then proves . Note that this indeed holds for an -consistent because means that there is a number coding for the proof of, and if is -consistent then going through all natural numbers one can actually find such a particular number, and then one can use to construct an actual proof of in .
Suppose T could have proven
\rho
T\Vdash\rho
T\Vdash\negProv(\#(\rho))
\rho
T\VdashProv(\#(\rho))
Prov(\#(\rho))
\negProv(\#(\rho))
\rho
Now let us suppose could have proven
\neg\rho
T\Vdash\neg\rho
T\VdashProv(\#(\rho))
\rho
T\Vdash\rho
\rho
\neg\rho
\neg\rho
To conclude, can prove neither
\rho
\neg\rho
Using Rosser's trick, one needs not assume that is -consistent. However, one would need to show that the first and third provability conditions holds for, Rosser's provability predicate, rather than for the naive provability predicate Prov. This follows from the fact that for every formula, holds if and only if holds.
An additional condition used is that proves that implies . This condition holds for every that includes logic and very basic arithmetics (as elaborated in Rosser's trick#The Rosser sentence).
Using Rosser's trick, is defined using Rosser's provability predicate, instead of the naive provability predicate. The first part of the proof remains unchanged, except that the provability predicate is replaced with Rosser's provability predicate there, too.
The second part of the proof no longer uses ω-consistency, and is changed to the following:
Suppose could have proven
\neg\rho
T\Vdash\neg\rho
T\VdashProvR(\#(\rho))
\rho
T\Vdash\negProvR(\#(\neg\rho))
T\VdashProvR(\#(\neg\rho))
ProvR(\#(\neg\rho))
\negProvR(\#(\neg\rho))
\neg\rho
We assume that proves its own consistency, i.e. that:
T\Vdash\negProv(\#(1=0))
T\Vdash\neg\varphi → (\varphi → (1=0))
It is possible to show by using condition no. 1 on the latter theorem, followed by repeated use of condition no. 3, that:
T\VdashProv(\#(\neg\varphi)) → (Prov(\#(\varphi)) → Prov(\#(1=0)))
T\VdashProv(\#(\neg\varphi)) → \negProv(\#(\varphi))
We now use this to show that is not consistent:
T\VdashProv(\#(\negProv(\#(\rho))) → \negProv(\#(Prov(\#(\rho)))
\varphi=Prov(\#(\rho))
T\Vdash\rho → \negProv(\#(\rho))
\rho
T\VdashProv(\#(\rho → \negProv(\#(\rho)))
T\VdashProv(\#(\rho)) → Prov(\#(\negProv(\#(\rho)))
T\VdashProv(\#(\rho)) → \negProv(\#(Prov(\#(\rho)))
T\VdashProv(\#(\rho)) → Prov(\#(Prov(\#(\rho)))
T\Vdash\negProv(\#(\rho))
T\Vdash\negProv(\#(\rho)) → \rho
\rho
T\Vdash\rho
T\VdashProv(\#(\rho))
Prov(\#(\rho))
\negProv(\#(\rho))