Metamath Proof Explorer


Theorem cayleyhamilton

Description: The Cayley-Hamilton theorem: A matrix over a commutative ring "satisfies its own characteristic equation", see theorem 7.8 in Roman p. 170 (without proof!), or theorem 3.1 in Lang p. 561. In other words, a matrix over a commutative ring "inserted" into its characteristic polynomial results in zero. This is Metamath 100 proof #49. (Contributed by Alexander van der Vekens, 25-Nov-2019)

Ref Expression
Hypotheses cayleyhamilton.a โŠข ๐ด = ( ๐‘ Mat ๐‘… )
cayleyhamilton.b โŠข ๐ต = ( Base โ€˜ ๐ด )
cayleyhamilton.0 โŠข 0 = ( 0g โ€˜ ๐ด )
cayleyhamilton.c โŠข ๐ถ = ( ๐‘ CharPlyMat ๐‘… )
cayleyhamilton.k โŠข ๐พ = ( coe1 โ€˜ ( ๐ถ โ€˜ ๐‘€ ) )
cayleyhamilton.m โŠข โˆ— = ( ยท๐‘  โ€˜ ๐ด )
cayleyhamilton.e โŠข โ†‘ = ( .g โ€˜ ( mulGrp โ€˜ ๐ด ) )
Assertion cayleyhamilton ( ( ๐‘ โˆˆ Fin โˆง ๐‘… โˆˆ CRing โˆง ๐‘€ โˆˆ ๐ต ) โ†’ ( ๐ด ฮฃg ( ๐‘› โˆˆ โ„•0 โ†ฆ ( ( ๐พ โ€˜ ๐‘› ) โˆ— ( ๐‘› โ†‘ ๐‘€ ) ) ) ) = 0 )

Proof

