Metamath Proof Explorer


Theorem dfid3

Description: A stronger version of df-id that does not require x and y to be disjoint. This is not the definition since, in order to pass our definition soundness test, a definition has to have disjoint dummy variables, see conventions . The proof can be instructive in showing how disjoint variable conditions may be eliminated, a task that is not necessarily obvious. (Contributed by NM, 5-Feb-2008) (Revised by Mario Carneiro, 18-Nov-2016)

Use df-id instead to make the semantics of the constructor df-opab clearer (in usages, x , y will typically be dummy variables, so can be assumed disjoint). (New usage is discouraged.)

Ref Expression
Assertion dfid3 ⊢ I = x y | x = y

Proof

Step Hyp Ref Expression
1 df-id ⊢ I = x z | x = z
2 equcom ⊢ x = z ↔ z = x
3 2 anbi1ci ⊢ w = x z ∧ x = z ↔ z = x ∧ w = x z
4 3 exbii ⊢ ∃ z w = x z ∧ x = z ↔ ∃ z z = x ∧ w = x z
5 opeq2 ⊢ z = x → x z = x x
6 5 eqeq2d ⊢ z = x → w = x z ↔ w = x x
7 6 equsexvw ⊢ ∃ z z = x ∧ w = x z ↔ w = x x
8 equid ⊢ x = x
9 8 biantru ⊢ w = x x ↔ w = x x ∧ x = x
10 4 7 9 3bitri ⊢ ∃ z w = x z ∧ x = z ↔ w = x x ∧ x = x
11 10 exbii ⊢ ∃ x ∃ z w = x z ∧ x = z ↔ ∃ x w = x x ∧ x = x
12 nfe1 ⊢ Ⅎ x ∃ x w = x x ∧ x = x
13 12 19.9 ⊢ ∃ x ∃ x w = x x ∧ x = x ↔ ∃ x w = x x ∧ x = x
14 11 13 bitr4i ⊢ ∃ x ∃ z w = x z ∧ x = z ↔ ∃ x ∃ x w = x x ∧ x = x
15 opeq2 ⊢ x = y → x x = x y
16 15 eqeq2d ⊢ x = y → w = x x ↔ w = x y
17 equequ2 ⊢ x = y → x = x ↔ x = y
18 16 17 anbi12d ⊢ x = y → w = x x ∧ x = x ↔ w = x y ∧ x = y
19 18 sps ⊢ ∀ x x = y → w = x x ∧ x = x ↔ w = x y ∧ x = y
20 19 drex1 ⊢ ∀ x x = y → ∃ x w = x x ∧ x = x ↔ ∃ y w = x y ∧ x = y
21 20 drex2 ⊢ ∀ x x = y → ∃ x ∃ x w = x x ∧ x = x ↔ ∃ x ∃ y w = x y ∧ x = y
22 14 21 bitrid ⊢ ∀ x x = y → ∃ x ∃ z w = x z ∧ x = z ↔ ∃ x ∃ y w = x y ∧ x = y
23 nfnae ⊢ Ⅎ x ¬ ∀ x x = y
24 nfnae ⊢ Ⅎ y ¬ ∀ x x = y
25 nfcvd ⊢ ¬ ∀ x x = y → Ⅎ _ y w
26 nfcvf2 ⊢ ¬ ∀ x x = y → Ⅎ _ y x
27 nfcvd ⊢ ¬ ∀ x x = y → Ⅎ _ y z
28 26 27 nfopd ⊢ ¬ ∀ x x = y → Ⅎ _ y x z
29 25 28 nfeqd ⊢ ¬ ∀ x x = y → Ⅎ y w = x z
30 26 27 nfeqd ⊢ ¬ ∀ x x = y → Ⅎ y x = z
31 29 30 nfand ⊢ ¬ ∀ x x = y → Ⅎ y w = x z ∧ x = z
32 opeq2 ⊢ z = y → x z = x y
33 32 eqeq2d ⊢ z = y → w = x z ↔ w = x y
34 equequ2 ⊢ z = y → x = z ↔ x = y
35 33 34 anbi12d ⊢ z = y → w = x z ∧ x = z ↔ w = x y ∧ x = y
36 35 a1i ⊢ ¬ ∀ x x = y → z = y → w = x z ∧ x = z ↔ w = x y ∧ x = y
37 24 31 36 cbvexd ⊢ ¬ ∀ x x = y → ∃ z w = x z ∧ x = z ↔ ∃ y w = x y ∧ x = y
38 23 37 exbid ⊢ ¬ ∀ x x = y → ∃ x ∃ z w = x z ∧ x = z ↔ ∃ x ∃ y w = x y ∧ x = y
39 22 38 pm2.61i ⊢ ∃ x ∃ z w = x z ∧ x = z ↔ ∃ x ∃ y w = x y ∧ x = y
40 39 abbii ⊢ w | ∃ x ∃ z w = x z ∧ x = z = w | ∃ x ∃ y w = x y ∧ x = y
41 df-opab ⊢ x z | x = z = w | ∃ x ∃ z w = x z ∧ x = z
42 df-opab ⊢ x y | x = y = w | ∃ x ∃ y w = x y ∧ x = y
43 40 41 42 3eqtr4i ⊢ x z | x = z = x y | x = y
44 1 43 eqtri ⊢ I = x y | x = y