Description: Generalized class abstraction as a direct image.
TODO: improve the support lemmas elimag and fvelima to nonfreeness hypothesis (and for the latter, biconditional). (Contributed by BJ, 4-Oct-2024)
Ref | Expression | ||
---|---|---|---|
Hypotheses | bj-gabima.nf | |- ( ph -> A. x ph ) |
|
bj-gabima.nff | |- ( ph -> F/_ x F ) |
||
bj-gabima.fun | |- ( ph -> Fun F ) |
||
bj-gabima.dm | |- ( ph -> { x | ps } C_ dom F ) |
||
Assertion | bj-gabima | |- ( ph -> {{ ( F ` x ) | x | ps }} = ( F " { x | ps } ) ) |
Step | Hyp | Ref | Expression |
---|---|---|---|
1 | bj-gabima.nf | |- ( ph -> A. x ph ) |
|
2 | bj-gabima.nff | |- ( ph -> F/_ x F ) |
|
3 | bj-gabima.fun | |- ( ph -> Fun F ) |
|
4 | bj-gabima.dm | |- ( ph -> { x | ps } C_ dom F ) |
|
5 | nfcvd | |- ( ph -> F/_ x y ) |
|
6 | vex | |- y e. _V |
|
7 | 6 | a1i | |- ( ph -> y e. _V ) |
8 | df-rex | |- ( E. z e. { x | ps } ( F ` z ) = y <-> E. z ( z e. { x | ps } /\ ( F ` z ) = y ) ) |
|
9 | 8 | a1i | |- ( ph -> ( E. z e. { x | ps } ( F ` z ) = y <-> E. z ( z e. { x | ps } /\ ( F ` z ) = y ) ) ) |
10 | eqcom | |- ( y = ( F ` z ) <-> ( F ` z ) = y ) |
|
11 | df-clab | |- ( z e. { x | ps } <-> [ z / x ] ps ) |
|
12 | 11 | bicomi | |- ( [ z / x ] ps <-> z e. { x | ps } ) |
13 | 10 12 | anbi12ci | |- ( ( y = ( F ` z ) /\ [ z / x ] ps ) <-> ( z e. { x | ps } /\ ( F ` z ) = y ) ) |
14 | 13 | exbii | |- ( E. z ( y = ( F ` z ) /\ [ z / x ] ps ) <-> E. z ( z e. { x | ps } /\ ( F ` z ) = y ) ) |
15 | 14 | a1i | |- ( ph -> ( E. z ( y = ( F ` z ) /\ [ z / x ] ps ) <-> E. z ( z e. { x | ps } /\ ( F ` z ) = y ) ) ) |
16 | 1 | nf5i | |- F/ x ph |
17 | nfcv | |- F/_ x y |
|
18 | 17 | a1i | |- ( ph -> F/_ x y ) |
19 | nfcv | |- F/_ x z |
|
20 | 19 | a1i | |- ( ph -> F/_ x z ) |
21 | 2 20 | nffvd | |- ( ph -> F/_ x ( F ` z ) ) |
22 | 18 21 | nfeqd | |- ( ph -> F/ x y = ( F ` z ) ) |
23 | nfs1v | |- F/ x [ z / x ] ps |
|
24 | 23 | a1i | |- ( ph -> F/ x [ z / x ] ps ) |
25 | 22 24 | nfand | |- ( ph -> F/ x ( y = ( F ` z ) /\ [ z / x ] ps ) ) |
26 | fveq2 | |- ( z = x -> ( F ` z ) = ( F ` x ) ) |
|
27 | 26 | eqeq2d | |- ( z = x -> ( y = ( F ` z ) <-> y = ( F ` x ) ) ) |
28 | sbequ12r | |- ( z = x -> ( [ z / x ] ps <-> ps ) ) |
|
29 | 27 28 | anbi12d | |- ( z = x -> ( ( y = ( F ` z ) /\ [ z / x ] ps ) <-> ( y = ( F ` x ) /\ ps ) ) ) |
30 | 29 | a1i | |- ( ph -> ( z = x -> ( ( y = ( F ` z ) /\ [ z / x ] ps ) <-> ( y = ( F ` x ) /\ ps ) ) ) ) |
31 | 16 25 30 | cbvexdw | |- ( ph -> ( E. z ( y = ( F ` z ) /\ [ z / x ] ps ) <-> E. x ( y = ( F ` x ) /\ ps ) ) ) |
32 | 9 15 31 | 3bitr2rd | |- ( ph -> ( E. x ( y = ( F ` x ) /\ ps ) <-> E. z e. { x | ps } ( F ` z ) = y ) ) |
33 | 1 5 7 32 | bj-elgab | |- ( ph -> ( y e. {{ ( F ` x ) | x | ps }} <-> E. z e. { x | ps } ( F ` z ) = y ) ) |
34 | 3 | funfnd | |- ( ph -> F Fn dom F ) |
35 | 34 4 | fvelimabd | |- ( ph -> ( y e. ( F " { x | ps } ) <-> E. z e. { x | ps } ( F ` z ) = y ) ) |
36 | 33 35 | bitr4d | |- ( ph -> ( y e. {{ ( F ` x ) | x | ps }} <-> y e. ( F " { x | ps } ) ) ) |
37 | 36 | eqrdv | |- ( ph -> {{ ( F ` x ) | x | ps }} = ( F " { x | ps } ) ) |