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

Theorem dfid3 2914
Description: A stronger version of df-id 2913 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 2913 . . 3 |- I = {<.x, z>. | x = z}
2 df-opab 2741 . . 3 |- {<.x, z>. | x = z} = {w | E.xE.z(w = <.x, z>. /\ x = z)}
3 opeq2 2553 . . . . . . . . . . 11 |- (x = y -> <.x, x>. = <.x, y>.)
43eqeq2d 1529 . . . . . . . . . 10 |- (x = y -> (w = <.x, x>. <-> w = <.x, y>.))
5 equequ2 1172 . . . . . . . . . 10 |- (x = y -> (x = x <-> x = y))
64, 5anbi12d 631 . . . . . . . . 9 |- (x = y -> ((w = <.x, x>. /\ x = x) <-> (w = <.x, y>. /\ x = y)))
76a4s 1020 . . . . . . . 8 |- (A.x x = y -> ((w = <.x, x>. /\ x = x) <-> (w = <.x, y>. /\ x = y)))
87drex1 1193 . . . . . . 7 |- (A.x x = y -> (E.x(w = <.x, x>. /\ x = x) <-> E.y(w = <.x, y>. /\ x = y)))
98drex2 1194 . . . . . 6 |- (A.x x = y -> (E.xE.x(w = <.x, x>. /\ x = x) <-> E.xE.y(w = <.x, y>. /\ x = y)))
10 ancom 437 . . . . . . . . . . 11 |- ((w = <.x, z>. /\ x = z) <-> (x = z /\ w = <.x, z>.))
11 equcom 1166 . . . . . . . . . . . 12 |- (x = z <-> z = x)
1211anbi1i 484 . . . . . . . . . . 11 |- ((x = z /\ w = <.x, z>.) <-> (z = x /\ w = <.x, z>.))
1310, 12bitri 171 . . . . . . . . . 10 |- ((w = <.x, z>. /\ x = z) <-> (z = x /\ w = <.x, z>.))
1413exbii 1087 . . . . . . . . 9 |- (E.z(w = <.x, z>. /\ x = z) <-> E.z(z = x /\ w = <.x, z>.))
15 visset 1859 . . . . . . . . . 10 |- x e. V
16 opeq2 2553 . . . . . . . . . . 11 |- (z = x -> <.x, z>. = <.x, x>.)
1716eqeq2d 1529 . . . . . . . . . 10 |- (z = x -> (w = <.x, z>. <-> w = <.x, x>.))
1815, 17ceqsexv 1881 . . . . . . . . 9 |- (E.z(z = x /\ w = <.x, z>.) <-> w = <.x, x>.)
19 equid 1162 . . . . . . . . . 10 |- x = x
2019biantru 729 . . . . . . . . 9 |- (w = <.x, x>. <-> (w = <.x, x>. /\ x = x))
2114, 18, 203bitri 175 . . . . . . . 8 |- (E.z(w = <.x, z>. /\ x = z) <-> (w = <.x, x>. /\ x = x))
2221exbii 1087 . . . . . . 7 |- (E.xE.z(w = <.x, z>. /\ x = z) <-> E.x(w = <.x, x>. /\ x = x))
23 hbe1 1052 . . . . . . . 8 |- (E.x(w = <.x, x>. /\ x = x) -> A.xE.x(w = <.x, x>. /\ x = x))
242319.9 1072 . . . . . . 7 |- (E.xE.x(w = <.x, x>. /\ x = x) <-> E.x(w = <.x, x>. /\ x = x))
2522, 24bitr4i 174 . . . . . 6 |- (E.xE.z(w = <.x, z>. /\ x = z) <-> E.xE.x(w = <.x, x>. /\ x = x))
269, 25syl5bb 535 . . . . 5 |- (A.x x = y -> (E.xE.z(w = <.x, z>. /\ x = z) <-> E.xE.y(w = <.x, y>. /\ x = y)))
27 hbnae 1184 . . . . . 6 |- (-. A.x x = y -> A.x -. A.x x = y)
28 hbnae 1184 . . . . . . 7 |- (-. A.x x = y -> A.y -. A.x x = y)
29 ax-17 1007 . . . . . . . . . 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 1396 . . . . . . . . . . 11 |- (-. A.y y = x -> (v e. x -> A.y v e. x))
3231nalequcoms 1181 . . . . . . . . . 10 |- (-. A.x x = y -> (v e. x -> A.y v e. x))
33 ax-17 1007 . . . . . . . . . . 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 2562 . . . . . . . . 9 |- (-. A.x x = y -> (v e. <.x, z>. -> A.y v e. <.x, z>.))
3628, 30, 35hbeqd 1959 . . . . . . . 8 |- (-. A.x x = y -> (w = <.x, z>. -> A.y w = <.x, z>.))
37 dveeq1 1393 . . . . . . . . 9 |- (-. A.y y = x -> (x = z -> A.y x = z))
3837nalequcoms 1181 . . . . . . . 8 |- (-. A.x x = y -> (x = z -> A.y x = z))
3936, 38hband 1147 . . . . . . 7 |- (-. A.x x = y -> ((w = <.x, z>. /\ x = z) -> A.y(w = <.x, z>. /\ x = z)))
40 opeq2 2553 . . . . . . . . . 10 |- (z = y -> <.x, z>. = <.x, y>.)
4140eqeq2d 1529 . . . . . . . . 9 |- (z = y -> (w = <.x, z>. <-> w = <.x, y>.))
42 equequ2 1172 . . . . . . . . 9 |- (z = y -> (x = z <-> x = y))
4341, 42anbi12d 631 . . . . . . . 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 1359 . . . . . 6 |- (-. A.x x = y -> (E.z(w = <.x, z>. /\ x = z) <-> E.y(w = <.x, y>. /\ x = y)))
4627, 45exbid 1141 . . . . 5 |- (-. A.x x = y -> (E.xE.z(w = <.x, z>. /\ x = z) <-> E.xE.y(w = <.x, y>. /\ x = y)))
4726, 46pm2.61i 124 . . . 4 |- (E.xE.z(w = <.x, z>. /\ x = z) <-> E.xE.y(w = <.x, y>. /\ x = y))
4847abbii 1618 . . 3 |- {w | E.xE.z(w = <.x, z>. /\ x = z)} = {w | E.xE.y(w = <.x, y>. /\ x = y)}
491, 2, 483eqtri 1542 . 2 |- I = {w | E.xE.y(w = <.x, y>. /\ x = y)}
50 df-opab 2741 . 2 |- {<.x, y>. | x = y} = {w | E.xE.y(w = <.x, y>. /\ x = y)}
5149, 50eqtr4i 1541 1 |- I = {<.x, y>. | x = y}
Colors of variables: wff set class
Syntax hints:  -. wn 2   -> wi 3   <-> wb 144   /\ wa 221  A.wal 990   = wceq 992   e. wcel 994  E.wex 1016  {cab 1505  <.cop 2469  {copab 2740  Icid 2909
This theorem is referenced by:  dfid2 2915
This theorem was proved from axioms:  ax-1 4  ax-2 5  ax-3 6  ax-mp 7  ax-7 998  ax-gen 999  ax-8 1000  ax-10 1002  ax-12 1004  ax-14 1006  ax-17 1007  ax-4 1009  ax-5o 1011  ax-6o 1014  ax-9o 1159  ax-10o 1177  ax-16 1247  ax-11o 1255  ax-ext 1500
This theorem depends on definitions:  df-bi 145  df-or 222  df-an 223  df-ex 1017  df-sb 1209  df-clab 1506  df-cleq 1511  df-clel 1514  df-v 1858  df-un 2102  df-sn 2470  df-pr 2471  df-op 2474  df-opab 2741  df-id 2913
Copyright terms: Public domain