This is an inofficial mirror of http://metamath.tirix.org for personal testing of a visualizer extension only.
Description: Equal class abstractions require equivalent formulas, and conversely. (Contributed by NM, 25-Nov-2013) (Revised by Mario Carneiro, 11-Aug-2016) Remove dependency on ax-8 and df-clel (by avoiding use of cleqh ). (Revised by BJ, 23-Jun-2019) Definitial form. (Revised by Wolf Lammen, 23-Feb-2025)
| Ref | Expression | ||
|---|---|---|---|
| Assertion | abbib | |- ( { x | ph } = { x | ps } <-> A. x ( ph <-> ps ) ) |
| Step | Hyp | Ref | Expression |
|---|---|---|---|
| 1 | dfcleq | |- ( { x | ph } = { x | ps } <-> A. y ( y e. { x | ph } <-> y e. { x | ps } ) ) |
|
| 2 | nfsab1 | |- F/ x y e. { x | ph } |
|
| 3 | nfsab1 | |- F/ x y e. { x | ps } |
|
| 4 | 2 3 | nfbi | |- F/ x ( y e. { x | ph } <-> y e. { x | ps } ) |
| 5 | nfv | |- F/ y ( ph <-> ps ) |
|
| 6 | df-clab | |- ( y e. { x | ph } <-> [ y / x ] ph ) |
|
| 7 | sbequ12r | |- ( y = x -> ( [ y / x ] ph <-> ph ) ) |
|
| 8 | 6 7 | bitrid | |- ( y = x -> ( y e. { x | ph } <-> ph ) ) |
| 9 | df-clab | |- ( y e. { x | ps } <-> [ y / x ] ps ) |
|
| 10 | sbequ12r | |- ( y = x -> ( [ y / x ] ps <-> ps ) ) |
|
| 11 | 9 10 | bitrid | |- ( y = x -> ( y e. { x | ps } <-> ps ) ) |
| 12 | 8 11 | bibi12d | |- ( y = x -> ( ( y e. { x | ph } <-> y e. { x | ps } ) <-> ( ph <-> ps ) ) ) |
| 13 | 4 5 12 | cbvalv1 | |- ( A. y ( y e. { x | ph } <-> y e. { x | ps } ) <-> A. x ( ph <-> ps ) ) |
| 14 | 1 13 | bitri | |- ( { x | ph } = { x | ps } <-> A. x ( ph <-> ps ) ) |