HomeHome Metamath Proof Explorer < Previous   Next >
Related theorems
Unicode version

Theorem hta 5858
Description: A ZFC emulation of Hilbert's transfinite axiom. The set B has the properties of Hilbert's epsilon, except that it also depends on a well-ordering R. This theorem arose from discussions with Raph Levien on 5-Mar-2004 about translating the HOL proof language, which uses Hilbert's epsilon. See http://us.metamath.org/downloads/choice.txt (copy of obsolete link http://ghilbert.org/choice.txt) and http://us.metamath.org/downloads/megillaward2005he.pdf.

Hilbert's epsilon is described at http://plato.stanford.edu/entries/epsilon-calculus/. This theorem differs from Hilbert's transfinite axiom described on that page in that it requires R We A as an antecedent. Class A collects the sets of least rank for which ph(x) is true. Class B, which emulates the epsilon, is the minimum element in a well-ordering R on A.

If a well-ordering R on A can be expressed in a closed form, as might be the case if we are working with say natural numbers, we can eliminate the antecedent with modus ponens, giving us the exact equivalent of Hilbert's transfinite axiom. Otherwise, we replace R with a dummy set variable, say w, and attach w We A as an antecedent in each step of the ZFC version of the HOL proof until the epsilon is eliminated. At that point, B (which will have w as a free variable) will no longer be present, and we can eliminate w We A by applying 19.23aiv 1674 and weth 5949, using scottexs 5848 to establish the existence of A.

For a version of this theorem scheme using class (meta)variables instead of wff (meta)variables, see htalem 5857.

Hypotheses
Ref Expression
hta.1 |- A = {x | (ph /\ A.y([y / x]ph -> (rank` x) C_ (rank` y)))}
hta.2 |- B = U.{x e. A | A.y e. A -. yRx}
Assertion
Ref Expression
hta |- (R We A -> (ph -> [B / x]ph))
Distinct variable groups:   x,y,R   ph,y

