Metamath Proof Explorer


Theorem elabgt

Description: Membership in a class abstraction, using implicit substitution. (Closed theorem version of elabg .) (Contributed by NM, 7-Nov-2005) (Proof shortened by Andrew Salmon, 8-Jun-2011) Reduce axiom usage. (Revised by Gino Giotto, 12-Oct-2024)

Ref Expression
Assertion elabgt
|- ( ( A e. B /\ A. x ( x = A -> ( ph <-> ps ) ) ) -> ( A e. { x | ph } <-> ps ) )

Proof

Step Hyp Ref Expression
1 elab6g
 |-  ( A e. B -> ( A e. { x | ph } <-> A. x ( x = A -> ph ) ) )
2 1 adantr
 |-  ( ( A e. B /\ A. x ( x = A -> ( ph <-> ps ) ) ) -> ( A e. { x | ph } <-> A. x ( x = A -> ph ) ) )
3 elisset
 |-  ( A e. B -> E. x x = A )
4 biimp
 |-  ( ( ph <-> ps ) -> ( ph -> ps ) )
5 4 imim3i
 |-  ( ( x = A -> ( ph <-> ps ) ) -> ( ( x = A -> ph ) -> ( x = A -> ps ) ) )
6 5 al2imi
 |-  ( A. x ( x = A -> ( ph <-> ps ) ) -> ( A. x ( x = A -> ph ) -> A. x ( x = A -> ps ) ) )
7 19.23v
 |-  ( A. x ( x = A -> ps ) <-> ( E. x x = A -> ps ) )
8 6 7 syl6ib
 |-  ( A. x ( x = A -> ( ph <-> ps ) ) -> ( A. x ( x = A -> ph ) -> ( E. x x = A -> ps ) ) )
9 8 com3r
 |-  ( E. x x = A -> ( A. x ( x = A -> ( ph <-> ps ) ) -> ( A. x ( x = A -> ph ) -> ps ) ) )
10 biimpr
 |-  ( ( ph <-> ps ) -> ( ps -> ph ) )
11 10 imim2i
 |-  ( ( x = A -> ( ph <-> ps ) ) -> ( x = A -> ( ps -> ph ) ) )
12 11 alimi
 |-  ( A. x ( x = A -> ( ph <-> ps ) ) -> A. x ( x = A -> ( ps -> ph ) ) )
13 bi2.04
 |-  ( ( x = A -> ( ps -> ph ) ) <-> ( ps -> ( x = A -> ph ) ) )
14 13 albii
 |-  ( A. x ( x = A -> ( ps -> ph ) ) <-> A. x ( ps -> ( x = A -> ph ) ) )
15 19.21v
 |-  ( A. x ( ps -> ( x = A -> ph ) ) <-> ( ps -> A. x ( x = A -> ph ) ) )
16 14 15 sylbb
 |-  ( A. x ( x = A -> ( ps -> ph ) ) -> ( ps -> A. x ( x = A -> ph ) ) )
17 12 16 syl
 |-  ( A. x ( x = A -> ( ph <-> ps ) ) -> ( ps -> A. x ( x = A -> ph ) ) )
18 17 a1i
 |-  ( E. x x = A -> ( A. x ( x = A -> ( ph <-> ps ) ) -> ( ps -> A. x ( x = A -> ph ) ) ) )
19 9 18 impbidd
 |-  ( E. x x = A -> ( A. x ( x = A -> ( ph <-> ps ) ) -> ( A. x ( x = A -> ph ) <-> ps ) ) )
20 3 19 syl
 |-  ( A e. B -> ( A. x ( x = A -> ( ph <-> ps ) ) -> ( A. x ( x = A -> ph ) <-> ps ) ) )
21 20 imp
 |-  ( ( A e. B /\ A. x ( x = A -> ( ph <-> ps ) ) ) -> ( A. x ( x = A -> ph ) <-> ps ) )
22 2 21 bitrd
 |-  ( ( A e. B /\ A. x ( x = A -> ( ph <-> ps ) ) ) -> ( A e. { x | ph } <-> ps ) )