Metamath Proof Explorer


Theorem slesolinv

Description: The solution of a system of linear equations represented by a matrix with a unit as determinant is the multiplication of the inverse of the matrix with the right-hand side vector. (Contributed by AV, 10-Feb-2019) (Revised by AV, 28-Feb-2019)

Ref Expression
Hypotheses slesolex.a 𝐴 = ( 𝑁 Mat 𝑅 )
slesolex.b 𝐵 = ( Base ‘ 𝐴 )
slesolex.v 𝑉 = ( ( Base ‘ 𝑅 ) ↑m 𝑁 )
slesolex.x · = ( 𝑅 maVecMul ⟨ 𝑁 , 𝑁 ⟩ )
slesolex.d 𝐷 = ( 𝑁 maDet 𝑅 )
slesolinv.i 𝐼 = ( invr𝐴 )
Assertion slesolinv ( ( ( 𝑁 ≠ ∅ ∧ 𝑅 ∈ CRing ) ∧ ( 𝑋𝐵𝑌𝑉 ) ∧ ( ( 𝐷𝑋 ) ∈ ( Unit ‘ 𝑅 ) ∧ ( 𝑋 · 𝑍 ) = 𝑌 ) ) → 𝑍 = ( ( 𝐼𝑋 ) · 𝑌 ) )

Proof

