Metamath Proof Explorer


Theorem eloprabga

Description: The law of concretion for operation class abstraction. Compare elopab . (Contributed by NM, 14-Sep-1999) Remove unnecessary distinct variable conditions. (Revised by David Abernethy, 19-Jun-2012) (Revised by Mario Carneiro, 19-Dec-2013)

Ref Expression
Hypothesis eloprabga.1 ( ( 𝑥 = 𝐴𝑦 = 𝐵𝑧 = 𝐶 ) → ( 𝜑𝜓 ) )
Assertion eloprabga ( ( 𝐴𝑉𝐵𝑊𝐶𝑋 ) → ( ⟨ ⟨ 𝐴 , 𝐵 ⟩ , 𝐶 ⟩ ∈ { ⟨ ⟨ 𝑥 , 𝑦 ⟩ , 𝑧 ⟩ ∣ 𝜑 } ↔ 𝜓 ) )

Proof

Step Hyp Ref Expression
1 eloprabga.1 ( ( 𝑥 = 𝐴𝑦 = 𝐵𝑧 = 𝐶 ) → ( 𝜑𝜓 ) )
2 elex ( 𝐴𝑉𝐴 ∈ V )
3 elex ( 𝐵𝑊𝐵 ∈ V )
4 elex ( 𝐶𝑋𝐶 ∈ V )
5 opex ⟨ ⟨ 𝐴 , 𝐵 ⟩ , 𝐶 ⟩ ∈ V
6 simpr ( ( ( 𝐴 ∈ V ∧ 𝐵 ∈ V ∧ 𝐶 ∈ V ) ∧ 𝑤 = ⟨ ⟨ 𝐴 , 𝐵 ⟩ , 𝐶 ⟩ ) → 𝑤 = ⟨ ⟨ 𝐴 , 𝐵 ⟩ , 𝐶 ⟩ )
7 6 eqeq1d ( ( ( 𝐴 ∈ V ∧ 𝐵 ∈ V ∧ 𝐶 ∈ V ) ∧ 𝑤 = ⟨ ⟨ 𝐴 , 𝐵 ⟩ , 𝐶 ⟩ ) → ( 𝑤 = ⟨ ⟨ 𝑥 , 𝑦 ⟩ , 𝑧 ⟩ ↔ ⟨ ⟨ 𝐴 , 𝐵 ⟩ , 𝐶 ⟩ = ⟨ ⟨ 𝑥 , 𝑦 ⟩ , 𝑧 ⟩ ) )
8 eqcom ( ⟨ ⟨ 𝐴 , 𝐵 ⟩ , 𝐶 ⟩ = ⟨ ⟨ 𝑥 , 𝑦 ⟩ , 𝑧 ⟩ ↔ ⟨ ⟨ 𝑥 , 𝑦 ⟩ , 𝑧 ⟩ = ⟨ ⟨ 𝐴 , 𝐵 ⟩ , 𝐶 ⟩ )
9 vex 𝑥 ∈ V
10 vex 𝑦 ∈ V
11 vex 𝑧 ∈ V
12 9 10 11 otth2 ( ⟨ ⟨ 𝑥 , 𝑦 ⟩ , 𝑧 ⟩ = ⟨ ⟨ 𝐴 , 𝐵 ⟩ , 𝐶 ⟩ ↔ ( 𝑥 = 𝐴𝑦 = 𝐵𝑧 = 𝐶 ) )
13 8 12 bitri ( ⟨ ⟨ 𝐴 , 𝐵 ⟩ , 𝐶 ⟩ = ⟨ ⟨ 𝑥 , 𝑦 ⟩ , 𝑧 ⟩ ↔ ( 𝑥 = 𝐴𝑦 = 𝐵𝑧 = 𝐶 ) )
14 7 13 bitrdi ( ( ( 𝐴 ∈ V ∧ 𝐵 ∈ V ∧ 𝐶 ∈ V ) ∧ 𝑤 = ⟨ ⟨ 𝐴 , 𝐵 ⟩ , 𝐶 ⟩ ) → ( 𝑤 = ⟨ ⟨ 𝑥 , 𝑦 ⟩ , 𝑧 ⟩ ↔ ( 𝑥 = 𝐴𝑦 = 𝐵𝑧 = 𝐶 ) ) )
15 14 anbi1d ( ( ( 𝐴 ∈ V ∧ 𝐵 ∈ V ∧ 𝐶 ∈ V ) ∧ 𝑤 = ⟨ ⟨ 𝐴 , 𝐵 ⟩ , 𝐶 ⟩ ) → ( ( 𝑤 = ⟨ ⟨ 𝑥 , 𝑦 ⟩ , 𝑧 ⟩ ∧ 𝜑 ) ↔ ( ( 𝑥 = 𝐴𝑦 = 𝐵𝑧 = 𝐶 ) ∧ 𝜑 ) ) )
16 1 pm5.32i ( ( ( 𝑥 = 𝐴𝑦 = 𝐵𝑧 = 𝐶 ) ∧ 𝜑 ) ↔ ( ( 𝑥 = 𝐴𝑦 = 𝐵𝑧 = 𝐶 ) ∧ 𝜓 ) )
17 15 16 bitrdi ( ( ( 𝐴 ∈ V ∧ 𝐵 ∈ V ∧ 𝐶 ∈ V ) ∧ 𝑤 = ⟨ ⟨ 𝐴 , 𝐵 ⟩ , 𝐶 ⟩ ) → ( ( 𝑤 = ⟨ ⟨ 𝑥 , 𝑦 ⟩ , 𝑧 ⟩ ∧ 𝜑 ) ↔ ( ( 𝑥 = 𝐴𝑦 = 𝐵𝑧 = 𝐶 ) ∧ 𝜓 ) ) )
18 17 3exbidv ( ( ( 𝐴 ∈ V ∧ 𝐵 ∈ V ∧ 𝐶 ∈ V ) ∧ 𝑤 = ⟨ ⟨ 𝐴 , 𝐵 ⟩ , 𝐶 ⟩ ) → ( ∃ 𝑥𝑦𝑧 ( 𝑤 = ⟨ ⟨ 𝑥 , 𝑦 ⟩ , 𝑧 ⟩ ∧ 𝜑 ) ↔ ∃ 𝑥𝑦𝑧 ( ( 𝑥 = 𝐴𝑦 = 𝐵𝑧 = 𝐶 ) ∧ 𝜓 ) ) )
19 df-oprab { ⟨ ⟨ 𝑥 , 𝑦 ⟩ , 𝑧 ⟩ ∣ 𝜑 } = { 𝑤 ∣ ∃ 𝑥𝑦𝑧 ( 𝑤 = ⟨ ⟨ 𝑥 , 𝑦 ⟩ , 𝑧 ⟩ ∧ 𝜑 ) }
20 19 eleq2i ( 𝑤 ∈ { ⟨ ⟨ 𝑥 , 𝑦 ⟩ , 𝑧 ⟩ ∣ 𝜑 } ↔ 𝑤 ∈ { 𝑤 ∣ ∃ 𝑥𝑦𝑧 ( 𝑤 = ⟨ ⟨ 𝑥 , 𝑦 ⟩ , 𝑧 ⟩ ∧ 𝜑 ) } )
21 abid ( 𝑤 ∈ { 𝑤 ∣ ∃ 𝑥𝑦𝑧 ( 𝑤 = ⟨ ⟨ 𝑥 , 𝑦 ⟩ , 𝑧 ⟩ ∧ 𝜑 ) } ↔ ∃ 𝑥𝑦𝑧 ( 𝑤 = ⟨ ⟨ 𝑥 , 𝑦 ⟩ , 𝑧 ⟩ ∧ 𝜑 ) )
22 20 21 bitr2i ( ∃ 𝑥𝑦𝑧 ( 𝑤 = ⟨ ⟨ 𝑥 , 𝑦 ⟩ , 𝑧 ⟩ ∧ 𝜑 ) ↔ 𝑤 ∈ { ⟨ ⟨ 𝑥 , 𝑦 ⟩ , 𝑧 ⟩ ∣ 𝜑 } )
23 eleq1 ( 𝑤 = ⟨ ⟨ 𝐴 , 𝐵 ⟩ , 𝐶 ⟩ → ( 𝑤 ∈ { ⟨ ⟨ 𝑥 , 𝑦 ⟩ , 𝑧 ⟩ ∣ 𝜑 } ↔ ⟨ ⟨ 𝐴 , 𝐵 ⟩ , 𝐶 ⟩ ∈ { ⟨ ⟨ 𝑥 , 𝑦 ⟩ , 𝑧 ⟩ ∣ 𝜑 } ) )
24 22 23 syl5bb ( 𝑤 = ⟨ ⟨ 𝐴 , 𝐵 ⟩ , 𝐶 ⟩ → ( ∃ 𝑥𝑦𝑧 ( 𝑤 = ⟨ ⟨ 𝑥 , 𝑦 ⟩ , 𝑧 ⟩ ∧ 𝜑 ) ↔ ⟨ ⟨ 𝐴 , 𝐵 ⟩ , 𝐶 ⟩ ∈ { ⟨ ⟨ 𝑥 , 𝑦 ⟩ , 𝑧 ⟩ ∣ 𝜑 } ) )
25 24 adantl ( ( ( 𝐴 ∈ V ∧ 𝐵 ∈ V ∧ 𝐶 ∈ V ) ∧ 𝑤 = ⟨ ⟨ 𝐴 , 𝐵 ⟩ , 𝐶 ⟩ ) → ( ∃ 𝑥𝑦𝑧 ( 𝑤 = ⟨ ⟨ 𝑥 , 𝑦 ⟩ , 𝑧 ⟩ ∧ 𝜑 ) ↔ ⟨ ⟨ 𝐴 , 𝐵 ⟩ , 𝐶 ⟩ ∈ { ⟨ ⟨ 𝑥 , 𝑦 ⟩ , 𝑧 ⟩ ∣ 𝜑 } ) )
26 19.41vvv ( ∃ 𝑥𝑦𝑧 ( ( 𝑥 = 𝐴𝑦 = 𝐵𝑧 = 𝐶 ) ∧ 𝜓 ) ↔ ( ∃ 𝑥𝑦𝑧 ( 𝑥 = 𝐴𝑦 = 𝐵𝑧 = 𝐶 ) ∧ 𝜓 ) )
27 elisset ( 𝐴 ∈ V → ∃ 𝑥 𝑥 = 𝐴 )
28 elisset ( 𝐵 ∈ V → ∃ 𝑦 𝑦 = 𝐵 )
29 elisset ( 𝐶 ∈ V → ∃ 𝑧 𝑧 = 𝐶 )
30 27 28 29 3anim123i ( ( 𝐴 ∈ V ∧ 𝐵 ∈ V ∧ 𝐶 ∈ V ) → ( ∃ 𝑥 𝑥 = 𝐴 ∧ ∃ 𝑦 𝑦 = 𝐵 ∧ ∃ 𝑧 𝑧 = 𝐶 ) )
31 eeeanv ( ∃ 𝑥𝑦𝑧 ( 𝑥 = 𝐴𝑦 = 𝐵𝑧 = 𝐶 ) ↔ ( ∃ 𝑥 𝑥 = 𝐴 ∧ ∃ 𝑦 𝑦 = 𝐵 ∧ ∃ 𝑧 𝑧 = 𝐶 ) )
32 30 31 sylibr ( ( 𝐴 ∈ V ∧ 𝐵 ∈ V ∧ 𝐶 ∈ V ) → ∃ 𝑥𝑦𝑧 ( 𝑥 = 𝐴𝑦 = 𝐵𝑧 = 𝐶 ) )
33 32 biantrurd ( ( 𝐴 ∈ V ∧ 𝐵 ∈ V ∧ 𝐶 ∈ V ) → ( 𝜓 ↔ ( ∃ 𝑥𝑦𝑧 ( 𝑥 = 𝐴𝑦 = 𝐵𝑧 = 𝐶 ) ∧ 𝜓 ) ) )
34 26 33 bitr4id ( ( 𝐴 ∈ V ∧ 𝐵 ∈ V ∧ 𝐶 ∈ V ) → ( ∃ 𝑥𝑦𝑧 ( ( 𝑥 = 𝐴𝑦 = 𝐵𝑧 = 𝐶 ) ∧ 𝜓 ) ↔ 𝜓 ) )
35 34 adantr ( ( ( 𝐴 ∈ V ∧ 𝐵 ∈ V ∧ 𝐶 ∈ V ) ∧ 𝑤 = ⟨ ⟨ 𝐴 , 𝐵 ⟩ , 𝐶 ⟩ ) → ( ∃ 𝑥𝑦𝑧 ( ( 𝑥 = 𝐴𝑦 = 𝐵𝑧 = 𝐶 ) ∧ 𝜓 ) ↔ 𝜓 ) )
36 18 25 35 3bitr3d ( ( ( 𝐴 ∈ V ∧ 𝐵 ∈ V ∧ 𝐶 ∈ V ) ∧ 𝑤 = ⟨ ⟨ 𝐴 , 𝐵 ⟩ , 𝐶 ⟩ ) → ( ⟨ ⟨ 𝐴 , 𝐵 ⟩ , 𝐶 ⟩ ∈ { ⟨ ⟨ 𝑥 , 𝑦 ⟩ , 𝑧 ⟩ ∣ 𝜑 } ↔ 𝜓 ) )
37 36 expcom ( 𝑤 = ⟨ ⟨ 𝐴 , 𝐵 ⟩ , 𝐶 ⟩ → ( ( 𝐴 ∈ V ∧ 𝐵 ∈ V ∧ 𝐶 ∈ V ) → ( ⟨ ⟨ 𝐴 , 𝐵 ⟩ , 𝐶 ⟩ ∈ { ⟨ ⟨ 𝑥 , 𝑦 ⟩ , 𝑧 ⟩ ∣ 𝜑 } ↔ 𝜓 ) ) )
38 5 37 vtocle ( ( 𝐴 ∈ V ∧ 𝐵 ∈ V ∧ 𝐶 ∈ V ) → ( ⟨ ⟨ 𝐴 , 𝐵 ⟩ , 𝐶 ⟩ ∈ { ⟨ ⟨ 𝑥 , 𝑦 ⟩ , 𝑧 ⟩ ∣ 𝜑 } ↔ 𝜓 ) )
39 2 3 4 38 syl3an ( ( 𝐴𝑉𝐵𝑊𝐶𝑋 ) → ( ⟨ ⟨ 𝐴 , 𝐵 ⟩ , 𝐶 ⟩ ∈ { ⟨ ⟨ 𝑥 , 𝑦 ⟩ , 𝑧 ⟩ ∣ 𝜑 } ↔ 𝜓 ) )