Metamath Proof Explorer


Theorem frlmdim

Description: Dimension of a free left module. (Contributed by Thierry Arnoux, 20-May-2023)

Ref Expression
Hypothesis frlmdim.f 𝐹 = ( 𝑅 freeLMod 𝐼 )
Assertion frlmdim ( ( 𝑅 ∈ DivRing ∧ 𝐼𝑉 ) → ( dim ‘ 𝐹 ) = ( ♯ ‘ 𝐼 ) )

Proof

Step Hyp Ref Expression
1 frlmdim.f 𝐹 = ( 𝑅 freeLMod 𝐼 )
2 1 frlmlvec ( ( 𝑅 ∈ DivRing ∧ 𝐼𝑉 ) → 𝐹 ∈ LVec )
3 drngring ( 𝑅 ∈ DivRing → 𝑅 ∈ Ring )
4 eqid ( 𝑅 unitVec 𝐼 ) = ( 𝑅 unitVec 𝐼 )
5 eqid ( LBasis ‘ 𝐹 ) = ( LBasis ‘ 𝐹 )
6 1 4 5 frlmlbs ( ( 𝑅 ∈ Ring ∧ 𝐼𝑉 ) → ran ( 𝑅 unitVec 𝐼 ) ∈ ( LBasis ‘ 𝐹 ) )
7 3 6 sylan ( ( 𝑅 ∈ DivRing ∧ 𝐼𝑉 ) → ran ( 𝑅 unitVec 𝐼 ) ∈ ( LBasis ‘ 𝐹 ) )
8 5 dimval ( ( 𝐹 ∈ LVec ∧ ran ( 𝑅 unitVec 𝐼 ) ∈ ( LBasis ‘ 𝐹 ) ) → ( dim ‘ 𝐹 ) = ( ♯ ‘ ran ( 𝑅 unitVec 𝐼 ) ) )
9 2 7 8 syl2anc ( ( 𝑅 ∈ DivRing ∧ 𝐼𝑉 ) → ( dim ‘ 𝐹 ) = ( ♯ ‘ ran ( 𝑅 unitVec 𝐼 ) ) )
10 simpr ( ( 𝑅 ∈ DivRing ∧ 𝐼𝑉 ) → 𝐼𝑉 )
11 drngnzr ( 𝑅 ∈ DivRing → 𝑅 ∈ NzRing )
12 eqid ( Base ‘ 𝐹 ) = ( Base ‘ 𝐹 )
13 4 1 12 uvcf1 ( ( 𝑅 ∈ NzRing ∧ 𝐼𝑉 ) → ( 𝑅 unitVec 𝐼 ) : 𝐼1-1→ ( Base ‘ 𝐹 ) )
14 11 13 sylan ( ( 𝑅 ∈ DivRing ∧ 𝐼𝑉 ) → ( 𝑅 unitVec 𝐼 ) : 𝐼1-1→ ( Base ‘ 𝐹 ) )
15 hashf1rn ( ( 𝐼𝑉 ∧ ( 𝑅 unitVec 𝐼 ) : 𝐼1-1→ ( Base ‘ 𝐹 ) ) → ( ♯ ‘ ( 𝑅 unitVec 𝐼 ) ) = ( ♯ ‘ ran ( 𝑅 unitVec 𝐼 ) ) )
16 10 14 15 syl2anc ( ( 𝑅 ∈ DivRing ∧ 𝐼𝑉 ) → ( ♯ ‘ ( 𝑅 unitVec 𝐼 ) ) = ( ♯ ‘ ran ( 𝑅 unitVec 𝐼 ) ) )
17 mptexg ( 𝐼𝑉 → ( 𝑘𝐼 ↦ if ( 𝑘 = 𝑗 , ( 1r𝑅 ) , ( 0g𝑅 ) ) ) ∈ V )
18 17 ad2antlr ( ( ( 𝑅 ∈ DivRing ∧ 𝐼𝑉 ) ∧ 𝑗𝐼 ) → ( 𝑘𝐼 ↦ if ( 𝑘 = 𝑗 , ( 1r𝑅 ) , ( 0g𝑅 ) ) ) ∈ V )
19 18 ralrimiva ( ( 𝑅 ∈ DivRing ∧ 𝐼𝑉 ) → ∀ 𝑗𝐼 ( 𝑘𝐼 ↦ if ( 𝑘 = 𝑗 , ( 1r𝑅 ) , ( 0g𝑅 ) ) ) ∈ V )
20 eqid ( 𝑗𝐼 ↦ ( 𝑘𝐼 ↦ if ( 𝑘 = 𝑗 , ( 1r𝑅 ) , ( 0g𝑅 ) ) ) ) = ( 𝑗𝐼 ↦ ( 𝑘𝐼 ↦ if ( 𝑘 = 𝑗 , ( 1r𝑅 ) , ( 0g𝑅 ) ) ) )
21 20 fnmpt ( ∀ 𝑗𝐼 ( 𝑘𝐼 ↦ if ( 𝑘 = 𝑗 , ( 1r𝑅 ) , ( 0g𝑅 ) ) ) ∈ V → ( 𝑗𝐼 ↦ ( 𝑘𝐼 ↦ if ( 𝑘 = 𝑗 , ( 1r𝑅 ) , ( 0g𝑅 ) ) ) ) Fn 𝐼 )
22 19 21 syl ( ( 𝑅 ∈ DivRing ∧ 𝐼𝑉 ) → ( 𝑗𝐼 ↦ ( 𝑘𝐼 ↦ if ( 𝑘 = 𝑗 , ( 1r𝑅 ) , ( 0g𝑅 ) ) ) ) Fn 𝐼 )
23 eqid ( 1r𝑅 ) = ( 1r𝑅 )
24 eqid ( 0g𝑅 ) = ( 0g𝑅 )
25 4 23 24 uvcfval ( ( 𝑅 ∈ DivRing ∧ 𝐼𝑉 ) → ( 𝑅 unitVec 𝐼 ) = ( 𝑗𝐼 ↦ ( 𝑘𝐼 ↦ if ( 𝑘 = 𝑗 , ( 1r𝑅 ) , ( 0g𝑅 ) ) ) ) )
26 25 fneq1d ( ( 𝑅 ∈ DivRing ∧ 𝐼𝑉 ) → ( ( 𝑅 unitVec 𝐼 ) Fn 𝐼 ↔ ( 𝑗𝐼 ↦ ( 𝑘𝐼 ↦ if ( 𝑘 = 𝑗 , ( 1r𝑅 ) , ( 0g𝑅 ) ) ) ) Fn 𝐼 ) )
27 22 26 mpbird ( ( 𝑅 ∈ DivRing ∧ 𝐼𝑉 ) → ( 𝑅 unitVec 𝐼 ) Fn 𝐼 )
28 hashfn ( ( 𝑅 unitVec 𝐼 ) Fn 𝐼 → ( ♯ ‘ ( 𝑅 unitVec 𝐼 ) ) = ( ♯ ‘ 𝐼 ) )
29 27 28 syl ( ( 𝑅 ∈ DivRing ∧ 𝐼𝑉 ) → ( ♯ ‘ ( 𝑅 unitVec 𝐼 ) ) = ( ♯ ‘ 𝐼 ) )
30 9 16 29 3eqtr2d ( ( 𝑅 ∈ DivRing ∧ 𝐼𝑉 ) → ( dim ‘ 𝐹 ) = ( ♯ ‘ 𝐼 ) )