Proof of Theorem hta
StepHypRef Expression
1 hta.1 . . . . 5 |- A = {x | (ph /\ A.y([y / x]ph -> (rank` x) C_ (rank` y)))}
2 weeq2 3647 . . . . 5 |- (A = {x | (ph /\ A.y([y / x]ph -> (rank`
x) C_ (rank` y)))} -> (R We A <-> R We {x | (ph /\ A.y([y / x]ph -> (rank`
x) C_ (rank` y)))}))
31, 2ax-mp 7 . . . 4 |- (R We A <-> R We {x | (ph /\ A.y([y / x]ph -> (rank` x) C_ (rank` y)))})
4 scottexs 5848 . . . . . 6 |- {x | (ph /\ A.y([y / x]ph -> (rank`
x) C_ (rank` y)))} e. _V
5 hta.2 . . . . . . 7 |- B = U.{x e. A | A.y e. A -. yRx}
6 ax-17 1317 . . . . . . . . . . . . . . . 16 |- (ph -> A.yph)
7 hba1 1350 . . . . . . . . . . . . . . . 16 |- (A.y([y / x]ph -> (rank`
x) C_ (rank` y)) -> A.yA.y([y / x]ph -> (rank`
x) C_ (rank` y)))
86, 7hban 1356 . . . . . . . . . . . . . . 15 |- ((ph /\ A.y([y / x]ph -> (rank` x) C_ (rank` y))) -> A.y(ph /\ A.y([y / x]ph -> (rank` x) C_ (rank` y))))
98hbab 1875 . . . . . . . . . . . . . 14 |- (z e. {x | (ph /\ A.y([y / x]ph -> (rank`
x) C_ (rank` y)))} -> A.y z e. {x | (ph /\ A.y([y / x]ph -> (rank`
x) C_ (rank` y)))})
101, 9hbxfr 1992 . . . . . . . . . . . . 13 |- (z e. A -> A.y z e. A)
1110, 9raleqf 2263 . . . . . . . . . . . 12 |- (A = {x | (ph /\ A.y([y / x]ph -> (rank`
x) C_ (rank` y)))} -> (A.y e. A -. yRx <-> A.y e. {x | (ph /\ A.y([y / x]ph -> (rank`
x) C_ (rank` y)))} -. yRx))
121, 11ax-mp 7 . . . . . . . . . . 11 |- (A.y e. A -. yRx <-> A.y e. {x | (ph /\ A.y([y / x]ph -> (rank`
x) C_ (rank` y)))} -. yRx)
1312a1i 8 . . . . . . . . . 10 |- (x e. A -> (A.y e. A -. yRx <-> A.y e. {x | (ph /\ A.y([y / x]ph -> (rank`
x) C_ (rank` y)))} -. yRx))
1413rabbiia 2285 . . . . . . . . 9 |- {x e. A | A.y e. A -. yRx} = {x e. A | A.y e. {x | (ph /\ A.y([y / x]ph -> (rank` x) C_ (rank` y)))} -. yRx}
15 hbab1 1874 . . . . . . . . . . . 12 |- (z e. {x | (ph /\ A.y([y / x]ph -> (rank`
x) C_ (rank` y)))} -> A.x z e. {x | (ph /\ A.y([y / x]ph -> (rank`
x) C_ (rank` y)))})
161, 15hbxfr 1992 . . . . . . . . . . 11 |- (z e. A -> A.x z e. A)
1716, 15rabeqf 2288 . . . . . . . . . 10 |- (A = {x | (ph /\ A.y([y / x]ph -> (rank`
x) C_ (rank` y)))} -> {x e. A | A.y e. {x | (ph /\ A.y([y / x]ph -> (rank`
x) C_ (rank` y)))} -. yRx} = {x e. {x | (ph /\ A.y([y / x]ph -> (rank` x) C_ (rank` y)))} | A.y e. {x | (ph /\ A.y([y / x]ph -> (rank`
x) C_ (rank` y)))} -. yRx})
181, 17ax-mp 7 . . . . . . . . 9 |- {x e. A | A.y e. {x | (ph /\ A.y([y / x]ph -> (rank`
x) C_ (rank` y)))} -. yRx} = {x e. {x | (ph /\ A.y([y / x]ph -> (rank` x) C_ (rank` y)))} | A.y e. {x | (ph /\ A.y([y / x]ph -> (rank`
x) C_ (rank` y)))} -. yRx}
19 hbab1 1874 . . . . . . . . . . 11 |- (v e. {x | (ph /\ A.y([y / x]ph -> (rank`
x) C_ (rank` y)))} -> A.x v e. {x | (ph /\ A.y([y / x]ph -> (rank`
x) C_ (rank` y)))})
20 ax-17 1317 . . . . . . . . . . 11 |- (v e. {x | (ph /\ A.y([y / x]ph -> (rank`
x) C_ (rank` y)))} -> A.z v e. {x | (ph /\ A.y([y / x]ph -> (rank`
x) C_ (rank` y)))})
21 ax-17 1317 . . . . . . . . . . 11 |- (A.y e. {x | (ph /\ A.y([y / x]ph -> (rank`
x) C_ (rank` y)))} -. yRx -> A.zA.y e. {x | (ph /\ A.y([y / x]ph -> (rank` x) C_ (rank` y)))} -. yRx)
22 hbab1 1874 . . . . . . . . . . . 12 |- (y e. {x | (ph /\ A.y([y / x]ph -> (rank`
x) C_ (rank` y)))} -> A.x y e. {x | (ph /\ A.y([y / x]ph -> (rank`
x) C_ (rank` y)))})
23 ax-17 1317 . . . . . . . . . . . 12 |- (-. yRz -> A.x -. yRz)
2422, 23hbral 2146 . . . . . . . . . . 11 |- (A.y e. {x | (ph /\ A.y([y / x]ph -> (rank`
x) C_ (rank` y)))} -. yRz -> A.xA.y e. {x | (ph /\ A.y([y / x]ph -> (rank` x) C_ (rank` y)))} -. yRz)
25 breq2 3342 . . . . . . . . . . . . 13 |- (x = z -> (yRx <-> yRz))
2625notbid 673 . . . . . . . . . . . 12 |- (x = z -> (-. yRx <-> -. yRz))
2726ralbidv 2123 . . . . . . . . . . 11 |- (x = z -> (A.y e. {x | (ph /\ A.y([y / x]ph -> (rank` x) C_ (rank` y)))} -. yRx <-> A.y e. {x | (ph /\ A.y([y / x]ph -> (rank` x) C_ (rank` y)))} -. yRz))
2819, 20, 21, 24, 27cbvrab 2421 . . . . . . . . . 10 |- {x e. {x | (ph /\ A.y([y / x]ph -> (rank` x) C_ (rank` y)))} | A.y e. {x | (ph /\ A.y([y / x]ph -> (rank` x) C_ (rank` y)))} -. yRx} = {z e. {x | (ph /\ A.y([y / x]ph -> (rank` x) C_ (rank` y)))} | A.y e. {x | (ph /\ A.y([y / x]ph -> (rank`
x) C_ (rank` y)))} -. yRz}
29 ax-17 1317 . . . . . . . . . . . . 13 |- (z e. {x | (ph /\ A.y([y / x]ph -> (rank`
x) C_ (rank` y)))} -> A.v z e. {x | (ph /\ A.y([y / x]ph -> (rank`
x) C_ (rank` y)))})
30 ax-17 1317 . . . . . . . . . . . . 13 |- (-. yRz -> A.v -. yRz)
31 ax-17 1317 . . . . . . . . . . . . 13 |- (-. vRz -> A.y -. vRz)
32 breq1 3341 . . . . . . . . . . . . . 14 |- (y = v -> (yRz <-> vRz))
3332notbid 673 . . . . . . . . . . . . 13 |- (y = v -> (-. yRz <-> -. vRz))
349, 29, 30, 31, 33cbvralf 2276 . . . . . . . . . . . 12 |- (A.y e. {x | (ph /\ A.y([y / x]ph -> (rank`
x) C_ (rank` y)))} -. yRz <-> A.v e. {x | (ph /\ A.y([y / x]ph -> (rank`
x) C_ (rank` y)))} -. vRz)
3534a1i 8 . . . . . . . . . . 11 |- (z e. {x | (ph /\ A.y([y / x]ph -> (rank`
x) C_ (rank` y)))} -> (A.y e. {x | (ph /\ A.y([y / x]ph -> (rank`
x) C_ (rank` y)))} -. yRz <-> A.v e. {x | (ph /\ A.y([y / x]ph -> (rank`
x) C_ (rank` y)))} -. vRz))
3635rabbiia 2285 . . . . . . . . . 10 |- {z e. {x | (ph /\ A.y([y / x]ph -> (rank` x) C_ (rank` y)))} | A.y e. {x | (ph /\ A.y([y / x]ph -> (rank` x) C_ (rank` y)))} -. yRz} = {z e. {x | (ph /\ A.y([y / x]ph -> (rank` x) C_ (rank` y)))} | A.v e. {x | (ph /\ A.y([y / x]ph -> (rank`
x) C_ (rank` y)))} -. vRz}
3728, 36eqtri 1908 . . . . . . . . 9 |- {x e. {x | (ph /\ A.y([y / x]ph -> (rank` x) C_ (rank` y)))} | A.y e. {x | (ph /\ A.y([y / x]ph -> (rank` x) C_ (rank` y)))} -. yRx} = {z e. {x | (ph /\ A.y([y / x]ph -> (rank` x) C_ (rank` y)))} | A.v e. {x | (ph /\ A.y([y / x]ph -> (rank`
x) C_ (rank` y)))} -. vRz}
3814, 18, 373eqtri 1912 . . . . . . . 8 |- {x e. A | A.y e. A -. yRx} = {z e. {x | (ph /\ A.y([y / x]ph -> (rank` x) C_ (rank` y)))} | A.v e. {x | (ph /\ A.y([y / x]ph -> (rank`
x) C_ (rank` y)))} -. vRz}
3938unieqi 3187 . . . . . . 7 |- U.{x e. A | A.y e. A -. yRx} = U.{z e. {x | (ph /\ A.y([y / x]ph -> (rank`
x) C_ (rank` y)))} | A.v e. {x | (ph /\ A.y([y / x]ph -> (rank`
x) C_ (rank` y)))} -. vRz}
405, 39eqtri 1908 . . . . . 6 |- B = U.{z e. {x | (ph /\ A.y([y / x]ph -> (rank` x) C_ (rank` y)))} | A.v e. {x | (ph /\ A.y([y / x]ph -> (rank`
x) C_ (rank` y)))} -. vRz}
414, 40htalem 5857 . . . . 5 |- ((R We {x | (ph /\ A.y([y / x]ph -> (rank`
x) C_ (rank` y)))} /\ {x | (ph /\ A.y([y / x]ph -> (rank` x) C_ (rank` y)))} =/= (/)) -> B e. {x | (ph /\ A.y([y / x]ph -> (rank` x) C_ (rank` y)))})
4241ex 402 . . . 4 |- (R We {x | (ph /\ A.y([y / x]ph -> (rank`
x) C_ (rank` y)))} -> ({x | (ph /\ A.y([y / x]ph -> (rank` x) C_ (rank` y)))} =/= (/) -> B e. {x | (ph /\ A.y([y / x]ph -> (rank`
x) C_ (rank` y)))}))
433, 42sylbi 216 . . 3 |- (R We A -> ({x | (ph /\ A.y([y / x]ph -> (rank` x) C_ (rank` y)))} =/= (/) -> B e. {x | (ph /\ A.y([y / x]ph -> (rank`
x) C_ (rank` y)))}))
44 simpl 346 . . . . . 6 |- ((ph /\ A.y([y / x]ph -> (rank` x) C_ (rank` y))) -> ph)
4544ss2abi 2679 . . . . 5 |- {x | (ph /\ A.y([y / x]ph -> (rank`
x) C_ (rank` y)))} C_ {x | ph}
4645sseli 2617 . . . 4 |- (B e. {x | (ph /\ A.y([y / x]ph -> (rank`
x) C_ (rank` y)))} -> B e. {x | ph})
471, 4eqeltri 1967 . . . . . . . 8 |- A e. _V
48 ax-17 1317 . . . . . . . . . . 11 |- (z e. v -> A.x z e. v)
4948, 16hbel 1996 . . . . . . . . . 10 |- (v e. A -> A.x v e. A)
50 ax-17 1317 . . . . . . . . . 10 |- (v e. A -> A.z v e. A)
51 ax-17 1317 . . . . . . . . . 10 |- (A.y e. A -. yRx -> A.zA.y e. A -. yRx)
52 ax-17 1317 . . . . . . . . . . . 12 |- (z e. y -> A.x z e. y)
5352, 16hbel 1996 . . . . . . . . . . 11 |- (y e. A -> A.x y e. A)
5453, 23hbral 2146 . . . . . . . . . 10 |- (A.y e. A -. yRz -> A.xA.y e. A -. yRz)
5526ralbidv 2123 . . . . . . . . . 10 |- (x = z -> (A.y e. A -. yRx <-> A.y e. A -. yRz))
5649, 50, 51, 54, 55cbvrab 2421 . . . . . . . . 9 |- {x e. A | A.y e. A -. yRx} = {z e. A | A.y e. A -. yRz}
57 ssrab2 2692 . . . . . . . . 9 |- {z e. A | A.y e. A -. yRz} C_ A
5856, 57eqsstri 2647 . . . . . . . 8 |- {x e. A | A.y e. A -. yRx} C_ A
5947, 58ssexi 3456 . . . . . . 7 |- {x e. A | A.y e. A -. yRx} e. _V
6059uniex 3794 . . . . . 6 |- U.{x e. A | A.y e. A -. yRx} e. _V
615, 60eqeltri 1967 . . . . 5 |- B e. _V
6261elabs 2489 . . . 4 |- (B e. {x | ph} <-> [B / x]ph)
6346, 62sylib 215 . . 3 |- (B e. {x | (ph /\ A.y([y / x]ph -> (rank`
x) C_ (rank` y)))} -> [B / x]ph)
6443, 63syl6 25 . 2 |- (R We A -> ({x | (ph /\ A.y([y / x]ph -> (rank` x) C_ (rank` y)))} =/= (/) -> [B / x]ph))
65 19.8a 1376 . . 3 |- (ph -> E.xph)
66 scott0s 5849 . . 3 |- (E.xph <-> {x | (ph /\ A.y([y / x]ph -> (rank`
x) C_ (rank` y)))} =/= (/))
6765, 66sylib 215 . 2 |- (ph -> {x | (ph /\ A.y([y / x]ph -> (rank`
x) C_ (rank` y)))} =/= (/))
6864, 67syl5 20 1 |- (R We A -> (ph -> [B / x]ph))
Colors of variables: wff set class
Syntax hints:  -. wn 2   -> wi 3   <-> wb 163   /\ wa 240  A.wal 1296   = wceq 1298   e. wcel 1300  E.wex 1326  [wsbc 1534  {cab 1871   =/= wne 2017  A.wral 2105  {crab 2108  _Vcvv 2292   C_ wss 2593  (/)c0 2875  U.cuni 3177   class class class wbr 3338   We wwe 3624  ` cfv 3998  rankcrnk 5749
This theorem was proved from axioms:  ax-1 4  ax-2 5  ax-3 6  ax-mp 7  ax-7 1304  ax-gen 1305  ax-8 1306  ax-9 1307  ax-10 1308  ax-11 1309  ax-12 1310  ax-13 1311  ax-14 1312  ax-17 1317  ax-4 1319  ax-5o 1321  ax-6o 1324  ax-9o 1481  ax-10o 1500  ax-16 1580  ax-11o 1588  ax-ext 1865  ax-rep 3428  ax-sep 3438  ax-nul 3445  ax-pow 3481  ax-pr 3524  ax-un 3790  ax-reg 5695  ax-inf2 5731
This theorem depends on definitions:  df-bi 164  df-or 241  df-an 242  df-3or 859  df-3an 860  df-ex 1327  df-sb 1536  df-eu 1775  df-mo 1776  df-clab 1872  df-cleq 1877  df-clel 1880  df-ne 2019  df-ral 2109  df-rex 2110  df-reu 2111  df-rab 2112  df-v 2294  df-sbc 2454  df-csb 2541  df-dif 2597  df-un 2600  df-in 2603  df-ss 2605  df-pss 2607  df-nul 2876  df-if 2983  df-pw 3035  df-sn 3049  df-pr 3050  df-tp 3052  df-op 3053  df-uni 3178  df-int 3215  df-iun 3257  df-iin 3258  df-br 3339  df-opab 3396  df-tr 3412  df-eprel 3583  df-id 3586  df-po 3591  df-so 3604  df-fr 3625  df-we 3644  df-ord 3660  df-on 3661  df-lim 3662  df-suc 3663  df-om 3950  df-xp 4000  df-rel 4001  df-cnv 4002  df-co 4003  df-dm 4004  df-rn 4005  df-res 4006  df-ima 4007  df-fun 4008  df-fn 4009  df-fv 4014  df-rdg 5140  df-r1 5750  df-rank 5751
Copyright terms: Public domain