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

Theorem dfid3 2836
Description: A stronger version of df-id 2835 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 2835 . . 3 |- I = {<.x, z>. | x = z}
2 df-opab 2667 . . 3 |- {<.x, z>. | x = z} = {w | E.xE.z(w = <.x, z>. /\ x = z)}
3 opeq2 2488 . . . . . . . . . . 11 |- (x = y -> <.x, x>. = <.x, y>.)
43eqeq2d 1486 . . . . . . . . . 10 |- (x = y -> (w = <.x, x>. <-> w = <.x, y>.))
5 equequ2 1135 . . . . . . . . . 10 |- (x = y -> (x = x <-> x = y))
64, 5anbi12d 628 . . . . . . . . 9 |- (x = y -> ((w = <.x, x>. /\ x = x) <-> (w = <.x, y>. /\ x = y)))
76a4s 984 . . . . . . . 8 |- (A.x x = y -> ((w = <.x, x>. /\ x = x) <-> (w = <.x, y>. /\ x = y)))
87drex1 1156 . . . . . . 7 |- (A.x x = y -> (E.x(w = <.x, x>. /\ x = x) <-> E.y(w = <.x, y>. /\ x = y)))
98drex2 1157 . . . . . 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 1129 . . . . . . . . . . . 12 |- (x = z <-> z = x)
1211anbi1i 481 . . . . . . . . . . 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 1051 . . . . . . . . 9 |- (E.z(w = <.x, z>. /\ x = z) <-> E.z(z = x /\ w = <.x, z>.))
15 visset 1813 . . . . . . . . . 10 |- x e. V
16 opeq2 2488 . . . . . . . . . . 11 |- (z = x -> <.x, z>. = <.x, x>.)
1716eqeq2d 1486 . . . . . . . . . 10 |- (z = x -> (w = <.x, z>. <-> w = <.x, x>.))
1815, 17ceqsexv 1835 . . . . . . . . 9 |- (E.z(z = x /\ w = <.x, z>.) <-> w = <.x, x>.)
19 equid 1126 . . . . . . . . . 10 |- x = x
2019biantru 724 . . . . . . . . 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 1051 . . . . . . 7 |- (E.xE.z(w = <.x, z>. /\ x = z) <-> E.x(w = <.x, x>. /\ x = x))
23 hbe1 1016 . . . . . . . 8 |- (E.x(w = <.x, x>. /\ x = x) -> A.xE.x(w = <.x, x>. /\ x = x))
242319.9 1036 . . . . . . 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 532 . . . . 5 |- (A.x x = y -> (E.xE.z(w = <.x, z>. /\ x = z) <-> E.xE.y(w = <.x, y>. /\ x = y)))
27 hbnae 1147 . . . . . 6 |- (-. A.x x = y -> A.x -. A.x x = y)
28 hbnae 1147 . . . . . . 7 |- (-. A.x x = y -> A.y -. A.x x = y)
29 ax-17 971 . . . . . . . . . 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 1357 . . . . . . . . . . 11 |- (-. A.y y = x -> (v e. x -> A.y v e. x))
3231nalequcoms 1144 . . . . . . . . . 10 |- (-. A.x x = y -> (v e. x -> A.y v e. x))
33 ax-17 971 . . . . . . . . . . 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 2497 . . . . . . . . 9 |- (-. A.x x = y -> (v e. <.x, z>. -> A.y v e. <.x, z>.))
3628, 30, 35hbeqd 1913 . . . . . . . 8 |- (-. A.x x = y -> (w = <.x, z>. -> A.y w = <.x, z>.))
37 dveeq1 1354 . . . . . . . . 9 |- (-. A.y y = x -> (x = z -> A.y x = z))
3837nalequcoms 1144 . . . . . . . 8 |- (-. A.x x = y -> (x = z -> A.y x = z))
3936, 38hband 1111 . . . . . . 7 |- (-. A.x x = y -> ((w = <.x, z>. /\ x = z) -> A.y(w = <.x, z>. /\ x = z)))
40 opeq2 2488 . . . . . . . . . 10 |- (z = y -> <.x, z>. = <.x, y>.)
4140eqeq2d 1486 . . . . . . . . 9 |- (z = y -> (w = <.x, z>. <-> w = <.x, y>.))
42 equequ2 1135 . . . . . . . . 9 |- (z = y -> (x = z <-> x = y))
4341, 42anbi12d 628 . . . . . . . 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 1321 . . . . . 6 |- (-. A.x x = y -> (E.z(w = <.x, z>. /\ x = z) <-> E.y(w = <.x, y>. /\ x = y)))
4627, 45exbid 1105 . . . . 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 1575 . . 3 |- {w | E.xE.z(w = <.x, z>. /\ x = z)} = {w | E.xE.y(w = <.x, y>. /\ x = y)}
491, 2, 483eqtr 1499 . 2 |- I = {w | E.xE.y(w = <.x, y>. /\ x = y)}
50 df-opab 2667 . 2 |- {<.x, y>. | x = y} = {w | E.xE.y(w = <.x, y>. /\ x = y)}
5149, 50eqtr4 1498 1 |- I = {<.x, y>. | x = y}
Colors of variables: wff set class
Syntax hints:  -. wn 2   -> wi 3   <-> wb 146   /\ wa 223  A.wal 954   = wceq 956   e. wcel 958  E.wex 980  {cab 1463  <.cop 2411  {copab 2666  Icid 2831
This theorem is referenced by:  dfid2 2837
This theorem was proved from axioms:  ax-1 4  ax-2 5  ax-3 6  ax-mp 7  ax-7 962  ax-gen 963  ax-8 964  ax-10 966  ax-12 968  ax-14 970  ax-17 971  ax-4 973  ax-5o 975  ax-6o 978  ax-9o 1123  ax-10o 1140  ax-16 1210  ax-11o 1218  ax-ext 1459
This theorem depends on definitions:  df-bi 147  df-or 224  df-an 225  df-ex 981  df-sb 1172  df-clab 1464  df-cleq 1469  df-clel 1472  df-v 1812  df-un 2050  df-sn 2412  df-pr 2413  df-op 2416  df-opab 2667  df-id 2835
Copyright terms: Public domain