Metamath Proof Explorer


Theorem reuxfrdf

Description: Transfer existential uniqueness from a variable x to another variable y contained in expression A . Cf. reuxfrd (Contributed by Thierry Arnoux, 7-Apr-2017) (Revised by Thierry Arnoux, 8-Oct-2017) (Revised by Thierry Arnoux, 30-Mar-2018)

Ref Expression
Hypotheses reuxfrdf.0 𝑦 𝐵
reuxfrdf.1 ( ( 𝜑𝑦𝐶 ) → 𝐴𝐵 )
reuxfrdf.2 ( ( 𝜑𝑥𝐵 ) → ∃* 𝑦𝐶 𝑥 = 𝐴 )
Assertion reuxfrdf ( 𝜑 → ( ∃! 𝑥𝐵𝑦𝐶 ( 𝑥 = 𝐴𝜓 ) ↔ ∃! 𝑦𝐶 𝜓 ) )

Proof

Step Hyp Ref Expression
1 reuxfrdf.0 𝑦 𝐵
2 reuxfrdf.1 ( ( 𝜑𝑦𝐶 ) → 𝐴𝐵 )
3 reuxfrdf.2 ( ( 𝜑𝑥𝐵 ) → ∃* 𝑦𝐶 𝑥 = 𝐴 )
4 rmoan ( ∃* 𝑦𝐶 𝑥 = 𝐴 → ∃* 𝑦𝐶 ( 𝜓𝑥 = 𝐴 ) )
5 3 4 syl ( ( 𝜑𝑥𝐵 ) → ∃* 𝑦𝐶 ( 𝜓𝑥 = 𝐴 ) )
6 ancom ( ( 𝜓𝑥 = 𝐴 ) ↔ ( 𝑥 = 𝐴𝜓 ) )
7 6 rmobii ( ∃* 𝑦𝐶 ( 𝜓𝑥 = 𝐴 ) ↔ ∃* 𝑦𝐶 ( 𝑥 = 𝐴𝜓 ) )
8 5 7 sylib ( ( 𝜑𝑥𝐵 ) → ∃* 𝑦𝐶 ( 𝑥 = 𝐴𝜓 ) )
9 8 ralrimiva ( 𝜑 → ∀ 𝑥𝐵 ∃* 𝑦𝐶 ( 𝑥 = 𝐴𝜓 ) )
10 df-rmo ( ∃* 𝑦𝐶 ( 𝑥 = 𝐴𝜓 ) ↔ ∃* 𝑦 ( 𝑦𝐶 ∧ ( 𝑥 = 𝐴𝜓 ) ) )
11 10 ralbii ( ∀ 𝑥𝐵 ∃* 𝑦𝐶 ( 𝑥 = 𝐴𝜓 ) ↔ ∀ 𝑥𝐵 ∃* 𝑦 ( 𝑦𝐶 ∧ ( 𝑥 = 𝐴𝜓 ) ) )
12 df-ral ( ∀ 𝑥𝐵 ∃* 𝑦 ( 𝑦𝐶 ∧ ( 𝑥 = 𝐴𝜓 ) ) ↔ ∀ 𝑥 ( 𝑥𝐵 → ∃* 𝑦 ( 𝑦𝐶 ∧ ( 𝑥 = 𝐴𝜓 ) ) ) )
13 1 nfcri 𝑦 𝑥𝐵
14 13 moanim ( ∃* 𝑦 ( 𝑥𝐵 ∧ ( 𝑦𝐶 ∧ ( 𝑥 = 𝐴𝜓 ) ) ) ↔ ( 𝑥𝐵 → ∃* 𝑦 ( 𝑦𝐶 ∧ ( 𝑥 = 𝐴𝜓 ) ) ) )
15 14 albii ( ∀ 𝑥 ∃* 𝑦 ( 𝑥𝐵 ∧ ( 𝑦𝐶 ∧ ( 𝑥 = 𝐴𝜓 ) ) ) ↔ ∀ 𝑥 ( 𝑥𝐵 → ∃* 𝑦 ( 𝑦𝐶 ∧ ( 𝑥 = 𝐴𝜓 ) ) ) )
16 12 15 bitr4i ( ∀ 𝑥𝐵 ∃* 𝑦 ( 𝑦𝐶 ∧ ( 𝑥 = 𝐴𝜓 ) ) ↔ ∀ 𝑥 ∃* 𝑦 ( 𝑥𝐵 ∧ ( 𝑦𝐶 ∧ ( 𝑥 = 𝐴𝜓 ) ) ) )
17 2euswapv ( ∀ 𝑥 ∃* 𝑦 ( 𝑥𝐵 ∧ ( 𝑦𝐶 ∧ ( 𝑥 = 𝐴𝜓 ) ) ) → ( ∃! 𝑥𝑦 ( 𝑥𝐵 ∧ ( 𝑦𝐶 ∧ ( 𝑥 = 𝐴𝜓 ) ) ) → ∃! 𝑦𝑥 ( 𝑥𝐵 ∧ ( 𝑦𝐶 ∧ ( 𝑥 = 𝐴𝜓 ) ) ) ) )
18 df-reu ( ∃! 𝑥𝐵𝑦𝐶 ( 𝑥 = 𝐴𝜓 ) ↔ ∃! 𝑥 ( 𝑥𝐵 ∧ ∃ 𝑦𝐶 ( 𝑥 = 𝐴𝜓 ) ) )
19 13 r19.41 ( ∃ 𝑦𝐶 ( ( 𝑥 = 𝐴𝜓 ) ∧ 𝑥𝐵 ) ↔ ( ∃ 𝑦𝐶 ( 𝑥 = 𝐴𝜓 ) ∧ 𝑥𝐵 ) )
20 ancom ( ( 𝑥𝐵 ∧ ( 𝑥 = 𝐴𝜓 ) ) ↔ ( ( 𝑥 = 𝐴𝜓 ) ∧ 𝑥𝐵 ) )
21 20 rexbii ( ∃ 𝑦𝐶 ( 𝑥𝐵 ∧ ( 𝑥 = 𝐴𝜓 ) ) ↔ ∃ 𝑦𝐶 ( ( 𝑥 = 𝐴𝜓 ) ∧ 𝑥𝐵 ) )
22 ancom ( ( 𝑥𝐵 ∧ ∃ 𝑦𝐶 ( 𝑥 = 𝐴𝜓 ) ) ↔ ( ∃ 𝑦𝐶 ( 𝑥 = 𝐴𝜓 ) ∧ 𝑥𝐵 ) )
23 19 21 22 3bitr4i ( ∃ 𝑦𝐶 ( 𝑥𝐵 ∧ ( 𝑥 = 𝐴𝜓 ) ) ↔ ( 𝑥𝐵 ∧ ∃ 𝑦𝐶 ( 𝑥 = 𝐴𝜓 ) ) )
24 df-rex ( ∃ 𝑦𝐶 ( 𝑥𝐵 ∧ ( 𝑥 = 𝐴𝜓 ) ) ↔ ∃ 𝑦 ( 𝑦𝐶 ∧ ( 𝑥𝐵 ∧ ( 𝑥 = 𝐴𝜓 ) ) ) )
25 23 24 bitr3i ( ( 𝑥𝐵 ∧ ∃ 𝑦𝐶 ( 𝑥 = 𝐴𝜓 ) ) ↔ ∃ 𝑦 ( 𝑦𝐶 ∧ ( 𝑥𝐵 ∧ ( 𝑥 = 𝐴𝜓 ) ) ) )
26 an12 ( ( 𝑦𝐶 ∧ ( 𝑥𝐵 ∧ ( 𝑥 = 𝐴𝜓 ) ) ) ↔ ( 𝑥𝐵 ∧ ( 𝑦𝐶 ∧ ( 𝑥 = 𝐴𝜓 ) ) ) )
27 26 exbii ( ∃ 𝑦 ( 𝑦𝐶 ∧ ( 𝑥𝐵 ∧ ( 𝑥 = 𝐴𝜓 ) ) ) ↔ ∃ 𝑦 ( 𝑥𝐵 ∧ ( 𝑦𝐶 ∧ ( 𝑥 = 𝐴𝜓 ) ) ) )
28 25 27 bitri ( ( 𝑥𝐵 ∧ ∃ 𝑦𝐶 ( 𝑥 = 𝐴𝜓 ) ) ↔ ∃ 𝑦 ( 𝑥𝐵 ∧ ( 𝑦𝐶 ∧ ( 𝑥 = 𝐴𝜓 ) ) ) )
29 28 eubii ( ∃! 𝑥 ( 𝑥𝐵 ∧ ∃ 𝑦𝐶 ( 𝑥 = 𝐴𝜓 ) ) ↔ ∃! 𝑥𝑦 ( 𝑥𝐵 ∧ ( 𝑦𝐶 ∧ ( 𝑥 = 𝐴𝜓 ) ) ) )
30 18 29 bitri ( ∃! 𝑥𝐵𝑦𝐶 ( 𝑥 = 𝐴𝜓 ) ↔ ∃! 𝑥𝑦 ( 𝑥𝐵 ∧ ( 𝑦𝐶 ∧ ( 𝑥 = 𝐴𝜓 ) ) ) )
31 df-reu ( ∃! 𝑦𝐶𝑥𝐵 ( 𝑥 = 𝐴𝜓 ) ↔ ∃! 𝑦 ( 𝑦𝐶 ∧ ∃ 𝑥𝐵 ( 𝑥 = 𝐴𝜓 ) ) )
32 nfv 𝑥 𝑦𝐶
33 32 r19.41 ( ∃ 𝑥𝐵 ( ( 𝑥 = 𝐴𝜓 ) ∧ 𝑦𝐶 ) ↔ ( ∃ 𝑥𝐵 ( 𝑥 = 𝐴𝜓 ) ∧ 𝑦𝐶 ) )
34 ancom ( ( 𝑦𝐶 ∧ ( 𝑥 = 𝐴𝜓 ) ) ↔ ( ( 𝑥 = 𝐴𝜓 ) ∧ 𝑦𝐶 ) )
35 34 rexbii ( ∃ 𝑥𝐵 ( 𝑦𝐶 ∧ ( 𝑥 = 𝐴𝜓 ) ) ↔ ∃ 𝑥𝐵 ( ( 𝑥 = 𝐴𝜓 ) ∧ 𝑦𝐶 ) )
36 ancom ( ( 𝑦𝐶 ∧ ∃ 𝑥𝐵 ( 𝑥 = 𝐴𝜓 ) ) ↔ ( ∃ 𝑥𝐵 ( 𝑥 = 𝐴𝜓 ) ∧ 𝑦𝐶 ) )
37 33 35 36 3bitr4i ( ∃ 𝑥𝐵 ( 𝑦𝐶 ∧ ( 𝑥 = 𝐴𝜓 ) ) ↔ ( 𝑦𝐶 ∧ ∃ 𝑥𝐵 ( 𝑥 = 𝐴𝜓 ) ) )
38 df-rex ( ∃ 𝑥𝐵 ( 𝑦𝐶 ∧ ( 𝑥 = 𝐴𝜓 ) ) ↔ ∃ 𝑥 ( 𝑥𝐵 ∧ ( 𝑦𝐶 ∧ ( 𝑥 = 𝐴𝜓 ) ) ) )
39 37 38 bitr3i ( ( 𝑦𝐶 ∧ ∃ 𝑥𝐵 ( 𝑥 = 𝐴𝜓 ) ) ↔ ∃ 𝑥 ( 𝑥𝐵 ∧ ( 𝑦𝐶 ∧ ( 𝑥 = 𝐴𝜓 ) ) ) )
40 39 eubii ( ∃! 𝑦 ( 𝑦𝐶 ∧ ∃ 𝑥𝐵 ( 𝑥 = 𝐴𝜓 ) ) ↔ ∃! 𝑦𝑥 ( 𝑥𝐵 ∧ ( 𝑦𝐶 ∧ ( 𝑥 = 𝐴𝜓 ) ) ) )
41 31 40 bitri ( ∃! 𝑦𝐶𝑥𝐵 ( 𝑥 = 𝐴𝜓 ) ↔ ∃! 𝑦𝑥 ( 𝑥𝐵 ∧ ( 𝑦𝐶 ∧ ( 𝑥 = 𝐴𝜓 ) ) ) )
42 17 30 41 3imtr4g ( ∀ 𝑥 ∃* 𝑦 ( 𝑥𝐵 ∧ ( 𝑦𝐶 ∧ ( 𝑥 = 𝐴𝜓 ) ) ) → ( ∃! 𝑥𝐵𝑦𝐶 ( 𝑥 = 𝐴𝜓 ) → ∃! 𝑦𝐶𝑥𝐵 ( 𝑥 = 𝐴𝜓 ) ) )
43 16 42 sylbi ( ∀ 𝑥𝐵 ∃* 𝑦 ( 𝑦𝐶 ∧ ( 𝑥 = 𝐴𝜓 ) ) → ( ∃! 𝑥𝐵𝑦𝐶 ( 𝑥 = 𝐴𝜓 ) → ∃! 𝑦𝐶𝑥𝐵 ( 𝑥 = 𝐴𝜓 ) ) )
44 11 43 sylbi ( ∀ 𝑥𝐵 ∃* 𝑦𝐶 ( 𝑥 = 𝐴𝜓 ) → ( ∃! 𝑥𝐵𝑦𝐶 ( 𝑥 = 𝐴𝜓 ) → ∃! 𝑦𝐶𝑥𝐵 ( 𝑥 = 𝐴𝜓 ) ) )
45 9 44 syl ( 𝜑 → ( ∃! 𝑥𝐵𝑦𝐶 ( 𝑥 = 𝐴𝜓 ) → ∃! 𝑦𝐶𝑥𝐵 ( 𝑥 = 𝐴𝜓 ) ) )
46 df-ral ( ∀ 𝑦𝐶 ∃* 𝑥 ( 𝑥𝐵 ∧ ( 𝑥 = 𝐴𝜓 ) ) ↔ ∀ 𝑦 ( 𝑦𝐶 → ∃* 𝑥 ( 𝑥𝐵 ∧ ( 𝑥 = 𝐴𝜓 ) ) ) )
47 moanimv ( ∃* 𝑥 ( 𝑦𝐶 ∧ ( 𝑥𝐵 ∧ ( 𝑥 = 𝐴𝜓 ) ) ) ↔ ( 𝑦𝐶 → ∃* 𝑥 ( 𝑥𝐵 ∧ ( 𝑥 = 𝐴𝜓 ) ) ) )
48 47 albii ( ∀ 𝑦 ∃* 𝑥 ( 𝑦𝐶 ∧ ( 𝑥𝐵 ∧ ( 𝑥 = 𝐴𝜓 ) ) ) ↔ ∀ 𝑦 ( 𝑦𝐶 → ∃* 𝑥 ( 𝑥𝐵 ∧ ( 𝑥 = 𝐴𝜓 ) ) ) )
49 46 48 bitr4i ( ∀ 𝑦𝐶 ∃* 𝑥 ( 𝑥𝐵 ∧ ( 𝑥 = 𝐴𝜓 ) ) ↔ ∀ 𝑦 ∃* 𝑥 ( 𝑦𝐶 ∧ ( 𝑥𝐵 ∧ ( 𝑥 = 𝐴𝜓 ) ) ) )
50 2euswapv ( ∀ 𝑦 ∃* 𝑥 ( 𝑦𝐶 ∧ ( 𝑥𝐵 ∧ ( 𝑥 = 𝐴𝜓 ) ) ) → ( ∃! 𝑦𝑥 ( 𝑦𝐶 ∧ ( 𝑥𝐵 ∧ ( 𝑥 = 𝐴𝜓 ) ) ) → ∃! 𝑥𝑦 ( 𝑦𝐶 ∧ ( 𝑥𝐵 ∧ ( 𝑥 = 𝐴𝜓 ) ) ) ) )
51 r19.42v ( ∃ 𝑥𝐵 ( 𝑦𝐶 ∧ ( 𝑥 = 𝐴𝜓 ) ) ↔ ( 𝑦𝐶 ∧ ∃ 𝑥𝐵 ( 𝑥 = 𝐴𝜓 ) ) )
52 51 38 bitr3i ( ( 𝑦𝐶 ∧ ∃ 𝑥𝐵 ( 𝑥 = 𝐴𝜓 ) ) ↔ ∃ 𝑥 ( 𝑥𝐵 ∧ ( 𝑦𝐶 ∧ ( 𝑥 = 𝐴𝜓 ) ) ) )
53 an12 ( ( 𝑥𝐵 ∧ ( 𝑦𝐶 ∧ ( 𝑥 = 𝐴𝜓 ) ) ) ↔ ( 𝑦𝐶 ∧ ( 𝑥𝐵 ∧ ( 𝑥 = 𝐴𝜓 ) ) ) )
54 53 exbii ( ∃ 𝑥 ( 𝑥𝐵 ∧ ( 𝑦𝐶 ∧ ( 𝑥 = 𝐴𝜓 ) ) ) ↔ ∃ 𝑥 ( 𝑦𝐶 ∧ ( 𝑥𝐵 ∧ ( 𝑥 = 𝐴𝜓 ) ) ) )
55 52 54 bitri ( ( 𝑦𝐶 ∧ ∃ 𝑥𝐵 ( 𝑥 = 𝐴𝜓 ) ) ↔ ∃ 𝑥 ( 𝑦𝐶 ∧ ( 𝑥𝐵 ∧ ( 𝑥 = 𝐴𝜓 ) ) ) )
56 55 eubii ( ∃! 𝑦 ( 𝑦𝐶 ∧ ∃ 𝑥𝐵 ( 𝑥 = 𝐴𝜓 ) ) ↔ ∃! 𝑦𝑥 ( 𝑦𝐶 ∧ ( 𝑥𝐵 ∧ ( 𝑥 = 𝐴𝜓 ) ) ) )
57 31 56 bitri ( ∃! 𝑦𝐶𝑥𝐵 ( 𝑥 = 𝐴𝜓 ) ↔ ∃! 𝑦𝑥 ( 𝑦𝐶 ∧ ( 𝑥𝐵 ∧ ( 𝑥 = 𝐴𝜓 ) ) ) )
58 25 eubii ( ∃! 𝑥 ( 𝑥𝐵 ∧ ∃ 𝑦𝐶 ( 𝑥 = 𝐴𝜓 ) ) ↔ ∃! 𝑥𝑦 ( 𝑦𝐶 ∧ ( 𝑥𝐵 ∧ ( 𝑥 = 𝐴𝜓 ) ) ) )
59 18 58 bitri ( ∃! 𝑥𝐵𝑦𝐶 ( 𝑥 = 𝐴𝜓 ) ↔ ∃! 𝑥𝑦 ( 𝑦𝐶 ∧ ( 𝑥𝐵 ∧ ( 𝑥 = 𝐴𝜓 ) ) ) )
60 50 57 59 3imtr4g ( ∀ 𝑦 ∃* 𝑥 ( 𝑦𝐶 ∧ ( 𝑥𝐵 ∧ ( 𝑥 = 𝐴𝜓 ) ) ) → ( ∃! 𝑦𝐶𝑥𝐵 ( 𝑥 = 𝐴𝜓 ) → ∃! 𝑥𝐵𝑦𝐶 ( 𝑥 = 𝐴𝜓 ) ) )
61 49 60 sylbi ( ∀ 𝑦𝐶 ∃* 𝑥 ( 𝑥𝐵 ∧ ( 𝑥 = 𝐴𝜓 ) ) → ( ∃! 𝑦𝐶𝑥𝐵 ( 𝑥 = 𝐴𝜓 ) → ∃! 𝑥𝐵𝑦𝐶 ( 𝑥 = 𝐴𝜓 ) ) )
62 moeq ∃* 𝑥 𝑥 = 𝐴
63 62 moani ∃* 𝑥 ( ( 𝑥𝐵𝜓 ) ∧ 𝑥 = 𝐴 )
64 ancom ( ( ( 𝑥𝐵𝜓 ) ∧ 𝑥 = 𝐴 ) ↔ ( 𝑥 = 𝐴 ∧ ( 𝑥𝐵𝜓 ) ) )
65 an12 ( ( 𝑥 = 𝐴 ∧ ( 𝑥𝐵𝜓 ) ) ↔ ( 𝑥𝐵 ∧ ( 𝑥 = 𝐴𝜓 ) ) )
66 64 65 bitri ( ( ( 𝑥𝐵𝜓 ) ∧ 𝑥 = 𝐴 ) ↔ ( 𝑥𝐵 ∧ ( 𝑥 = 𝐴𝜓 ) ) )
67 66 mobii ( ∃* 𝑥 ( ( 𝑥𝐵𝜓 ) ∧ 𝑥 = 𝐴 ) ↔ ∃* 𝑥 ( 𝑥𝐵 ∧ ( 𝑥 = 𝐴𝜓 ) ) )
68 63 67 mpbi ∃* 𝑥 ( 𝑥𝐵 ∧ ( 𝑥 = 𝐴𝜓 ) )
69 68 a1i ( 𝑦𝐶 → ∃* 𝑥 ( 𝑥𝐵 ∧ ( 𝑥 = 𝐴𝜓 ) ) )
70 61 69 mprg ( ∃! 𝑦𝐶𝑥𝐵 ( 𝑥 = 𝐴𝜓 ) → ∃! 𝑥𝐵𝑦𝐶 ( 𝑥 = 𝐴𝜓 ) )
71 45 70 impbid1 ( 𝜑 → ( ∃! 𝑥𝐵𝑦𝐶 ( 𝑥 = 𝐴𝜓 ) ↔ ∃! 𝑦𝐶𝑥𝐵 ( 𝑥 = 𝐴𝜓 ) ) )
72 biidd ( 𝑥 = 𝐴 → ( 𝜓𝜓 ) )
73 72 ceqsrexv ( 𝐴𝐵 → ( ∃ 𝑥𝐵 ( 𝑥 = 𝐴𝜓 ) ↔ 𝜓 ) )
74 2 73 syl ( ( 𝜑𝑦𝐶 ) → ( ∃ 𝑥𝐵 ( 𝑥 = 𝐴𝜓 ) ↔ 𝜓 ) )
75 74 reubidva ( 𝜑 → ( ∃! 𝑦𝐶𝑥𝐵 ( 𝑥 = 𝐴𝜓 ) ↔ ∃! 𝑦𝐶 𝜓 ) )
76 71 75 bitrd ( 𝜑 → ( ∃! 𝑥𝐵𝑦𝐶 ( 𝑥 = 𝐴𝜓 ) ↔ ∃! 𝑦𝐶 𝜓 ) )