This is an inofficial mirror of http://metamath.tirix.org for personal testing of a visualizer extension only.
Description: A product of factors equal to zero or one is zero exactly when one of the factors is zero. (Contributed by Thierry Arnoux, 11-Dec-2021)
| Ref | Expression | ||
|---|---|---|---|
| Hypotheses | fprodex01.1 | |- ( k = l -> B = C ) |
|
| fprodex01.a | |- ( ph -> A e. Fin ) |
||
| fprodex01.b | |- ( ( ph /\ k e. A ) -> B e. { 0 , 1 } ) |
||
| Assertion | fprodex01 | |- ( ph -> prod_ k e. A B = if ( A. l e. A C = 1 , 1 , 0 ) ) |
| Step | Hyp | Ref | Expression |
|---|---|---|---|
| 1 | fprodex01.1 | |- ( k = l -> B = C ) |
|
| 2 | fprodex01.a | |- ( ph -> A e. Fin ) |
|
| 3 | fprodex01.b | |- ( ( ph /\ k e. A ) -> B e. { 0 , 1 } ) |
|
| 4 | simpr | |- ( ( ph /\ A. l e. A C = 1 ) -> A. l e. A C = 1 ) |
|
| 5 | 1 | eqeq1d | |- ( k = l -> ( B = 1 <-> C = 1 ) ) |
| 6 | 5 | cbvralvw | |- ( A. k e. A B = 1 <-> A. l e. A C = 1 ) |
| 7 | 4 6 | sylibr | |- ( ( ph /\ A. l e. A C = 1 ) -> A. k e. A B = 1 ) |
| 8 | 7 | prodeq2d | |- ( ( ph /\ A. l e. A C = 1 ) -> prod_ k e. A B = prod_ k e. A 1 ) |
| 9 | prod1 | |- ( ( A C_ ( ZZ>= ` 0 ) \/ A e. Fin ) -> prod_ k e. A 1 = 1 ) |
|
| 10 | 9 | olcs | |- ( A e. Fin -> prod_ k e. A 1 = 1 ) |
| 11 | 2 10 | syl | |- ( ph -> prod_ k e. A 1 = 1 ) |
| 12 | 11 | adantr | |- ( ( ph /\ A. l e. A C = 1 ) -> prod_ k e. A 1 = 1 ) |
| 13 | 8 12 | eqtr2d | |- ( ( ph /\ A. l e. A C = 1 ) -> 1 = prod_ k e. A B ) |
| 14 | nfv | |- F/ l ph |
|
| 15 | nfra1 | |- F/ l A. l e. A C = 1 |
|
| 16 | 15 | nfn | |- F/ l -. A. l e. A C = 1 |
| 17 | 14 16 | nfan | |- F/ l ( ph /\ -. A. l e. A C = 1 ) |
| 18 | nfv | |- F/ l prod_ k e. A B = 0 |
|
| 19 | 2 | adantr | |- ( ( ph /\ -. A. l e. A C = 1 ) -> A e. Fin ) |
| 20 | 19 | ad2antrr | |- ( ( ( ( ph /\ -. A. l e. A C = 1 ) /\ l e. A ) /\ C = 0 ) -> A e. Fin ) |
| 21 | pr01ssre | |- { 0 , 1 } C_ RR |
|
| 22 | ax-resscn | |- RR C_ CC |
|
| 23 | 21 22 | sstri | |- { 0 , 1 } C_ CC |
| 24 | 23 3 | sselid | |- ( ( ph /\ k e. A ) -> B e. CC ) |
| 25 | 24 | adantlr | |- ( ( ( ph /\ -. A. l e. A C = 1 ) /\ k e. A ) -> B e. CC ) |
| 26 | 25 | adantlr | |- ( ( ( ( ph /\ -. A. l e. A C = 1 ) /\ l e. A ) /\ k e. A ) -> B e. CC ) |
| 27 | 26 | adantlr | |- ( ( ( ( ( ph /\ -. A. l e. A C = 1 ) /\ l e. A ) /\ C = 0 ) /\ k e. A ) -> B e. CC ) |
| 28 | simplr | |- ( ( ( ( ph /\ -. A. l e. A C = 1 ) /\ l e. A ) /\ C = 0 ) -> l e. A ) |
|
| 29 | simpr | |- ( ( ( ( ph /\ -. A. l e. A C = 1 ) /\ l e. A ) /\ C = 0 ) -> C = 0 ) |
|
| 30 | 1 20 27 28 29 | fprodeq02 | |- ( ( ( ( ph /\ -. A. l e. A C = 1 ) /\ l e. A ) /\ C = 0 ) -> prod_ k e. A B = 0 ) |
| 31 | rexnal | |- ( E. l e. A -. C = 1 <-> -. A. l e. A C = 1 ) |
|
| 32 | 31 | biimpri | |- ( -. A. l e. A C = 1 -> E. l e. A -. C = 1 ) |
| 33 | 32 | adantl | |- ( ( ph /\ -. A. l e. A C = 1 ) -> E. l e. A -. C = 1 ) |
| 34 | 3 | ralrimiva | |- ( ph -> A. k e. A B e. { 0 , 1 } ) |
| 35 | 1 | eleq1d | |- ( k = l -> ( B e. { 0 , 1 } <-> C e. { 0 , 1 } ) ) |
| 36 | 35 | cbvralvw | |- ( A. k e. A B e. { 0 , 1 } <-> A. l e. A C e. { 0 , 1 } ) |
| 37 | 34 36 | sylib | |- ( ph -> A. l e. A C e. { 0 , 1 } ) |
| 38 | 37 | r19.21bi | |- ( ( ph /\ l e. A ) -> C e. { 0 , 1 } ) |
| 39 | c0ex | |- 0 e. _V |
|
| 40 | 1ex | |- 1 e. _V |
|
| 41 | 39 40 | elpr2 | |- ( C e. { 0 , 1 } <-> ( C = 0 \/ C = 1 ) ) |
| 42 | 38 41 | sylib | |- ( ( ph /\ l e. A ) -> ( C = 0 \/ C = 1 ) ) |
| 43 | 42 | orcomd | |- ( ( ph /\ l e. A ) -> ( C = 1 \/ C = 0 ) ) |
| 44 | 43 | ord | |- ( ( ph /\ l e. A ) -> ( -. C = 1 -> C = 0 ) ) |
| 45 | 44 | reximdva | |- ( ph -> ( E. l e. A -. C = 1 -> E. l e. A C = 0 ) ) |
| 46 | 45 | adantr | |- ( ( ph /\ -. A. l e. A C = 1 ) -> ( E. l e. A -. C = 1 -> E. l e. A C = 0 ) ) |
| 47 | 33 46 | mpd | |- ( ( ph /\ -. A. l e. A C = 1 ) -> E. l e. A C = 0 ) |
| 48 | 17 18 30 47 | r19.29af2 | |- ( ( ph /\ -. A. l e. A C = 1 ) -> prod_ k e. A B = 0 ) |
| 49 | 48 | eqcomd | |- ( ( ph /\ -. A. l e. A C = 1 ) -> 0 = prod_ k e. A B ) |
| 50 | 13 49 | ifeqda | |- ( ph -> if ( A. l e. A C = 1 , 1 , 0 ) = prod_ k e. A B ) |
| 51 | 50 | eqcomd | |- ( ph -> prod_ k e. A B = if ( A. l e. A C = 1 , 1 , 0 ) ) |