Step Hyp Ref Expression
1 cayleyhamilton.a โŠข ๐ด = ( ๐‘ Mat ๐‘… )
2 cayleyhamilton.b โŠข ๐ต = ( Base โ€˜ ๐ด )
3 cayleyhamilton.0 โŠข 0 = ( 0g โ€˜ ๐ด )
4 cayleyhamilton.c โŠข ๐ถ = ( ๐‘ CharPlyMat ๐‘… )
5 cayleyhamilton.k โŠข ๐พ = ( coe1 โ€˜ ( ๐ถ โ€˜ ๐‘€ ) )
6 cayleyhamilton.m โŠข โˆ— = ( ยท๐‘  โ€˜ ๐ด )
7 cayleyhamilton.e โŠข โ†‘ = ( .g โ€˜ ( mulGrp โ€˜ ๐ด ) )
8 eqid โŠข ( 1r โ€˜ ๐ด ) = ( 1r โ€˜ ๐ด )
9 eqid โŠข ( Poly1 โ€˜ ๐‘… ) = ( Poly1 โ€˜ ๐‘… )
10 eqid โŠข ( ๐‘ Mat ( Poly1 โ€˜ ๐‘… ) ) = ( ๐‘ Mat ( Poly1 โ€˜ ๐‘… ) )
11 eqid โŠข ( .r โ€˜ ( ๐‘ Mat ( Poly1 โ€˜ ๐‘… ) ) ) = ( .r โ€˜ ( ๐‘ Mat ( Poly1 โ€˜ ๐‘… ) ) )
12 eqid โŠข ( -g โ€˜ ( ๐‘ Mat ( Poly1 โ€˜ ๐‘… ) ) ) = ( -g โ€˜ ( ๐‘ Mat ( Poly1 โ€˜ ๐‘… ) ) )
13 eqid โŠข ( 0g โ€˜ ( ๐‘ Mat ( Poly1 โ€˜ ๐‘… ) ) ) = ( 0g โ€˜ ( ๐‘ Mat ( Poly1 โ€˜ ๐‘… ) ) )
14 eqid โŠข ( Base โ€˜ ( ๐‘ Mat ( Poly1 โ€˜ ๐‘… ) ) ) = ( Base โ€˜ ( ๐‘ Mat ( Poly1 โ€˜ ๐‘… ) ) )
15 eqid โŠข ( .g โ€˜ ( mulGrp โ€˜ ( ๐‘ Mat ( Poly1 โ€˜ ๐‘… ) ) ) ) = ( .g โ€˜ ( mulGrp โ€˜ ( ๐‘ Mat ( Poly1 โ€˜ ๐‘… ) ) ) )
16 eqid โŠข ( ๐‘ matToPolyMat ๐‘… ) = ( ๐‘ matToPolyMat ๐‘… )
17 eqeq1 โŠข ( ๐‘™ = ๐‘› โ†’ ( ๐‘™ = 0 โ†” ๐‘› = 0 ) )
18 eqeq1 โŠข ( ๐‘™ = ๐‘› โ†’ ( ๐‘™ = ( ๐‘ฅ + 1 ) โ†” ๐‘› = ( ๐‘ฅ + 1 ) ) )
19 breq2 โŠข ( ๐‘™ = ๐‘› โ†’ ( ( ๐‘ฅ + 1 ) < ๐‘™ โ†” ( ๐‘ฅ + 1 ) < ๐‘› ) )
20 fvoveq1 โŠข ( ๐‘™ = ๐‘› โ†’ ( ๐‘ฆ โ€˜ ( ๐‘™ โˆ’ 1 ) ) = ( ๐‘ฆ โ€˜ ( ๐‘› โˆ’ 1 ) ) )
21 20 fveq2d โŠข ( ๐‘™ = ๐‘› โ†’ ( ( ๐‘ matToPolyMat ๐‘… ) โ€˜ ( ๐‘ฆ โ€˜ ( ๐‘™ โˆ’ 1 ) ) ) = ( ( ๐‘ matToPolyMat ๐‘… ) โ€˜ ( ๐‘ฆ โ€˜ ( ๐‘› โˆ’ 1 ) ) ) )
22 2fveq3 โŠข ( ๐‘™ = ๐‘› โ†’ ( ( ๐‘ matToPolyMat ๐‘… ) โ€˜ ( ๐‘ฆ โ€˜ ๐‘™ ) ) = ( ( ๐‘ matToPolyMat ๐‘… ) โ€˜ ( ๐‘ฆ โ€˜ ๐‘› ) ) )
23 22 oveq2d โŠข ( ๐‘™ = ๐‘› โ†’ ( ( ( ๐‘ matToPolyMat ๐‘… ) โ€˜ ๐‘€ ) ( .r โ€˜ ( ๐‘ Mat ( Poly1 โ€˜ ๐‘… ) ) ) ( ( ๐‘ matToPolyMat ๐‘… ) โ€˜ ( ๐‘ฆ โ€˜ ๐‘™ ) ) ) = ( ( ( ๐‘ matToPolyMat ๐‘… ) โ€˜ ๐‘€ ) ( .r โ€˜ ( ๐‘ Mat ( Poly1 โ€˜ ๐‘… ) ) ) ( ( ๐‘ matToPolyMat ๐‘… ) โ€˜ ( ๐‘ฆ โ€˜ ๐‘› ) ) ) )
24 21 23 oveq12d โŠข ( ๐‘™ = ๐‘› โ†’ ( ( ( ๐‘ matToPolyMat ๐‘… ) โ€˜ ( ๐‘ฆ โ€˜ ( ๐‘™ โˆ’ 1 ) ) ) ( -g โ€˜ ( ๐‘ Mat ( Poly1 โ€˜ ๐‘… ) ) ) ( ( ( ๐‘ matToPolyMat ๐‘… ) โ€˜ ๐‘€ ) ( .r โ€˜ ( ๐‘ Mat ( Poly1 โ€˜ ๐‘… ) ) ) ( ( ๐‘ matToPolyMat ๐‘… ) โ€˜ ( ๐‘ฆ โ€˜ ๐‘™ ) ) ) ) = ( ( ( ๐‘ matToPolyMat ๐‘… ) โ€˜ ( ๐‘ฆ โ€˜ ( ๐‘› โˆ’ 1 ) ) ) ( -g โ€˜ ( ๐‘ Mat ( Poly1 โ€˜ ๐‘… ) ) ) ( ( ( ๐‘ matToPolyMat ๐‘… ) โ€˜ ๐‘€ ) ( .r โ€˜ ( ๐‘ Mat ( Poly1 โ€˜ ๐‘… ) ) ) ( ( ๐‘ matToPolyMat ๐‘… ) โ€˜ ( ๐‘ฆ โ€˜ ๐‘› ) ) ) ) )
25 19 24 ifbieq2d โŠข ( ๐‘™ = ๐‘› โ†’ if ( ( ๐‘ฅ + 1 ) < ๐‘™ , ( 0g โ€˜ ( ๐‘ Mat ( Poly1 โ€˜ ๐‘… ) ) ) , ( ( ( ๐‘ matToPolyMat ๐‘… ) โ€˜ ( ๐‘ฆ โ€˜ ( ๐‘™ โˆ’ 1 ) ) ) ( -g โ€˜ ( ๐‘ Mat ( Poly1 โ€˜ ๐‘… ) ) ) ( ( ( ๐‘ matToPolyMat ๐‘… ) โ€˜ ๐‘€ ) ( .r โ€˜ ( ๐‘ Mat ( Poly1 โ€˜ ๐‘… ) ) ) ( ( ๐‘ matToPolyMat ๐‘… ) โ€˜ ( ๐‘ฆ โ€˜ ๐‘™ ) ) ) ) ) = if ( ( ๐‘ฅ + 1 ) < ๐‘› , ( 0g โ€˜ ( ๐‘ Mat ( Poly1 โ€˜ ๐‘… ) ) ) , ( ( ( ๐‘ matToPolyMat ๐‘… ) โ€˜ ( ๐‘ฆ โ€˜ ( ๐‘› โˆ’ 1 ) ) ) ( -g โ€˜ ( ๐‘ Mat ( Poly1 โ€˜ ๐‘… ) ) ) ( ( ( ๐‘ matToPolyMat ๐‘… ) โ€˜ ๐‘€ ) ( .r โ€˜ ( ๐‘ Mat ( Poly1 โ€˜ ๐‘… ) ) ) ( ( ๐‘ matToPolyMat ๐‘… ) โ€˜ ( ๐‘ฆ โ€˜ ๐‘› ) ) ) ) ) )
26 18 25 ifbieq2d โŠข ( ๐‘™ = ๐‘› โ†’ if ( ๐‘™ = ( ๐‘ฅ + 1 ) , ( ( ๐‘ matToPolyMat ๐‘… ) โ€˜ ( ๐‘ฆ โ€˜ ๐‘ฅ ) ) , if ( ( ๐‘ฅ + 1 ) < ๐‘™ , ( 0g โ€˜ ( ๐‘ Mat ( Poly1 โ€˜ ๐‘… ) ) ) , ( ( ( ๐‘ matToPolyMat ๐‘… ) โ€˜ ( ๐‘ฆ โ€˜ ( ๐‘™ โˆ’ 1 ) ) ) ( -g โ€˜ ( ๐‘ Mat ( Poly1 โ€˜ ๐‘… ) ) ) ( ( ( ๐‘ matToPolyMat ๐‘… ) โ€˜ ๐‘€ ) ( .r โ€˜ ( ๐‘ Mat ( Poly1 โ€˜ ๐‘… ) ) ) ( ( ๐‘ matToPolyMat ๐‘… ) โ€˜ ( ๐‘ฆ โ€˜ ๐‘™ ) ) ) ) ) ) = if ( ๐‘› = ( ๐‘ฅ + 1 ) , ( ( ๐‘ matToPolyMat ๐‘… ) โ€˜ ( ๐‘ฆ โ€˜ ๐‘ฅ ) ) , if ( ( ๐‘ฅ + 1 ) < ๐‘› , ( 0g โ€˜ ( ๐‘ Mat ( Poly1 โ€˜ ๐‘… ) ) ) , ( ( ( ๐‘ matToPolyMat ๐‘… ) โ€˜ ( ๐‘ฆ โ€˜ ( ๐‘› โˆ’ 1 ) ) ) ( -g โ€˜ ( ๐‘ Mat ( Poly1 โ€˜ ๐‘… ) ) ) ( ( ( ๐‘ matToPolyMat ๐‘… ) โ€˜ ๐‘€ ) ( .r โ€˜ ( ๐‘ Mat ( Poly1 โ€˜ ๐‘… ) ) ) ( ( ๐‘ matToPolyMat ๐‘… ) โ€˜ ( ๐‘ฆ โ€˜ ๐‘› ) ) ) ) ) ) )
27 17 26 ifbieq2d โŠข ( ๐‘™ = ๐‘› โ†’ if ( ๐‘™ = 0 , ( ( 0g โ€˜ ( ๐‘ Mat ( Poly1 โ€˜ ๐‘… ) ) ) ( -g โ€˜ ( ๐‘ Mat ( Poly1 โ€˜ ๐‘… ) ) ) ( ( ( ๐‘ matToPolyMat ๐‘… ) โ€˜ ๐‘€ ) ( .r โ€˜ ( ๐‘ Mat ( Poly1 โ€˜ ๐‘… ) ) ) ( ( ๐‘ matToPolyMat ๐‘… ) โ€˜ ( ๐‘ฆ โ€˜ 0 ) ) ) ) , if ( ๐‘™ = ( ๐‘ฅ + 1 ) , ( ( ๐‘ matToPolyMat ๐‘… ) โ€˜ ( ๐‘ฆ โ€˜ ๐‘ฅ ) ) , if ( ( ๐‘ฅ + 1 ) < ๐‘™ , ( 0g โ€˜ ( ๐‘ Mat ( Poly1 โ€˜ ๐‘… ) ) ) , ( ( ( ๐‘ matToPolyMat ๐‘… ) โ€˜ ( ๐‘ฆ โ€˜ ( ๐‘™ โˆ’ 1 ) ) ) ( -g โ€˜ ( ๐‘ Mat ( Poly1 โ€˜ ๐‘… ) ) ) ( ( ( ๐‘ matToPolyMat ๐‘… ) โ€˜ ๐‘€ ) ( .r โ€˜ ( ๐‘ Mat ( Poly1 โ€˜ ๐‘… ) ) ) ( ( ๐‘ matToPolyMat ๐‘… ) โ€˜ ( ๐‘ฆ โ€˜ ๐‘™ ) ) ) ) ) ) ) = if ( ๐‘› = 0 , ( ( 0g โ€˜ ( ๐‘ Mat ( Poly1 โ€˜ ๐‘… ) ) ) ( -g โ€˜ ( ๐‘ Mat ( Poly1 โ€˜ ๐‘… ) ) ) ( ( ( ๐‘ matToPolyMat ๐‘… ) โ€˜ ๐‘€ ) ( .r โ€˜ ( ๐‘ Mat ( Poly1 โ€˜ ๐‘… ) ) ) ( ( ๐‘ matToPolyMat ๐‘… ) โ€˜ ( ๐‘ฆ โ€˜ 0 ) ) ) ) , if ( ๐‘› = ( ๐‘ฅ + 1 ) , ( ( ๐‘ matToPolyMat ๐‘… ) โ€˜ ( ๐‘ฆ โ€˜ ๐‘ฅ ) ) , if ( ( ๐‘ฅ + 1 ) < ๐‘› , ( 0g โ€˜ ( ๐‘ Mat ( Poly1 โ€˜ ๐‘… ) ) ) , ( ( ( ๐‘ matToPolyMat ๐‘… ) โ€˜ ( ๐‘ฆ โ€˜ ( ๐‘› โˆ’ 1 ) ) ) ( -g โ€˜ ( ๐‘ Mat ( Poly1 โ€˜ ๐‘… ) ) ) ( ( ( ๐‘ matToPolyMat ๐‘… ) โ€˜ ๐‘€ ) ( .r โ€˜ ( ๐‘ Mat ( Poly1 โ€˜ ๐‘… ) ) ) ( ( ๐‘ matToPolyMat ๐‘… ) โ€˜ ( ๐‘ฆ โ€˜ ๐‘› ) ) ) ) ) ) ) )
28 27 cbvmptv โŠข ( ๐‘™ โˆˆ โ„•0 โ†ฆ if ( ๐‘™ = 0 , ( ( 0g โ€˜ ( ๐‘ Mat ( Poly1 โ€˜ ๐‘… ) ) ) ( -g โ€˜ ( ๐‘ Mat ( Poly1 โ€˜ ๐‘… ) ) ) ( ( ( ๐‘ matToPolyMat ๐‘… ) โ€˜ ๐‘€ ) ( .r โ€˜ ( ๐‘ Mat ( Poly1 โ€˜ ๐‘… ) ) ) ( ( ๐‘ matToPolyMat ๐‘… ) โ€˜ ( ๐‘ฆ โ€˜ 0 ) ) ) ) , if ( ๐‘™ = ( ๐‘ฅ + 1 ) , ( ( ๐‘ matToPolyMat ๐‘… ) โ€˜ ( ๐‘ฆ โ€˜ ๐‘ฅ ) ) , if ( ( ๐‘ฅ + 1 ) < ๐‘™ , ( 0g โ€˜ ( ๐‘ Mat ( Poly1 โ€˜ ๐‘… ) ) ) , ( ( ( ๐‘ matToPolyMat ๐‘… ) โ€˜ ( ๐‘ฆ โ€˜ ( ๐‘™ โˆ’ 1 ) ) ) ( -g โ€˜ ( ๐‘ Mat ( Poly1 โ€˜ ๐‘… ) ) ) ( ( ( ๐‘ matToPolyMat ๐‘… ) โ€˜ ๐‘€ ) ( .r โ€˜ ( ๐‘ Mat ( Poly1 โ€˜ ๐‘… ) ) ) ( ( ๐‘ matToPolyMat ๐‘… ) โ€˜ ( ๐‘ฆ โ€˜ ๐‘™ ) ) ) ) ) ) ) ) = ( ๐‘› โˆˆ โ„•0 โ†ฆ if ( ๐‘› = 0 , ( ( 0g โ€˜ ( ๐‘ Mat ( Poly1 โ€˜ ๐‘… ) ) ) ( -g โ€˜ ( ๐‘ Mat ( Poly1 โ€˜ ๐‘… ) ) ) ( ( ( ๐‘ matToPolyMat ๐‘… ) โ€˜ ๐‘€ ) ( .r โ€˜ ( ๐‘ Mat ( Poly1 โ€˜ ๐‘… ) ) ) ( ( ๐‘ matToPolyMat ๐‘… ) โ€˜ ( ๐‘ฆ โ€˜ 0 ) ) ) ) , if ( ๐‘› = ( ๐‘ฅ + 1 ) , ( ( ๐‘ matToPolyMat ๐‘… ) โ€˜ ( ๐‘ฆ โ€˜ ๐‘ฅ ) ) , if ( ( ๐‘ฅ + 1 ) < ๐‘› , ( 0g โ€˜ ( ๐‘ Mat ( Poly1 โ€˜ ๐‘… ) ) ) , ( ( ( ๐‘ matToPolyMat ๐‘… ) โ€˜ ( ๐‘ฆ โ€˜ ( ๐‘› โˆ’ 1 ) ) ) ( -g โ€˜ ( ๐‘ Mat ( Poly1 โ€˜ ๐‘… ) ) ) ( ( ( ๐‘ matToPolyMat ๐‘… ) โ€˜ ๐‘€ ) ( .r โ€˜ ( ๐‘ Mat ( Poly1 โ€˜ ๐‘… ) ) ) ( ( ๐‘ matToPolyMat ๐‘… ) โ€˜ ( ๐‘ฆ โ€˜ ๐‘› ) ) ) ) ) ) ) )
29 eqid โŠข ( ๐‘ cPolyMatToMat ๐‘… ) = ( ๐‘ cPolyMatToMat ๐‘… )
30 1 2 3 8 6 7 4 5 9 10 11 12 13 14 15 16 28 29 cayleyhamilton0 โŠข ( ( ๐‘ โˆˆ Fin โˆง ๐‘… โˆˆ CRing โˆง ๐‘€ โˆˆ ๐ต ) โ†’ ( ๐ด ฮฃg ( ๐‘› โˆˆ โ„•0 โ†ฆ ( ( ๐พ โ€˜ ๐‘› ) โˆ— ( ๐‘› โ†‘ ๐‘€ ) ) ) ) = 0 )