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

Theorem dfid3 2799
Description: A stronger version of df-id 2797 that doesn't require x and y to be distinct. Ordinarily, we wouldn't use this as a definition, since non-distinct dummy variables would make soundness verification more difficult (as the proof here shows). The proof can be instructive in showing how distinct variable requirements may be eliminated, a task that is not necessarily obvious.
Assertion
Ref Expression
dfid3 |- I = {<.x, y>. | x = y}

Proof of Theorem dfid3
StepHypRef Expression
1 df-id 2797 . . 3 |- I = {<.x, z>. | x = z}
2 df-opab 2635 . . 3 |- {<.x, z>. | x = z} = {w | E.xE.z(w = <.x, z>. /\ x = z)}
3 opeq2 2457 . . . . . . . . . . 11 |- (x = y -> <.x, x>. = <.x, y>.)
43eqeq2d 1462 . . . . . . . . . 10 |- (x = y -> (w = <.x, x>. <-> w = <.x, y>.))
5 equequ2 1122 . . . . . . . . . 10 |- (x = y -> (x = x <-> x = y))
64, 5anbi12d 626 . . . . . . . . 9 |- (x = y -> ((w = <.x, x>. /\ x = x) <-> (w = <.x, y>. /\ x = y)))
76a4s 960 . . . . . . . 8 |- (A.x x = y -> ((w = <.x, x>. /\ x = x) <-> (w = <.x, y>. /\ x = y)))
87drex1 1139 . . . . . . 7 |- (A.x x = y -> (E.x(w = <.x, x>. /\ x = x) <-> E.y(w = <.x, y>. /\ x = y)))
98drex2 1140 . . . . . 6 |- (A.x x = y -> (E.xE.x(w = <.x, x>. /\ x = x) <-> E.xE.y(w = <.x, y>. /\ x = y)))
10 ancom 435 . . . . . . . . . . 11 |- ((w = <.x, z>. /\ x = z) <-> (x = z /\ w = <.x, z>.))
11 equcom 1116 . . . . . . . . . . . 12 |- (x = z <-> z = x)
1211anbi1i 480 . . . . . . . . . . 11 |- ((x = z /\ w = <.x, z>.) <-> (z = x /\ w = <.x, z>.))
1310, 12bitr 173 . . . . . . . . . 10 |- ((w = <.x, z>. /\ x = z) <-> (z = x /\ w = <.x, z>.))
1413exbii 1027 . . . . . . . . 9 |- (E.z(w = <.x, z>. /\ x = z) <-> E.z(z = x /\ w = <.x, z>.))
15 visset 1788 . . . . . . . . . 10 |- x e. V
16 opeq2 2457 . . . . . . . . . . 11 |- (z = x -> <.x, z>. = <.x, x>.)
1716eqeq2d 1462 . . . . . . . . . 10 |- (z = x -> (w = <.x, z>. <-> w = <.x, x>.))
1815, 17ceqsexv 1810 . . . . . . . . 9 |- (E.z(z = x /\ w = <.x, z>.) <-> w = <.x, x>.)
19 equid 1113 . . . . . . . . . 10 |- x = x
2019biantru 721 . . . . . . . . 9 |- (w = <.x, x>. <-> (w = <.x, x>. /\ x = x))
2114, 18, 203bitr 177 . . . . . . . 8 |- (E.z(w = <.x, z>. /\ x = z) <-> (w = <.x, x>. /\ x = x))
2221exbii 1027 . . . . . . 7 |- (E.xE.z(w = <.x, z>. /\ x = z) <-> E.x(w = <.x, x>. /\ x = x))
23 hbe1 990 . . . . . . . 8 |- (E.x(w = <.x, x>. /\ x = x) -> A.xE.x(w = <.x, x>. /\ x = x))
242319.9 1012 . . . . . . 7 |- (E.xE.x(w = <.x, x>. /\ x = x) <-> E.x(w = <.x, x>. /\ x = x))
2522, 24bitr4 176 . . . . . 6 |- (E.xE.z(w = <.x, z>. /\ x = z) <-> E.xE.x(w = <.x, x>. /\ x = x))
269, 25syl5bb 530 . . . . 5 |- (A.x x = y -> (E.xE.z(w = <.x, z>. /\ x = z) <-> E.xE.y(w = <.x, y>. /\ x = y)))
27 hbnae 1130 . . . . . 6 |- (-. A.x x = y -> A.x -. A.x x = y)
28 hbnae 1130 . . . . . . 7 |- (-. A.x x = y -> A.y -. A.x x = y)
29 ax-17 1190 . . . . . . . . . 10 |- (v e. w -> A.y v e. w)
3029a1i 8 . . . . . . . . 9 |- (-. A.x x = y -> (v e. w -> A.y v e. w))
31 dveel2 1337 . . . . . . . . . . 11 |- (-. A.y y = x -> (v e. x -> A.y v e. x))
3231nalequcoms 1127 . . . . . . . . . 10 |- (-. A.x x = y -> (v e. x -> A.y v e. x))
33 ax-17 1190 . . . . . . . . . . 11 |- (v e. z -> A.y v e. z)
3433a1i 8 . . . . . . . . . 10 |- (-. A.x x = y -> (v e. z -> A.y v e. z))
3528, 32, 34hbopd 2466 . . . . . . . . 9 |- (-. A.x x = y -> (v e. <.x, z>. -> A.y v e. <.x, z>.))
3628, 30, 35hbeqd 1885 . . . . . . . 8 |- (-. A.x x = y -> (w = <.x, z>. -> A.y w = <.x, z>.))
37 dveeq1 1335 . . . . . . . . 9 |- (-. A.y y = x -> (x = z -> A.y x = z))
3837nalequcoms 1127 . . . . . . . 8 |- (-. A.x x = y -> (x = z -> A.y x = z))
3936, 38hband 1087 . . . . . . 7 |- (-. A.x x = y -> ((w = <.x, z>. /\ x = z) -> A.y(w = <.x, z>. /\ x = z)))
40 opeq2 2457 . . . . . . . . . 10 |- (z = y -> <.x, z>. = <.x, y>.)
4140eqeq2d 1462 . . . . . . . . 9 |- (z = y -> (w = <.x, z>. <-> w = <.x, y>.))
42 equequ2 1122 . . . . . . . . 9 |- (z = y -> (x = z <-> x = y))
4341, 42anbi12d 626 . . . . . . . 8 |- (z = y -> ((w = <.x, z>. /\ x = z) <-> (w = <.x, y>. /\ x = y)))
4443a1i 8 . . . . . . 7 |- (-. A.x x = y -> (z = y -> ((w = <.x, z>. /\ x = z) <-> (w = <.x, y>. /\ x = y))))
4528, 39, 44cbvexd 1303 . . . . . 6 |- (-. A.x x = y -> (E.z(w = <.x, z>. /\ x = z) <-> E.y(w = <.x, y>. /\ x = y)))
4627, 45exbid 1081 . . . . 5 |- (-. A.x x = y -> (E.xE.z(w = <.x, z>. /\ x = z) <-> E.xE.y(w = <.x, y>. /\ x = y)))
4726, 46pm2.61i 126 . . . 4 |- (E.xE.z(w = <.x, z>. /\ x = z) <-> E.xE.y(w = <.x, y>. /\ x = y))
4847abbii 1551 . . 3 |- {w | E.xE.z(w = <.x, z>. /\ x = z)} = {w | E.xE.y(w = <.x, y>. /\ x = y)}
491, 2, 483eqtr 1475 . 2 |- I = {w | E.xE.y(w = <.x, y>. /\ x = y)}
50 df-opab 2635 . 2 |- {<.x, y>. | x = y} = {w | E.xE.y(w = <.x, y>. /\ x = y)}
5149, 50eqtr4 1474 1 |- I = {<.x, y>. | x = y}
Colors of variables: wff set class
Syntax hints:  -. wn 2   -> wi 3   <-> wb 146   /\ wa 223  A.wal 950  E.wex 956   = wceq 1099   e. wcel 1105  {cab 1440  <.cop 2382  {copab 2634  Icid 2793
This theorem is referenced by:  dfid2 2800
This theorem was proved from axioms:  ax-1 4  ax-2 5  ax-3 6  ax-mp 7  ax-4 951  ax-5 952  ax-6 953  ax-7 954  ax-gen 955  ax-8 1101  ax-9 1102  ax-10 1103  ax-12 1104  ax-14 1108  ax-17 1190  ax-16 1194  ax-11o 1202  ax-ext 1436
This theorem depends on definitions:  df-bi 147  df-or 224  df-an 225  df-ex 957  df-sb 1155  df-clab 1441  df-cleq 1446  df-clel 1449  df-v 1787  df-un 2021  df-sn 2383  df-pr 2384  df-op 2387  df-opab 2635  df-id 2797
Copyright terms: Public domain