Metamath Proof Explorer


Theorem rmoxfrd

Description: Transfer "at most one" restricted quantification from a variable x to another variable y contained in expression A . (Contributed by Thierry Arnoux, 7-Apr-2017) (Revised by Thierry Arnoux, 8-Oct-2017)

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

Proof

Step Hyp Ref Expression
1 rmoxfrd.1 ( ( 𝜑𝑦𝐶 ) → 𝐴𝐵 )
2 rmoxfrd.2 ( ( 𝜑𝑥𝐵 ) → ∃! 𝑦𝐶 𝑥 = 𝐴 )
3 rmoxfrd.3 ( ( 𝜑𝑥 = 𝐴 ) → ( 𝜓𝜒 ) )
4 reurex ( ∃! 𝑦𝐶 𝑥 = 𝐴 → ∃ 𝑦𝐶 𝑥 = 𝐴 )
5 2 4 syl ( ( 𝜑𝑥𝐵 ) → ∃ 𝑦𝐶 𝑥 = 𝐴 )
6 1 5 3 rexxfrd ( 𝜑 → ( ∃ 𝑥𝐵 𝜓 ↔ ∃ 𝑦𝐶 𝜒 ) )
7 df-rex ( ∃ 𝑥𝐵 𝜓 ↔ ∃ 𝑥 ( 𝑥𝐵𝜓 ) )
8 df-rex ( ∃ 𝑦𝐶 𝜒 ↔ ∃ 𝑦 ( 𝑦𝐶𝜒 ) )
9 6 7 8 3bitr3g ( 𝜑 → ( ∃ 𝑥 ( 𝑥𝐵𝜓 ) ↔ ∃ 𝑦 ( 𝑦𝐶𝜒 ) ) )
10 1 2 3 reuxfr1d ( 𝜑 → ( ∃! 𝑥𝐵 𝜓 ↔ ∃! 𝑦𝐶 𝜒 ) )
11 df-reu ( ∃! 𝑥𝐵 𝜓 ↔ ∃! 𝑥 ( 𝑥𝐵𝜓 ) )
12 df-reu ( ∃! 𝑦𝐶 𝜒 ↔ ∃! 𝑦 ( 𝑦𝐶𝜒 ) )
13 10 11 12 3bitr3g ( 𝜑 → ( ∃! 𝑥 ( 𝑥𝐵𝜓 ) ↔ ∃! 𝑦 ( 𝑦𝐶𝜒 ) ) )
14 9 13 imbi12d ( 𝜑 → ( ( ∃ 𝑥 ( 𝑥𝐵𝜓 ) → ∃! 𝑥 ( 𝑥𝐵𝜓 ) ) ↔ ( ∃ 𝑦 ( 𝑦𝐶𝜒 ) → ∃! 𝑦 ( 𝑦𝐶𝜒 ) ) ) )
15 moeu ( ∃* 𝑥 ( 𝑥𝐵𝜓 ) ↔ ( ∃ 𝑥 ( 𝑥𝐵𝜓 ) → ∃! 𝑥 ( 𝑥𝐵𝜓 ) ) )
16 moeu ( ∃* 𝑦 ( 𝑦𝐶𝜒 ) ↔ ( ∃ 𝑦 ( 𝑦𝐶𝜒 ) → ∃! 𝑦 ( 𝑦𝐶𝜒 ) ) )
17 14 15 16 3bitr4g ( 𝜑 → ( ∃* 𝑥 ( 𝑥𝐵𝜓 ) ↔ ∃* 𝑦 ( 𝑦𝐶𝜒 ) ) )
18 df-rmo ( ∃* 𝑥𝐵 𝜓 ↔ ∃* 𝑥 ( 𝑥𝐵𝜓 ) )
19 df-rmo ( ∃* 𝑦𝐶 𝜒 ↔ ∃* 𝑦 ( 𝑦𝐶𝜒 ) )
20 17 18 19 3bitr4g ( 𝜑 → ( ∃* 𝑥𝐵 𝜓 ↔ ∃* 𝑦𝐶 𝜒 ) )