Step Hyp Ref Expression
1 slesolex.a 𝐴 = ( 𝑁 Mat 𝑅 )
2 slesolex.b 𝐵 = ( Base ‘ 𝐴 )
3 slesolex.v 𝑉 = ( ( Base ‘ 𝑅 ) ↑m 𝑁 )
4 slesolex.x · = ( 𝑅 maVecMul ⟨ 𝑁 , 𝑁 ⟩ )
5 slesolex.d 𝐷 = ( 𝑁 maDet 𝑅 )
6 slesolinv.i 𝐼 = ( invr𝐴 )
7 eqid ( Base ‘ 𝑅 ) = ( Base ‘ 𝑅 )
8 crngring ( 𝑅 ∈ CRing → 𝑅 ∈ Ring )
9 8 adantl ( ( 𝑁 ≠ ∅ ∧ 𝑅 ∈ CRing ) → 𝑅 ∈ Ring )
10 9 3ad2ant1 ( ( ( 𝑁 ≠ ∅ ∧ 𝑅 ∈ CRing ) ∧ ( 𝑋𝐵𝑌𝑉 ) ∧ ( ( 𝐷𝑋 ) ∈ ( Unit ‘ 𝑅 ) ∧ ( 𝑋 · 𝑍 ) = 𝑌 ) ) → 𝑅 ∈ Ring )
11 1 2 matrcl ( 𝑋𝐵 → ( 𝑁 ∈ Fin ∧ 𝑅 ∈ V ) )
12 11 simpld ( 𝑋𝐵𝑁 ∈ Fin )
13 12 adantr ( ( 𝑋𝐵𝑌𝑉 ) → 𝑁 ∈ Fin )
14 13 3ad2ant2 ( ( ( 𝑁 ≠ ∅ ∧ 𝑅 ∈ CRing ) ∧ ( 𝑋𝐵𝑌𝑉 ) ∧ ( ( 𝐷𝑋 ) ∈ ( Unit ‘ 𝑅 ) ∧ ( 𝑋 · 𝑍 ) = 𝑌 ) ) → 𝑁 ∈ Fin )
15 8 anim2i ( ( 𝑁 ≠ ∅ ∧ 𝑅 ∈ CRing ) → ( 𝑁 ≠ ∅ ∧ 𝑅 ∈ Ring ) )
16 15 anim1i ( ( ( 𝑁 ≠ ∅ ∧ 𝑅 ∈ CRing ) ∧ ( 𝑋𝐵𝑌𝑉 ) ) → ( ( 𝑁 ≠ ∅ ∧ 𝑅 ∈ Ring ) ∧ ( 𝑋𝐵𝑌𝑉 ) ) )
17 16 3adant3 ( ( ( 𝑁 ≠ ∅ ∧ 𝑅 ∈ CRing ) ∧ ( 𝑋𝐵𝑌𝑉 ) ∧ ( ( 𝐷𝑋 ) ∈ ( Unit ‘ 𝑅 ) ∧ ( 𝑋 · 𝑍 ) = 𝑌 ) ) → ( ( 𝑁 ≠ ∅ ∧ 𝑅 ∈ Ring ) ∧ ( 𝑋𝐵𝑌𝑉 ) ) )
18 simpr ( ( ( 𝐷𝑋 ) ∈ ( Unit ‘ 𝑅 ) ∧ ( 𝑋 · 𝑍 ) = 𝑌 ) → ( 𝑋 · 𝑍 ) = 𝑌 )
19 18 3ad2ant3 ( ( ( 𝑁 ≠ ∅ ∧ 𝑅 ∈ CRing ) ∧ ( 𝑋𝐵𝑌𝑉 ) ∧ ( ( 𝐷𝑋 ) ∈ ( Unit ‘ 𝑅 ) ∧ ( 𝑋 · 𝑍 ) = 𝑌 ) ) → ( 𝑋 · 𝑍 ) = 𝑌 )
20 1 2 3 4 slesolvec ( ( ( 𝑁 ≠ ∅ ∧ 𝑅 ∈ Ring ) ∧ ( 𝑋𝐵𝑌𝑉 ) ) → ( ( 𝑋 · 𝑍 ) = 𝑌𝑍𝑉 ) )
21 17 19 20 sylc ( ( ( 𝑁 ≠ ∅ ∧ 𝑅 ∈ CRing ) ∧ ( 𝑋𝐵𝑌𝑉 ) ∧ ( ( 𝐷𝑋 ) ∈ ( Unit ‘ 𝑅 ) ∧ ( 𝑋 · 𝑍 ) = 𝑌 ) ) → 𝑍𝑉 )
22 21 3 eleqtrdi ( ( ( 𝑁 ≠ ∅ ∧ 𝑅 ∈ CRing ) ∧ ( 𝑋𝐵𝑌𝑉 ) ∧ ( ( 𝐷𝑋 ) ∈ ( Unit ‘ 𝑅 ) ∧ ( 𝑋 · 𝑍 ) = 𝑌 ) ) → 𝑍 ∈ ( ( Base ‘ 𝑅 ) ↑m 𝑁 ) )
23 eqid ( 𝑅 maMul ⟨ 𝑁 , 𝑁 , 𝑁 ⟩ ) = ( 𝑅 maMul ⟨ 𝑁 , 𝑁 , 𝑁 ⟩ )
24 9 13 anim12ci ( ( ( 𝑁 ≠ ∅ ∧ 𝑅 ∈ CRing ) ∧ ( 𝑋𝐵𝑌𝑉 ) ) → ( 𝑁 ∈ Fin ∧ 𝑅 ∈ Ring ) )
25 24 3adant3 ( ( ( 𝑁 ≠ ∅ ∧ 𝑅 ∈ CRing ) ∧ ( 𝑋𝐵𝑌𝑉 ) ∧ ( ( 𝐷𝑋 ) ∈ ( Unit ‘ 𝑅 ) ∧ ( 𝑋 · 𝑍 ) = 𝑌 ) ) → ( 𝑁 ∈ Fin ∧ 𝑅 ∈ Ring ) )
26 1 matring ( ( 𝑁 ∈ Fin ∧ 𝑅 ∈ Ring ) → 𝐴 ∈ Ring )
27 25 26 syl ( ( ( 𝑁 ≠ ∅ ∧ 𝑅 ∈ CRing ) ∧ ( 𝑋𝐵𝑌𝑉 ) ∧ ( ( 𝐷𝑋 ) ∈ ( Unit ‘ 𝑅 ) ∧ ( 𝑋 · 𝑍 ) = 𝑌 ) ) → 𝐴 ∈ Ring )
28 eqid ( Unit ‘ 𝐴 ) = ( Unit ‘ 𝐴 )
29 eqid ( Unit ‘ 𝑅 ) = ( Unit ‘ 𝑅 )
30 1 5 2 28 29 matunit ( ( 𝑅 ∈ CRing ∧ 𝑋𝐵 ) → ( 𝑋 ∈ ( Unit ‘ 𝐴 ) ↔ ( 𝐷𝑋 ) ∈ ( Unit ‘ 𝑅 ) ) )
31 30 bicomd ( ( 𝑅 ∈ CRing ∧ 𝑋𝐵 ) → ( ( 𝐷𝑋 ) ∈ ( Unit ‘ 𝑅 ) ↔ 𝑋 ∈ ( Unit ‘ 𝐴 ) ) )
32 31 ad2ant2lr ( ( ( 𝑁 ≠ ∅ ∧ 𝑅 ∈ CRing ) ∧ ( 𝑋𝐵𝑌𝑉 ) ) → ( ( 𝐷𝑋 ) ∈ ( Unit ‘ 𝑅 ) ↔ 𝑋 ∈ ( Unit ‘ 𝐴 ) ) )
33 32 biimpd ( ( ( 𝑁 ≠ ∅ ∧ 𝑅 ∈ CRing ) ∧ ( 𝑋𝐵𝑌𝑉 ) ) → ( ( 𝐷𝑋 ) ∈ ( Unit ‘ 𝑅 ) → 𝑋 ∈ ( Unit ‘ 𝐴 ) ) )
34 33 adantrd ( ( ( 𝑁 ≠ ∅ ∧ 𝑅 ∈ CRing ) ∧ ( 𝑋𝐵𝑌𝑉 ) ) → ( ( ( 𝐷𝑋 ) ∈ ( Unit ‘ 𝑅 ) ∧ ( 𝑋 · 𝑍 ) = 𝑌 ) → 𝑋 ∈ ( Unit ‘ 𝐴 ) ) )
35 34 3impia ( ( ( 𝑁 ≠ ∅ ∧ 𝑅 ∈ CRing ) ∧ ( 𝑋𝐵𝑌𝑉 ) ∧ ( ( 𝐷𝑋 ) ∈ ( Unit ‘ 𝑅 ) ∧ ( 𝑋 · 𝑍 ) = 𝑌 ) ) → 𝑋 ∈ ( Unit ‘ 𝐴 ) )
36 eqid ( Base ‘ 𝐴 ) = ( Base ‘ 𝐴 )
37 28 6 36 ringinvcl ( ( 𝐴 ∈ Ring ∧ 𝑋 ∈ ( Unit ‘ 𝐴 ) ) → ( 𝐼𝑋 ) ∈ ( Base ‘ 𝐴 ) )
38 27 35 37 syl2anc ( ( ( 𝑁 ≠ ∅ ∧ 𝑅 ∈ CRing ) ∧ ( 𝑋𝐵𝑌𝑉 ) ∧ ( ( 𝐷𝑋 ) ∈ ( Unit ‘ 𝑅 ) ∧ ( 𝑋 · 𝑍 ) = 𝑌 ) ) → ( 𝐼𝑋 ) ∈ ( Base ‘ 𝐴 ) )
39 2 eleq2i ( 𝑋𝐵𝑋 ∈ ( Base ‘ 𝐴 ) )
40 39 biimpi ( 𝑋𝐵𝑋 ∈ ( Base ‘ 𝐴 ) )
41 40 adantr ( ( 𝑋𝐵𝑌𝑉 ) → 𝑋 ∈ ( Base ‘ 𝐴 ) )
42 41 3ad2ant2 ( ( ( 𝑁 ≠ ∅ ∧ 𝑅 ∈ CRing ) ∧ ( 𝑋𝐵𝑌𝑉 ) ∧ ( ( 𝐷𝑋 ) ∈ ( Unit ‘ 𝑅 ) ∧ ( 𝑋 · 𝑍 ) = 𝑌 ) ) → 𝑋 ∈ ( Base ‘ 𝐴 ) )
43 1 7 4 10 14 22 23 38 42 mavmulass ( ( ( 𝑁 ≠ ∅ ∧ 𝑅 ∈ CRing ) ∧ ( 𝑋𝐵𝑌𝑉 ) ∧ ( ( 𝐷𝑋 ) ∈ ( Unit ‘ 𝑅 ) ∧ ( 𝑋 · 𝑍 ) = 𝑌 ) ) → ( ( ( 𝐼𝑋 ) ( 𝑅 maMul ⟨ 𝑁 , 𝑁 , 𝑁 ⟩ ) 𝑋 ) · 𝑍 ) = ( ( 𝐼𝑋 ) · ( 𝑋 · 𝑍 ) ) )
44 simpr ( ( 𝑁 ≠ ∅ ∧ 𝑅 ∈ CRing ) → 𝑅 ∈ CRing )
45 44 13 anim12ci ( ( ( 𝑁 ≠ ∅ ∧ 𝑅 ∈ CRing ) ∧ ( 𝑋𝐵𝑌𝑉 ) ) → ( 𝑁 ∈ Fin ∧ 𝑅 ∈ CRing ) )
46 45 3adant3 ( ( ( 𝑁 ≠ ∅ ∧ 𝑅 ∈ CRing ) ∧ ( 𝑋𝐵𝑌𝑉 ) ∧ ( ( 𝐷𝑋 ) ∈ ( Unit ‘ 𝑅 ) ∧ ( 𝑋 · 𝑍 ) = 𝑌 ) ) → ( 𝑁 ∈ Fin ∧ 𝑅 ∈ CRing ) )
47 1 23 matmulr ( ( 𝑁 ∈ Fin ∧ 𝑅 ∈ CRing ) → ( 𝑅 maMul ⟨ 𝑁 , 𝑁 , 𝑁 ⟩ ) = ( .r𝐴 ) )
48 46 47 syl ( ( ( 𝑁 ≠ ∅ ∧ 𝑅 ∈ CRing ) ∧ ( 𝑋𝐵𝑌𝑉 ) ∧ ( ( 𝐷𝑋 ) ∈ ( Unit ‘ 𝑅 ) ∧ ( 𝑋 · 𝑍 ) = 𝑌 ) ) → ( 𝑅 maMul ⟨ 𝑁 , 𝑁 , 𝑁 ⟩ ) = ( .r𝐴 ) )
49 48 oveqd ( ( ( 𝑁 ≠ ∅ ∧ 𝑅 ∈ CRing ) ∧ ( 𝑋𝐵𝑌𝑉 ) ∧ ( ( 𝐷𝑋 ) ∈ ( Unit ‘ 𝑅 ) ∧ ( 𝑋 · 𝑍 ) = 𝑌 ) ) → ( ( 𝐼𝑋 ) ( 𝑅 maMul ⟨ 𝑁 , 𝑁 , 𝑁 ⟩ ) 𝑋 ) = ( ( 𝐼𝑋 ) ( .r𝐴 ) 𝑋 ) )
50 eqid ( .r𝐴 ) = ( .r𝐴 )
51 eqid ( 1r𝐴 ) = ( 1r𝐴 )
52 28 6 50 51 unitlinv ( ( 𝐴 ∈ Ring ∧ 𝑋 ∈ ( Unit ‘ 𝐴 ) ) → ( ( 𝐼𝑋 ) ( .r𝐴 ) 𝑋 ) = ( 1r𝐴 ) )
53 27 35 52 syl2anc ( ( ( 𝑁 ≠ ∅ ∧ 𝑅 ∈ CRing ) ∧ ( 𝑋𝐵𝑌𝑉 ) ∧ ( ( 𝐷𝑋 ) ∈ ( Unit ‘ 𝑅 ) ∧ ( 𝑋 · 𝑍 ) = 𝑌 ) ) → ( ( 𝐼𝑋 ) ( .r𝐴 ) 𝑋 ) = ( 1r𝐴 ) )
54 49 53 eqtrd ( ( ( 𝑁 ≠ ∅ ∧ 𝑅 ∈ CRing ) ∧ ( 𝑋𝐵𝑌𝑉 ) ∧ ( ( 𝐷𝑋 ) ∈ ( Unit ‘ 𝑅 ) ∧ ( 𝑋 · 𝑍 ) = 𝑌 ) ) → ( ( 𝐼𝑋 ) ( 𝑅 maMul ⟨ 𝑁 , 𝑁 , 𝑁 ⟩ ) 𝑋 ) = ( 1r𝐴 ) )
55 54 oveq1d ( ( ( 𝑁 ≠ ∅ ∧ 𝑅 ∈ CRing ) ∧ ( 𝑋𝐵𝑌𝑉 ) ∧ ( ( 𝐷𝑋 ) ∈ ( Unit ‘ 𝑅 ) ∧ ( 𝑋 · 𝑍 ) = 𝑌 ) ) → ( ( ( 𝐼𝑋 ) ( 𝑅 maMul ⟨ 𝑁 , 𝑁 , 𝑁 ⟩ ) 𝑋 ) · 𝑍 ) = ( ( 1r𝐴 ) · 𝑍 ) )
56 1 7 4 10 14 22 1mavmul ( ( ( 𝑁 ≠ ∅ ∧ 𝑅 ∈ CRing ) ∧ ( 𝑋𝐵𝑌𝑉 ) ∧ ( ( 𝐷𝑋 ) ∈ ( Unit ‘ 𝑅 ) ∧ ( 𝑋 · 𝑍 ) = 𝑌 ) ) → ( ( 1r𝐴 ) · 𝑍 ) = 𝑍 )
57 55 56 eqtrd ( ( ( 𝑁 ≠ ∅ ∧ 𝑅 ∈ CRing ) ∧ ( 𝑋𝐵𝑌𝑉 ) ∧ ( ( 𝐷𝑋 ) ∈ ( Unit ‘ 𝑅 ) ∧ ( 𝑋 · 𝑍 ) = 𝑌 ) ) → ( ( ( 𝐼𝑋 ) ( 𝑅 maMul ⟨ 𝑁 , 𝑁 , 𝑁 ⟩ ) 𝑋 ) · 𝑍 ) = 𝑍 )
58 oveq2 ( ( 𝑋 · 𝑍 ) = 𝑌 → ( ( 𝐼𝑋 ) · ( 𝑋 · 𝑍 ) ) = ( ( 𝐼𝑋 ) · 𝑌 ) )
59 58 adantl ( ( ( 𝐷𝑋 ) ∈ ( Unit ‘ 𝑅 ) ∧ ( 𝑋 · 𝑍 ) = 𝑌 ) → ( ( 𝐼𝑋 ) · ( 𝑋 · 𝑍 ) ) = ( ( 𝐼𝑋 ) · 𝑌 ) )
60 59 3ad2ant3 ( ( ( 𝑁 ≠ ∅ ∧ 𝑅 ∈ CRing ) ∧ ( 𝑋𝐵𝑌𝑉 ) ∧ ( ( 𝐷𝑋 ) ∈ ( Unit ‘ 𝑅 ) ∧ ( 𝑋 · 𝑍 ) = 𝑌 ) ) → ( ( 𝐼𝑋 ) · ( 𝑋 · 𝑍 ) ) = ( ( 𝐼𝑋 ) · 𝑌 ) )
61 43 57 60 3eqtr3d ( ( ( 𝑁 ≠ ∅ ∧ 𝑅 ∈ CRing ) ∧ ( 𝑋𝐵𝑌𝑉 ) ∧ ( ( 𝐷𝑋 ) ∈ ( Unit ‘ 𝑅 ) ∧ ( 𝑋 · 𝑍 ) = 𝑌 ) ) → 𝑍 = ( ( 𝐼𝑋 ) · 𝑌 ) )