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) (Proof shortend by Wolf Lammen, 11-May-2025.)

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 imbitrdi
 |-  ( A. x ( x = A -> ( ph <-> ps ) ) -> ( A. x ( x = A -> ph ) -> ( E. x x = A -> ps ) ) )
9 3 8 syl7
 |-  ( A. x ( x = A -> ( ph <-> ps ) ) -> ( A. x ( x = A -> ph ) -> ( A e. B -> ps ) ) )
10 9 com3r
 |-  ( A e. B -> ( A. x ( x = A -> ( ph <-> ps ) ) -> ( A. x ( x = A -> ph ) -> ps ) ) )
11 10 imp
 |-  ( ( A e. B /\ A. x ( x = A -> ( ph <-> ps ) ) ) -> ( A. x ( x = A -> ph ) -> ps ) )
12 biimpr
 |-  ( ( ph <-> ps ) -> ( ps -> ph ) )
13 12 imim2i
 |-  ( ( x = A -> ( ph <-> ps ) ) -> ( x = A -> ( ps -> ph ) ) )
14 13 com23
 |-  ( ( x = A -> ( ph <-> ps ) ) -> ( ps -> ( x = A -> ph ) ) )
15 14 alimi
 |-  ( A. x ( x = A -> ( ph <-> ps ) ) -> A. x ( ps -> ( x = A -> ph ) ) )
16 19.21v
 |-  ( A. x ( ps -> ( x = A -> ph ) ) <-> ( ps -> A. x ( x = A -> ph ) ) )
17 15 16 sylib
 |-  ( A. x ( x = A -> ( ph <-> ps ) ) -> ( ps -> A. x ( x = A -> ph ) ) )
18 17 adantl
 |-  ( ( A e. B /\ A. x ( x = A -> ( ph <-> ps ) ) ) -> ( ps -> A. x ( x = A -> ph ) ) )
19 11 18 impbid
 |-  ( ( A e. B /\ A. x ( x = A -> ( ph <-> ps ) ) ) -> ( A. x ( x = A -> ph ) <-> ps ) )
20 2 19 bitrd
 |-  ( ( A e. B /\ A. x ( x = A -> ( ph <-> ps ) ) ) -> ( A e. { x | ph } <-> ps ) )