This is an inofficial mirror of http://metamath.tirix.org for personal testing of a visualizer extension only.
Description: Dimension of a free left module. (Contributed by Thierry Arnoux, 20-May-2023)
| Ref | Expression | ||
|---|---|---|---|
| Hypothesis | frlmdim.f | |- F = ( R freeLMod I ) |
|
| Assertion | frlmdim | |- ( ( R e. DivRing /\ I e. V ) -> ( dim ` F ) = ( # ` I ) ) |
| Step | Hyp | Ref | Expression |
|---|---|---|---|
| 1 | frlmdim.f | |- F = ( R freeLMod I ) |
|
| 2 | 1 | frlmlvec | |- ( ( R e. DivRing /\ I e. V ) -> F e. LVec ) |
| 3 | drngring | |- ( R e. DivRing -> R e. Ring ) |
|
| 4 | eqid | |- ( R unitVec I ) = ( R unitVec I ) |
|
| 5 | eqid | |- ( LBasis ` F ) = ( LBasis ` F ) |
|
| 6 | 1 4 5 | frlmlbs | |- ( ( R e. Ring /\ I e. V ) -> ran ( R unitVec I ) e. ( LBasis ` F ) ) |
| 7 | 3 6 | sylan | |- ( ( R e. DivRing /\ I e. V ) -> ran ( R unitVec I ) e. ( LBasis ` F ) ) |
| 8 | 5 | dimval | |- ( ( F e. LVec /\ ran ( R unitVec I ) e. ( LBasis ` F ) ) -> ( dim ` F ) = ( # ` ran ( R unitVec I ) ) ) |
| 9 | 2 7 8 | syl2anc | |- ( ( R e. DivRing /\ I e. V ) -> ( dim ` F ) = ( # ` ran ( R unitVec I ) ) ) |
| 10 | simpr | |- ( ( R e. DivRing /\ I e. V ) -> I e. V ) |
|
| 11 | drngnzr | |- ( R e. DivRing -> R e. NzRing ) |
|
| 12 | eqid | |- ( Base ` F ) = ( Base ` F ) |
|
| 13 | 4 1 12 | uvcf1 | |- ( ( R e. NzRing /\ I e. V ) -> ( R unitVec I ) : I -1-1-> ( Base ` F ) ) |
| 14 | 11 13 | sylan | |- ( ( R e. DivRing /\ I e. V ) -> ( R unitVec I ) : I -1-1-> ( Base ` F ) ) |
| 15 | hashf1rn | |- ( ( I e. V /\ ( R unitVec I ) : I -1-1-> ( Base ` F ) ) -> ( # ` ( R unitVec I ) ) = ( # ` ran ( R unitVec I ) ) ) |
|
| 16 | 10 14 15 | syl2anc | |- ( ( R e. DivRing /\ I e. V ) -> ( # ` ( R unitVec I ) ) = ( # ` ran ( R unitVec I ) ) ) |
| 17 | mptexg | |- ( I e. V -> ( k e. I |-> if ( k = j , ( 1r ` R ) , ( 0g ` R ) ) ) e. _V ) |
|
| 18 | 17 | ad2antlr | |- ( ( ( R e. DivRing /\ I e. V ) /\ j e. I ) -> ( k e. I |-> if ( k = j , ( 1r ` R ) , ( 0g ` R ) ) ) e. _V ) |
| 19 | 18 | ralrimiva | |- ( ( R e. DivRing /\ I e. V ) -> A. j e. I ( k e. I |-> if ( k = j , ( 1r ` R ) , ( 0g ` R ) ) ) e. _V ) |
| 20 | eqid | |- ( j e. I |-> ( k e. I |-> if ( k = j , ( 1r ` R ) , ( 0g ` R ) ) ) ) = ( j e. I |-> ( k e. I |-> if ( k = j , ( 1r ` R ) , ( 0g ` R ) ) ) ) |
|
| 21 | 20 | fnmpt | |- ( A. j e. I ( k e. I |-> if ( k = j , ( 1r ` R ) , ( 0g ` R ) ) ) e. _V -> ( j e. I |-> ( k e. I |-> if ( k = j , ( 1r ` R ) , ( 0g ` R ) ) ) ) Fn I ) |
| 22 | 19 21 | syl | |- ( ( R e. DivRing /\ I e. V ) -> ( j e. I |-> ( k e. I |-> if ( k = j , ( 1r ` R ) , ( 0g ` R ) ) ) ) Fn I ) |
| 23 | eqid | |- ( 1r ` R ) = ( 1r ` R ) |
|
| 24 | eqid | |- ( 0g ` R ) = ( 0g ` R ) |
|
| 25 | 4 23 24 | uvcfval | |- ( ( R e. DivRing /\ I e. V ) -> ( R unitVec I ) = ( j e. I |-> ( k e. I |-> if ( k = j , ( 1r ` R ) , ( 0g ` R ) ) ) ) ) |
| 26 | 25 | fneq1d | |- ( ( R e. DivRing /\ I e. V ) -> ( ( R unitVec I ) Fn I <-> ( j e. I |-> ( k e. I |-> if ( k = j , ( 1r ` R ) , ( 0g ` R ) ) ) ) Fn I ) ) |
| 27 | 22 26 | mpbird | |- ( ( R e. DivRing /\ I e. V ) -> ( R unitVec I ) Fn I ) |
| 28 | hashfn | |- ( ( R unitVec I ) Fn I -> ( # ` ( R unitVec I ) ) = ( # ` I ) ) |
|
| 29 | 27 28 | syl | |- ( ( R e. DivRing /\ I e. V ) -> ( # ` ( R unitVec I ) ) = ( # ` I ) ) |
| 30 | 9 16 29 | 3eqtr2d | |- ( ( R e. DivRing /\ I e. V ) -> ( dim ` F ) = ( # ` I ) ) |