Metamath Proof Explorer


Theorem indval2

Description: Alternate value of the indicator function generator. (Contributed by Thierry Arnoux, 2-Feb-2017)

Ref Expression
Assertion indval2
|- ( ( O e. V /\ A C_ O ) -> ( ( _Ind ` O ) ` A ) = ( ( A X. { 1 } ) u. ( ( O \ A ) X. { 0 } ) ) )

Proof

Step Hyp Ref Expression
1 dfmpt3
 |-  ( x e. O |-> if ( x e. A , 1 , 0 ) ) = U_ x e. O ( { x } X. { if ( x e. A , 1 , 0 ) } )
2 indval
 |-  ( ( O e. V /\ A C_ O ) -> ( ( _Ind ` O ) ` A ) = ( x e. O |-> if ( x e. A , 1 , 0 ) ) )
3 undif
 |-  ( A C_ O <-> ( A u. ( O \ A ) ) = O )
4 3 bilani
 |-  ( ( O e. V /\ A C_ O ) -> ( A u. ( O \ A ) ) = O )
5 4 iuneq1d
 |-  ( ( O e. V /\ A C_ O ) -> U_ x e. ( A u. ( O \ A ) ) ( { x } X. { if ( x e. A , 1 , 0 ) } ) = U_ x e. O ( { x } X. { if ( x e. A , 1 , 0 ) } ) )
6 1 2 5 3eqtr4a
 |-  ( ( O e. V /\ A C_ O ) -> ( ( _Ind ` O ) ` A ) = U_ x e. ( A u. ( O \ A ) ) ( { x } X. { if ( x e. A , 1 , 0 ) } ) )
7 iunxun
 |-  U_ x e. ( A u. ( O \ A ) ) ( { x } X. { if ( x e. A , 1 , 0 ) } ) = ( U_ x e. A ( { x } X. { if ( x e. A , 1 , 0 ) } ) u. U_ x e. ( O \ A ) ( { x } X. { if ( x e. A , 1 , 0 ) } ) )
8 6 7 eqtrdi
 |-  ( ( O e. V /\ A C_ O ) -> ( ( _Ind ` O ) ` A ) = ( U_ x e. A ( { x } X. { if ( x e. A , 1 , 0 ) } ) u. U_ x e. ( O \ A ) ( { x } X. { if ( x e. A , 1 , 0 ) } ) ) )
9 iftrue
 |-  ( x e. A -> if ( x e. A , 1 , 0 ) = 1 )
10 9 sneqd
 |-  ( x e. A -> { if ( x e. A , 1 , 0 ) } = { 1 } )
11 10 xpeq2d
 |-  ( x e. A -> ( { x } X. { if ( x e. A , 1 , 0 ) } ) = ( { x } X. { 1 } ) )
12 11 iuneq2i
 |-  U_ x e. A ( { x } X. { if ( x e. A , 1 , 0 ) } ) = U_ x e. A ( { x } X. { 1 } )
13 iunxpconst
 |-  U_ x e. A ( { x } X. { 1 } ) = ( A X. { 1 } )
14 12 13 eqtri
 |-  U_ x e. A ( { x } X. { if ( x e. A , 1 , 0 ) } ) = ( A X. { 1 } )
15 eldifn
 |-  ( x e. ( O \ A ) -> -. x e. A )
16 iffalse
 |-  ( -. x e. A -> if ( x e. A , 1 , 0 ) = 0 )
17 16 sneqd
 |-  ( -. x e. A -> { if ( x e. A , 1 , 0 ) } = { 0 } )
18 15 17 syl
 |-  ( x e. ( O \ A ) -> { if ( x e. A , 1 , 0 ) } = { 0 } )
19 18 xpeq2d
 |-  ( x e. ( O \ A ) -> ( { x } X. { if ( x e. A , 1 , 0 ) } ) = ( { x } X. { 0 } ) )
20 19 iuneq2i
 |-  U_ x e. ( O \ A ) ( { x } X. { if ( x e. A , 1 , 0 ) } ) = U_ x e. ( O \ A ) ( { x } X. { 0 } )
21 iunxpconst
 |-  U_ x e. ( O \ A ) ( { x } X. { 0 } ) = ( ( O \ A ) X. { 0 } )
22 20 21 eqtri
 |-  U_ x e. ( O \ A ) ( { x } X. { if ( x e. A , 1 , 0 ) } ) = ( ( O \ A ) X. { 0 } )
23 14 22 uneq12i
 |-  ( U_ x e. A ( { x } X. { if ( x e. A , 1 , 0 ) } ) u. U_ x e. ( O \ A ) ( { x } X. { if ( x e. A , 1 , 0 ) } ) ) = ( ( A X. { 1 } ) u. ( ( O \ A ) X. { 0 } ) )
24 8 23 eqtrdi
 |-  ( ( O e. V /\ A C_ O ) -> ( ( _Ind ` O ) ` A ) = ( ( A X. { 1 } ) u. ( ( O \ A ) X. { 0 } ) ) )