Cayley–Hamilton theorem

From Wikipedia, the free encyclopedia
(Redirected from Cayley-Hamilton theorem)
Jump to navigation Jump to search

Template:Short description

File:Arthur Cayley.jpg
Arthur Cayley, F.R.S. (1821–1895) is widely regarded as Britain's leading pure mathematician of the 19th century. Cayley in 1848 went to Dublin to attend lectures on quaternions by Hamilton, their discoverer. Later Cayley impressed him by being the second to publish work on them.[1] Cayley stated the theorem for matrices of dimension 3 or less, and published a proof for the two-dimensional case.
File:William Rowan Hamilton portrait oval combined.png
William Rowan Hamilton (1805–1865), Irish physicist, astronomer, and mathematician, first foreign member of the American National Academy of Sciences. While maintaining an opposing position about how geometry should be studied, Hamilton always remained on the best terms with Cayley.[1]

Hamilton proved that for a linear function of quaternions there exists a certain equation, depending on the linear function, that is satisfied by the linear function itself.[2][3][4]

In linear algebra, the Cayley–Hamilton theorem (named after the mathematicians Arthur Cayley and William Rowan Hamilton) states that every square matrix over a commutative ring (such as the real or complex numbers or the integers) satisfies its own characteristic equation.

The characteristic polynomial of an n×n matrix Template:Mvar is defined as[5] pA(λ)=det(λInA), where detScript error: No such module "Check for unknown parameters". is the determinant operation, Template:Mvar is a variable scalar element of the base ring, and InScript error: No such module "Check for unknown parameters". is the n×n identity matrix. Since each entry of the matrix (λInA) is either constant or linear in Template:Mvar, the determinant of (λInA) is a degree-Template:Mvar monic polynomial in Template:Mvar, so it can be written as pA(λ)=λn+cn1λn1++c1λ+c0. By replacing the scalar variable Template:Mvar with the matrix Template:Mvar, one can define an analogous matrix polynomial expression, pA(A)=An+cn1An1++c1A+c0In. (Here, A is the given matrix—not a variable, unlike λ—so pA(A) is a constant rather than a function.) The Cayley–Hamilton theorem states that this polynomial expression is equal to the zero matrix, which is to say that pA(A)=0; that is, the characteristic polynomial pA is an annihilating polynomial for A.

One use for the Cayley–Hamilton theorem is that it allows Template:MvarTemplate:Mvar to be expressed as a linear combination of the lower matrix powers of Template:Mvar: An=cn1An1c1Ac0In. When the ring is a field, the Cayley–Hamilton theorem is equivalent to the statement that the minimal polynomial of a square matrix divides its characteristic polynomial.

A special case of the theorem was first proved by Hamilton in 1853[6] in terms of inverses of linear functions of quaternions.[2][3][4] This corresponds to the special case of certain 4×4 real or 2×2 complex matrices. Cayley in 1858 stated the result for 3×3 and smaller matrices, but only published a proof for the 2×2 case.[7][8] As for n×n matrices, Cayley stated “..., I have not thought it necessary to undertake the labor of a formal proof of the theorem in the general case of a matrix of any degree”. The general case was first proved by Ferdinand Frobenius in 1878.[9]

Examples

1 × 1 matrices

For a 1×1 matrix A = (a)Script error: No such module "Check for unknown parameters"., the characteristic polynomial is given by p(λ) = λaScript error: No such module "Check for unknown parameters"., and so p(A) = (a) − a(1) = 0Script error: No such module "Check for unknown parameters". is trivial.

2 × 2 matrices

As a concrete example, let A=(1234). Its characteristic polynomial is given by p(λ)=det(λI2A)=det(λ123λ4)=(λ1)(λ4)(2)(3)=λ25λ2.

The Cayley–Hamilton theorem claims that, if we define p(X)=X25X2I2, then p(A)=A25A2I2=(0000). We can verify by computation that indeed, A25A2I2=(7101522)(5101520)(2002)=(0000).

For a generic 2×2 matrix, A=(abcd),

the characteristic polynomial is given by p(λ) = λ2 − (a + d)λ + (adbc)Script error: No such module "Check for unknown parameters"., so the Cayley–Hamilton theorem states that p(A)=A2(a+d)A+(adbc)I2=(0000); which is indeed always the case, evident by working out the entries of A2Script error: No such module "Check for unknown parameters"..

Template:Math proof

Applications

Determinant and inverse matrix

Script error: No such module "Labelled list hatnote". For a general n×n invertible matrix Template:Mvar, i.e., one with nonzero determinant, Template:Mvar−1 can thus be written as an (n1) order polynomial expression in Template:Mvar: As indicated, the Cayley–Hamilton theorem amounts to the identity Template:Equation box 1

The coefficients ciScript error: No such module "Check for unknown parameters". are given by the elementary symmetric polynomials of the eigenvalues of Template:Mvar. Using Newton identities, the elementary symmetric polynomials can in turn be expressed in terms of power sum symmetric polynomials of the eigenvalues: sk=i=1nλik=tr(Ak), where tr(Ak)Script error: No such module "Check for unknown parameters". is the trace of the matrix Template:Mvar. Thus, we can express ciScript error: No such module "Check for unknown parameters". in terms of the trace of powers of Template:Mvar.

In general, the formula for the coefficients ciScript error: No such module "Check for unknown parameters". is given in terms of complete exponential Bell polynomials as[nb 1] cnk=(1)kk!Bk(s1,1!s2,2!s3,,(1)k1(k1)!sk).

In particular, the determinant of AScript error: No such module "Check for unknown parameters". equals (−1)nc0Script error: No such module "Check for unknown parameters".. Thus, the determinant can be written as the trace identity: det(A)=1n!Bn(s1,1!s2,2!s3,,(1)n1(n1)!sn).

Likewise, the characteristic polynomial can be written as (1)ndet(A)In=A(An1+cn1An2++c1In), and, by multiplying both sides by A−1Script error: No such module "Check for unknown parameters". (note −(−1)n = (−1)n−1Script error: No such module "Check for unknown parameters".), one is led to an expression for the inverse of Template:Mvar as a trace identity, A1=(1)n1detA(An1+cn1An2++c1In),=1detAk=0n1(1)n+k1Ank1k!Bk(s1,1!s2,2!s3,,(1)k1(k1)!sk).

Another method for obtaining these coefficients ckScript error: No such module "Check for unknown parameters". for a general n×n matrix, provided no root be zero, relies on the following alternative expression for the determinant, p(λ)=det(λInA)=λnexp(tr(log(InA/λ))). Hence, by virtue of the Mercator series, p(λ)=λnexp(trm=1(Aλ)mm), where the exponential only needs be expanded to order λnScript error: No such module "Check for unknown parameters"., since p(λ)Script error: No such module "Check for unknown parameters". is of order nScript error: No such module "Check for unknown parameters"., the net negative powers of λScript error: No such module "Check for unknown parameters". automatically vanishing by the C–H theorem. (Again, this requires a ring containing the rational numbers.) Differentiation of this expression with respect to Template:Mvar allows one to express the coefficients of the characteristic polynomial for general Template:Mvar as determinants of m × mScript error: No such module "Check for unknown parameters". matrices,[nb 2] cnm=(1)mm!|trAm10trA2trAm2trAm1trAm21trAmtrAm1trA|.

Examples

For instance, the first few Bell polynomials are B0Script error: No such module "Check for unknown parameters". = 1, B1(x1) = x1Script error: No such module "Check for unknown parameters"., B2(x1, x2) = xScript error: No such module "Su". + x2Script error: No such module "Check for unknown parameters"., and B3(x1, x2, x3) = xScript error: No such module "Su". + 3 x1x2 + x3Script error: No such module "Check for unknown parameters"..

Using these to specify the coefficients ciScript error: No such module "Check for unknown parameters". of the characteristic polynomial of a 2×2 matrix yields

c2=B0=1,c1=11!B1(s1)=s1=tr(A),c0=12!B2(s1,1!s2)=12(s12s2)=12((tr(A))2tr(A2)).

The coefficient c0Script error: No such module "Check for unknown parameters". gives the determinant of the 2×2 matrix, c1Script error: No such module "Check for unknown parameters". minus its trace, while its inverse is given by A1=1detA(A+c1I2)=2(Atr(A)I2)(tr(A))2tr(A2).

It is apparent from the general formula for cnk, expressed in terms of Bell polynomials, that the expressions tr(A)and12(tr(A)2tr(A2))

always give the coefficients cn−1Script error: No such module "Check for unknown parameters". of λn−1Script error: No such module "Check for unknown parameters". and cn−2Script error: No such module "Check for unknown parameters". of λn−2Script error: No such module "Check for unknown parameters". in the characteristic polynomial of any n×n matrix, respectively. So, for a 3×3 matrix Template:Mvar, the statement of the Cayley–Hamilton theorem can also be written as A3(trA)A2+12((trA)2tr(A2))Adet(A)I3=O, where the right-hand side designates a 3×3 matrix with all entries reduced to zero. Likewise, this determinant in the n = 3Script error: No such module "Check for unknown parameters". case, is now det(A)=13!B3(s1,1!s2,2!s3)=16(s13+3s1(s2)+2s3)=16[(trA)33tr(A2)(trA)+2tr(A3)]. This expression gives the negative of coefficient cn−3Script error: No such module "Check for unknown parameters". of λn−3Script error: No such module "Check for unknown parameters". in the general case, as seen below.

Similarly, one can write for a 4×4 matrix Template:Mvar, A4(trA)A3+12[(trA)2tr(A2)]A216[(trA)33tr(A2)(trA)+2tr(A3)]A+det(A)I4=O,

where, now, the determinant is cn−4Script error: No such module "Check for unknown parameters".,

124[(trA)46tr(A2)(trA)2+3(tr(A2))2+8tr(A3)tr(A)6tr(A4)],

and so on for larger matrices. The increasingly complex expressions for the coefficients ckScript error: No such module "Check for unknown parameters". is deducible from Newton's identities or the Faddeev–LeVerrier algorithm.

n-th power of matrix

The Cayley–Hamilton theorem always provides a relationship between the powers of Template:Mvar (though not always the simplest one), which allows one to simplify expressions involving such powers, and evaluate them without having to compute the power Template:Mvarn or any higher powers of Template:Mvar.

As an example, for A=(1234) the theorem gives A2=5A+2I2.

Then, to calculate A4Script error: No such module "Check for unknown parameters"., observe A3=(5A+2I2)A=5A2+2A=5(5A+2I2)+2A=27A+10I2,A4=A3A=(27A+10I2)A=27A2+10A=27(5A+2I2)+10A=145A+54I2. Likewise, A1=12(A5I2).A2=A1A1=14(A210A+25I2)=14((5A+2I2)10A+25I2)=14(5A+27I2).

Notice that we have been able to write the matrix power as the sum of two terms. In fact, matrix power of any order kScript error: No such module "Check for unknown parameters". can be written as a matrix polynomial of degree at most n − 1Script error: No such module "Check for unknown parameters"., where nScript error: No such module "Check for unknown parameters". is the size of a square matrix. This is an instance where Cayley–Hamilton theorem can be used to express a matrix function, which we will discuss below systematically.

Matrix functions

Given an analytic function f(x)=k=0akxk and the characteristic polynomial p(x)Script error: No such module "Check for unknown parameters". of degree nScript error: No such module "Check for unknown parameters". of an n × nScript error: No such module "Check for unknown parameters". matrix Template:Mvar, the function can be expressed using long division as f(x)=q(x)p(x)+r(x), where q(x)Script error: No such module "Check for unknown parameters". is some quotient polynomial and r(x)Script error: No such module "Check for unknown parameters". is a remainder polynomial such that 0 ≤ deg r(x) < nScript error: No such module "Check for unknown parameters"..

By the Cayley–Hamilton theorem, replacing Template:Mvar by the matrix Template:Mvar gives p(A) = 0Script error: No such module "Check for unknown parameters"., so one has f(A)=r(A).

Thus, the analytic function of the matrix Template:Mvar can be expressed as a matrix polynomial of degree less than Template:Mvar.

Let the remainder polynomial be r(x)=c0+c1x++cn1xn1. Since p(λ) = 0Script error: No such module "Check for unknown parameters"., evaluating the function f(x)Script error: No such module "Check for unknown parameters". at the nScript error: No such module "Check for unknown parameters". eigenvalues of AScript error: No such module "Check for unknown parameters". yields f(λi)=r(λi)=c0+c1λi++cn1λin1,for i=1,2,...,n. This amounts to a system of nScript error: No such module "Check for unknown parameters". linear equations, which can be solved to determine the coefficients ciScript error: No such module "Check for unknown parameters".. Thus, one has f(A)=k=0n1ckAk.

When the eigenvalues are repeated, that is λi = λjScript error: No such module "Check for unknown parameters". for some i ≠ jScript error: No such module "Check for unknown parameters"., two or more equations are identical; and hence the linear equations cannot be solved uniquely. For such cases, for an eigenvalue λScript error: No such module "Check for unknown parameters". with multiplicity mScript error: No such module "Check for unknown parameters"., the first m − 1Script error: No such module "Check for unknown parameters". derivatives of p(x)Script error: No such module "Check for unknown parameters". vanish at the eigenvalue. This leads to the extra m − 1Script error: No such module "Check for unknown parameters". linearly independent solutions dkf(x)dxk|x=λ=dkr(x)dxk|x=λfor k=1,2,,m1, which, combined with others, yield the required nScript error: No such module "Check for unknown parameters". equations to solve for ciScript error: No such module "Check for unknown parameters"..

Finding a polynomial that passes through the points (λi,  f (λi))Script error: No such module "Check for unknown parameters". is essentially an interpolation problem, and can be solved using Lagrange or Newton interpolation techniques, leading to Sylvester's formula.

For example, suppose the task is to find the polynomial representation of f(A)=eAtwhereA=(1203).

The characteristic polynomial is p(x) = (x − 1)(x − 3) = x2 − 4x + 3Script error: No such module "Check for unknown parameters"., and the eigenvalues are λ = 1, 3Script error: No such module "Check for unknown parameters".. Let r(x) = c0 + c1xScript error: No such module "Check for unknown parameters".. Evaluating f(λ) = r(λ)Script error: No such module "Check for unknown parameters". at the eigenvalues, one obtains two linear equations, et = c0 + c1Script error: No such module "Check for unknown parameters". and e3t = c0 + 3c1Script error: No such module "Check for unknown parameters"..

Solving the equations yields c0 = (3ete3t)/2Script error: No such module "Check for unknown parameters". and c1 = (e3tet)/2Script error: No such module "Check for unknown parameters".. Thus, it follows that eAt=c0I2+c1A=(c0+c12c10c0+3c1)=(ete3tet0e3t).

If, instead, the function were f(A) = sin AtScript error: No such module "Check for unknown parameters"., then the coefficients would have been c0 = (3 sin t − sin 3t)/2Script error: No such module "Check for unknown parameters". and c1 = (sin 3t − sin t)/2Script error: No such module "Check for unknown parameters".; hence sin(At)=c0I2+c1A=(sintsin3tsint0sin3t).

As a further example, when considering f(A)=eAtwhereA=(0110), then the characteristic polynomial is p(x) = x2 + 1Script error: No such module "Check for unknown parameters"., and the eigenvalues are λ = ±iScript error: No such module "Check for unknown parameters"..

As before, evaluating the function at the eigenvalues gives us the linear equations eit = c0 + i c1Script error: No such module "Check for unknown parameters". and eit = c0ic1Script error: No such module "Check for unknown parameters".; the solution of which gives, c0 = (eit + eit)/2 = cos tScript error: No such module "Check for unknown parameters". and c1 = (eiteit)/2i = sin tScript error: No such module "Check for unknown parameters".. Thus, for this case, eAt=(cost)I2+(sint)A=(costsintsintcost), which is a rotation matrix.

Standard examples of such usage is the exponential map from the Lie algebra of a matrix Lie group into the group. It is given by a matrix exponential, exp:𝔤G;tXetX=n=0tnXnn!=I+tX+t2X22+,t,X𝔤. Such expressions have long been known for SU(2)Script error: No such module "Check for unknown parameters"., ei(θ/2)(𝐧^σ)=I2cosθ2+i(𝐧^σ)sinθ2, where the Template:Mvar are the Pauli matrices and for SO(3)Script error: No such module "Check for unknown parameters"., eiθ(𝐧^𝐉)=I3+i(𝐧^𝐉)sinθ+(𝐧^𝐉)2(cosθ1), which is Rodrigues' rotation formula. For the notation, see 3D rotation group#A note on Lie algebras.

More recently, expressions have appeared for other groups, like the Lorentz group SO(3, 1)Script error: No such module "Check for unknown parameters".,[10] O(4, 2)Script error: No such module "Check for unknown parameters".[11] and SU(2, 2)Script error: No such module "Check for unknown parameters".,[12] as well as GL(n, R)Script error: No such module "Check for unknown parameters"..[13] The group O(4, 2)Script error: No such module "Check for unknown parameters". is the conformal group of spacetime, SU(2, 2)Script error: No such module "Check for unknown parameters". its simply connected cover (to be precise, the simply connected cover of the connected component SO+(4, 2)Script error: No such module "Check for unknown parameters". of O(4, 2)Script error: No such module "Check for unknown parameters".). The expressions obtained apply to the standard representation of these groups. They require knowledge of (some of) the eigenvalues of the matrix to exponentiate. For SU(2)Script error: No such module "Check for unknown parameters". (and hence for SO(3)Script error: No such module "Check for unknown parameters".), closed expressions have been obtained for all irreducible representations, i.e. of any spin.[14]

File:GeorgFrobenius.jpg
Ferdinand Georg Frobenius (1849–1917), German mathematician. His main interests were elliptic functions, differential equations, and later group theory.
In 1878 he gave the first full proof of the Cayley–Hamilton theorem.[9]

Algebraic number theory

The Cayley–Hamilton theorem is an effective tool for computing the minimal polynomial of algebraic integers. For example, given a finite extension [α1,,αk] of and an algebraic integer α[α1,,αk] which is a non-zero linear combination of the α1n1αknk we can compute the minimal polynomial of α by finding a matrix representing the -linear transformation α:[α1,,αk][α1,,αk] If we call this transformation matrix A, then we can find the minimal polynomial by applying the Cayley–Hamilton theorem to A.[15]

Proofs

The Cayley–Hamilton theorem is an immediate consequence of the existence of the Jordan normal form for matrices over algebraically closed fields, see Template:Section link. In this section, direct proofs are presented.

As the examples above show, obtaining the statement of the Cayley–Hamilton theorem for an n×n matrix

A=(aij)i,j=1n requires two steps: first the coefficients ciScript error: No such module "Check for unknown parameters". of the characteristic polynomial are determined by development as a polynomial in tScript error: No such module "Check for unknown parameters". of the determinant

p(t)=det(tInA)=|ta1,1a1,2a1,na2,1ta2,2a2,nan,1an,2tan,n|=tn+cn1tn1++c1t+c0,

and then these coefficients are used in a linear combination of powers of AScript error: No such module "Check for unknown parameters". that is equated to the n×n zero matrix: An+cn1An1++c1A+c0In=(0000).

The left-hand side can be worked out to an n×n matrix whose entries are (enormous) polynomial expressions in the set of entries ai,jScript error: No such module "Check for unknown parameters". of AScript error: No such module "Check for unknown parameters"., so the Cayley–Hamilton theorem states that each of these n2Script error: No such module "Check for unknown parameters". expressions equals 0Script error: No such module "Check for unknown parameters".. For any fixed value of nScript error: No such module "Check for unknown parameters"., these identities can be obtained by tedious but straightforward algebraic manipulations. None of these computations, however, can show why the Cayley–Hamilton theorem should be valid for matrices of all possible sizes nScript error: No such module "Check for unknown parameters"., so a uniform proof for all nScript error: No such module "Check for unknown parameters". is needed.

Preliminaries

If a vector vScript error: No such module "Check for unknown parameters". of size nScript error: No such module "Check for unknown parameters". is an eigenvector of AScript error: No such module "Check for unknown parameters". with eigenvalue λScript error: No such module "Check for unknown parameters"., in other words if Av = λvScript error: No such module "Check for unknown parameters"., then p(A)v=Anv+cn1An1v++c1Av+c0Inv=λnv+cn1λn1v++c1λv+c0v=p(λ)v, which is the zero vector since p(λ) = 0Script error: No such module "Check for unknown parameters". (the eigenvalues of AScript error: No such module "Check for unknown parameters". are precisely the roots of p(t)Script error: No such module "Check for unknown parameters".). This holds for all possible eigenvalues λScript error: No such module "Check for unknown parameters"., so the two matrices equated by the theorem certainly give the same (null) result when applied to any eigenvector. Now if AScript error: No such module "Check for unknown parameters". admits a basis of eigenvectors, in other words if AScript error: No such module "Check for unknown parameters". is diagonalizable, then the Cayley–Hamilton theorem must hold for AScript error: No such module "Check for unknown parameters"., since two matrices that give the same values when applied to each element of a basis must be equal. A=XDX1,D=diag(λi),i=1,2,...,n pA(λ)=|λIA|=i=1n(λλi)k=0nckλk pA(A)=ckAk=XpA(D)X1=XCX1 Cii=k=0nckλik=j=1n(λiλj)=0,Ci,ji=0 pA(A)=XCX1=O.

Consider now the function e:MnMn which maps n×n matrices to n×n matrices given by the formula e(A)=pA(A), i.e. which takes a matrix A and plugs it into its own characteristic polynomial. Not all matrices are diagonalizable, but for matrices with complex coefficients many of them are: the set D of diagonalizable complex square matrices of a given size is dense in the set of all such square matrices[16] (for a matrix to be diagonalizable it suffices for instance that its characteristic polynomial not have any multiple roots). Now viewed as a function e:n2n2(since matrices have n2 entries) we see that this function is continuous. This is true because the entries of the image of a matrix are given by polynomials in the entries of the matrix. Since e(D)={(0000)}

and since the set D is dense, by continuity this function must map the entire set of n×n matrices to the zero matrix. Therefore, the Cayley–Hamilton theorem is true for complex numbers, and must therefore also hold for - or -valued matrices.

While this provides a valid proof, the argument is not very satisfactory, since the identities represented by the theorem do not in any way depend on the nature of the matrix (diagonalizable or not), nor on the kind of entries allowed (for matrices with real entries the diagonalizable ones do not form a dense set, and it seems strange one would have to consider complex matrices to see that the Cayley–Hamilton theorem holds for them). We shall therefore now consider only arguments that prove the theorem directly for any matrix using algebraic manipulations only; these also have the benefit of working for matrices with entries in any commutative ring.

There is a great variety of such proofs of the Cayley–Hamilton theorem, of which several will be given here. They vary in the amount of abstract algebraic notions required to understand the proof. The simplest proofs use just those notions needed to formulate the theorem (matrices, polynomials with numeric entries, determinants), but involve technical computations that render somewhat mysterious the fact that they lead precisely to the correct conclusion. It is possible to avoid such details, but at the price of involving more subtle algebraic notions: polynomials with coefficients in a non-commutative ring, or matrices with unusual kinds of entries.

Adjugate matrices

All proofs below use the notion of the adjugate matrix adj(M)Script error: No such module "Check for unknown parameters". of an n×n matrix MScript error: No such module "Check for unknown parameters"., the transpose of its cofactor matrix. This is a matrix whose coefficients are given by polynomial expressions in the coefficients of MScript error: No such module "Check for unknown parameters". (in fact, by certain (n1)×(n1) determinants), in such a way that the following fundamental relations hold, adj(M)M=det(M)In=Madj(M). These relations are a direct consequence of the basic properties of determinants: evaluation of the (i, j)Script error: No such module "Check for unknown parameters". entry of the matrix product on the left gives the expansion by column jScript error: No such module "Check for unknown parameters". of the determinant of the matrix obtained from MScript error: No such module "Check for unknown parameters". by replacing column iScript error: No such module "Check for unknown parameters". by a copy of column jScript error: No such module "Check for unknown parameters"., which is det(M)Script error: No such module "Check for unknown parameters". if i = jScript error: No such module "Check for unknown parameters". and zero otherwise; the matrix product on the right is similar, but for expansions by rows.

Being a consequence of just algebraic expression manipulation, these relations are valid for matrices with entries in any commutative ring (commutativity must be assumed for determinants to be defined in the first place). This is important to note here, because these relations will be applied below for matrices with non-numeric entries such as polynomials.

A direct algebraic proof

This proof uses just the kind of objects needed to formulate the Cayley–Hamilton theorem: matrices with polynomials as entries. The matrix tInA whose determinant is the characteristic polynomial of Template:Mvar is such a matrix, and since polynomials form a commutative ring, it has an adjugate B=adj(tInA). Then, according to the right-hand fundamental relation of the adjugate, one has (tInA)B=det(tInA)In=p(t)In.

Since BScript error: No such module "Check for unknown parameters". is also a matrix with polynomials in tScript error: No such module "Check for unknown parameters". as entries, one can, for each iScript error: No such module "Check for unknown parameters"., collect the coefficients of ti in each entry to form a matrix BiScript error: No such module "Check for unknown parameters". of numbers, such that one has B=i=0n1tiBi. (The way the entries of BScript error: No such module "Check for unknown parameters". are defined makes clear that no powers higher than tTemplate:I supScript error: No such module "Check for unknown parameters". occur). While this looks like a polynomial with matrices as coefficients, we shall not consider such a notion; it is just a way to write a matrix with polynomial entries as a linear combination of Template:Mvar constant matrices, and the coefficient ti has been written to the left of the matrix to stress this point of view.

Now, one can expand the matrix product in our equation: p(t)In=(tInA)B=(tInA)i=0n1tiBi=i=0n1tIntiBii=0n1AtiBi=i=0n1ti+1Bii=0n1tiABi=tnBn1+i=1n1ti(Bi1ABi)AB0.

Writing p(t)In=tnIn+tn1cn1In++tc1In+c0In, one obtains an equality of two matrices with polynomial entries, written as linear combinations of constant matrices with powers of tScript error: No such module "Check for unknown parameters". as coefficients.

Such an equality can hold only if in any matrix position the entry that is multiplied by a given power ti is the same on both sides; it follows that the constant matrices with coefficient ti in both expressions must be equal. Writing these equations then for iScript error: No such module "Check for unknown parameters". from nScript error: No such module "Check for unknown parameters". down to 0, one finds Bn1=In,Bi1ABi=ciInfor 1in1,AB0=c0In.

Finally, multiply the equation of the coefficients of ti from the left by Ai, and sum up:

AnBn1+i=1n1(AiBi1Ai+1Bi)AB0=An+cn1An1++c1A+c0In.

The left-hand sides form a telescoping sum and cancel completely; the right-hand sides add up to p(A): 0=p(A). This completes the proof.

A proof using polynomials with matrix coefficients

This proof is similar to the first one, but tries to give meaning to the notion of polynomial with matrix coefficients that was suggested by the expressions occurring in that proof. This requires considerable care, since it is somewhat unusual to consider polynomials with coefficients in a non-commutative ring, and not all reasoning that is valid for commutative polynomials can be applied in this setting.

Notably, while arithmetic of polynomials over a commutative ring models the arithmetic of polynomial functions, this is not the case over a non-commutative ring (in fact there is no obvious notion of polynomial function in this case that is closed under multiplication). So when considering polynomials in Template:Mvar with matrix coefficients, the variable Template:Mvar must not be thought of as an "unknown", but as a formal symbol that is to be manipulated according to given rules; in particular one cannot just set Template:Mvar to a specific value. (f+g)(x)=i(fi+gi)xi=ifixi+igixi=f(x)+g(x).

Let M(n,R) be the ring of n × nScript error: No such module "Check for unknown parameters". matrices with entries in some ring R (such as the real or complex numbers) that has Template:Mvar as an element. Matrices with as coefficients polynomials in Template:Mvar, such as tInA or its adjugate B in the first proof, are elements of M(n,R[t]).

By collecting like powers of Template:Mvar, such matrices can be written as "polynomials" in Template:Mvar with constant matrices as coefficients; write M(n,R)[t] for the set of such polynomials. Since this set is in bijection with M(n,R[t]), one defines arithmetic operations on it correspondingly, in particular multiplication is given by (iMiti)(jNjtj)=i,j(MiNj)ti+j, respecting the order of the coefficient matrices from the two operands; obviously this gives a non-commutative multiplication.

Thus, the identity (tInA)B=p(t)In. from the first proof can be viewed as one involving a multiplication of elements in M(n,R)[t].

At this point, it is tempting to simply set Template:Mvar equal to the matrix Template:Mvar, which makes the first factor on the left equal to the zero matrix, and the right hand side equal to p(A)Script error: No such module "Check for unknown parameters".; however, this is not an allowed operation when coefficients do not commute. It is possible to define a "right-evaluation map" evA : M[t ] → MScript error: No such module "Check for unknown parameters"., which replaces each tiScript error: No such module "Check for unknown parameters". by the matrix power AiScript error: No such module "Check for unknown parameters". of Template:Mvar, where one stipulates that the power is always to be multiplied on the right to the corresponding coefficient. But this map is not a ring homomorphism: the right-evaluation of a product differs in general from the product of the right-evaluations. This is so because multiplication of polynomials with matrix coefficients does not model multiplication of expressions containing unknowns: a product MtiNtj=(MN)ti+j is defined assuming that Template:Mvar commutes with Template:Mvar, but this may fail if Template:Mvar is replaced by the matrix Template:Mvar.

One can work around this difficulty in the particular situation at hand, since the above right-evaluation map does become a ring homomorphism if the matrix Template:Mvar is in the center of the ring of coefficients, so that it commutes with all the coefficients of the polynomials (the argument proving this is straightforward, exactly because commuting Template:Mvar with coefficients is now justified after evaluation).

Now, Template:Mvar is not always in the center of MScript error: No such module "Check for unknown parameters"., but we may replace MScript error: No such module "Check for unknown parameters". with a smaller ring provided it contains all the coefficients of the polynomials in question: In, Template:Mvar, and the coefficients Bi of the polynomial BScript error: No such module "Check for unknown parameters".. The obvious choice for such a subring is the centralizer ZScript error: No such module "Check for unknown parameters". of Template:Mvar, the subring of all matrices that commute with Template:Mvar; by definition Template:Mvar is in the center of ZScript error: No such module "Check for unknown parameters"..

This centralizer obviously contains In, and Template:Mvar, but one has to show that it contains the matrices Bi. To do this, one combines the two fundamental relations for adjugates, writing out the adjugate BScript error: No such module "Check for unknown parameters". as a polynomial: (i=0mBiti)(tInA)=(tInA)i=0mBitii=0mBiti+1i=0mBiAti=i=0mBiti+1i=0mABitii=0mBiAti=i=0mABiti.

Equating the coefficients shows that for each iScript error: No such module "Check for unknown parameters"., we have ABi = BiAScript error: No such module "Check for unknown parameters". as desired. Having found the proper setting in which evAScript error: No such module "Check for unknown parameters". is indeed a homomorphism of rings, one can complete the proof as suggested above: evA(p(t)In)=evA((tInA)B)p(A)=evA(tInA)evA(B)p(A)=(AInA)evA(B)=OevA(B)=O. This completes the proof.

A synthesis of the first two proofs

In the first proof, one was able to determine the coefficients BiScript error: No such module "Check for unknown parameters". of BScript error: No such module "Check for unknown parameters". based on the right-hand fundamental relation for the adjugate only. In fact the first nScript error: No such module "Check for unknown parameters". equations derived can be interpreted as determining the quotient BScript error: No such module "Check for unknown parameters". of the Euclidean division of the polynomial p(t)InScript error: No such module "Check for unknown parameters". on the left by the monic polynomial IntAScript error: No such module "Check for unknown parameters"., while the final equation expresses the fact that the remainder is zero. This division is performed in the ring of polynomials with matrix coefficients. Indeed, even over a non-commutative ring, Euclidean division by a monic polynomial PScript error: No such module "Check for unknown parameters". is defined, and always produces a unique quotient and remainder with the same degree condition as in the commutative case, provided it is specified at which side one wishes PScript error: No such module "Check for unknown parameters". to be a factor (here that is to the left).

To see that quotient and remainder are unique (which is the important part of the statement here), it suffices to write PQ+r=PQ+r as P(QQ)=rr and observe that since PScript error: No such module "Check for unknown parameters". is monic, P(QQ′)Script error: No such module "Check for unknown parameters". cannot have a degree less than that of PScript error: No such module "Check for unknown parameters"., unless Q = QScript error: No such module "Check for unknown parameters"..

But the dividend p(t)InScript error: No such module "Check for unknown parameters". and divisor IntAScript error: No such module "Check for unknown parameters". used here both lie in the subring (R[A])[t]Script error: No such module "Check for unknown parameters"., where R[A]Script error: No such module "Check for unknown parameters". is the subring of the matrix ring M(n, R)Script error: No such module "Check for unknown parameters". generated by AScript error: No such module "Check for unknown parameters".: the RScript error: No such module "Check for unknown parameters".-linear span of all powers of AScript error: No such module "Check for unknown parameters".. Therefore, the Euclidean division can in fact be performed within that commutative polynomial ring, and of course it then gives the same quotient BScript error: No such module "Check for unknown parameters". and remainder 0 as in the larger ring; in particular this shows that BScript error: No such module "Check for unknown parameters". in fact lies in (R[A])[t]Script error: No such module "Check for unknown parameters"..

But, in this commutative setting, it is valid to set tScript error: No such module "Check for unknown parameters". to AScript error: No such module "Check for unknown parameters". in the equation

p(t)In=(tInA)B;

in other words, to apply the evaluation map

evA:(R[A])[t]R[A]

which is a ring homomorphism, giving

p(A)=0evA(B)=0

just like in the second proof, as desired.

In addition to proving the theorem, the above argument tells us that the coefficients BiScript error: No such module "Check for unknown parameters". of BScript error: No such module "Check for unknown parameters". are polynomials in AScript error: No such module "Check for unknown parameters"., while from the second proof we only knew that they lie in the centralizer ZScript error: No such module "Check for unknown parameters". of AScript error: No such module "Check for unknown parameters".; in general ZScript error: No such module "Check for unknown parameters". is a larger subring than R[A]Script error: No such module "Check for unknown parameters"., and not necessarily commutative. In particular the constant term B0 = adj(−A)Script error: No such module "Check for unknown parameters". lies in R[A]Script error: No such module "Check for unknown parameters".. Since AScript error: No such module "Check for unknown parameters". is an arbitrary square matrix, this proves that adj(A)Script error: No such module "Check for unknown parameters". can always be expressed as a polynomial in AScript error: No such module "Check for unknown parameters". (with coefficients that depend on A)Script error: No such module "Check for unknown parameters"..

In fact, the equations found in the first proof allow successively expressing Bn1,,B1,B0 as polynomials in AScript error: No such module "Check for unknown parameters"., which leads to the identity Template:Equation box 1 valid for all n × nScript error: No such module "Check for unknown parameters". matrices, where p(t)=tn+cn1tn1++c1t+c0 is the characteristic polynomial of Template:Mvar.

Note that this identity also implies the statement of the Cayley–Hamilton theorem: one may move adj(−A)Script error: No such module "Check for unknown parameters". to the right hand side, multiply the resulting equation (on the left or on the right) by AScript error: No such module "Check for unknown parameters"., and use the fact that Aadj(A)=adj(A)(A)=det(A)In=c0In.

Script error: No such module "Labelled list hatnote".

A proof using matrices of endomorphisms

As was mentioned above, the matrix p(A) in statement of the theorem is obtained by first evaluating the determinant and then substituting the matrix A for t; doing that substitution into the matrix tInA before evaluating the determinant is not meaningful. Nevertheless, it is possible to give an interpretation where p(A)Script error: No such module "Check for unknown parameters". is obtained directly as the value of a certain determinant, but this requires a more complicated setting, one of matrices over a ring in which one can interpret both the entries Ai,j of AScript error: No such module "Check for unknown parameters"., and all of AScript error: No such module "Check for unknown parameters". itself. One could take for this the ring M(n, R)Script error: No such module "Check for unknown parameters". of n × nScript error: No such module "Check for unknown parameters". matrices over RScript error: No such module "Check for unknown parameters"., where the entry Ai,j is realised as Ai,jIn, and AScript error: No such module "Check for unknown parameters". as itself. But considering matrices with matrices as entries might cause confusion with block matrices, which is not intended, as that gives the wrong notion of determinant (recall that the determinant of a matrix is defined as a sum of products of its entries, and in the case of a block matrix this is generally not the same as the corresponding sum of products of its blocks!). It is clearer to distinguish AScript error: No such module "Check for unknown parameters". from the endomorphism φScript error: No such module "Check for unknown parameters". of an Template:Mvar-dimensional vector space V (or free RScript error: No such module "Check for unknown parameters".-module if RScript error: No such module "Check for unknown parameters". is not a field) defined by it in a basis e1,,en, and to take matrices over the ring End(V) of all such endomorphisms. Then φ ∈ End(V)Script error: No such module "Check for unknown parameters". is a possible matrix entry, while Template:Mvar designates the element of M(n, End(V))Script error: No such module "Check for unknown parameters". whose i, jScript error: No such module "Check for unknown parameters". entry is endomorphism of scalar multiplication by Ai,j; similarly In will be interpreted as element of M(n, End(V))Script error: No such module "Check for unknown parameters".. However, since End(V)Script error: No such module "Check for unknown parameters". is not a commutative ring, no determinant is defined on M(n, End(V))Script error: No such module "Check for unknown parameters".; this can only be done for matrices over a commutative subring of End(V)Script error: No such module "Check for unknown parameters".. Now the entries of the matrix φInA all lie in the subring R[φ]Script error: No such module "Check for unknown parameters". generated by the identity and φScript error: No such module "Check for unknown parameters"., which is commutative. Then a determinant map M(n, R[φ]) → R[φ]Script error: No such module "Check for unknown parameters". is defined, and det(φInA) evaluates to the value p(φ)Script error: No such module "Check for unknown parameters". of the characteristic polynomial of AScript error: No such module "Check for unknown parameters". at φScript error: No such module "Check for unknown parameters". (this holds independently of the relation between AScript error: No such module "Check for unknown parameters". and φScript error: No such module "Check for unknown parameters".); the Cayley–Hamilton theorem states that p(φ)Script error: No such module "Check for unknown parameters". is the null endomorphism.

In this form, the following proof can be obtained from that of Script error: No such module "Footnotes". (which in fact is the more general statement related to the Nakayama lemma; one takes for the ideal in that proposition the whole ring RScript error: No such module "Check for unknown parameters".). The fact that AScript error: No such module "Check for unknown parameters". is the matrix of φScript error: No such module "Check for unknown parameters". in the basis e1, ..., enScript error: No such module "Check for unknown parameters". means that φ(ei)=j=1nAj,iejfor i=1,,n. One can interpret these as nScript error: No such module "Check for unknown parameters". components of one equation in VTemplate:I supScript error: No such module "Check for unknown parameters"., whose members can be written using the matrix-vector product M(n, End(V)) × VTemplate:I supVTemplate:I supScript error: No such module "Check for unknown parameters". that is defined as usual, but with individual entries ψ ∈ End(V)Script error: No such module "Check for unknown parameters". and vScript error: No such module "Check for unknown parameters". in VScript error: No such module "Check for unknown parameters". being "multiplied" by forming ψ(v); this gives: φInE=AtrE, where EVn is the element whose component iScript error: No such module "Check for unknown parameters". is eiScript error: No such module "Check for unknown parameters". (in other words it is the basis e1, ..., enScript error: No such module "Check for unknown parameters". of VScript error: No such module "Check for unknown parameters". written as a column of vectors). Writing this equation as (φInAtr)E=0Vn one recognizes the transpose of the matrix φInA considered above, and its determinant (as element of M(n, R[φ]))Script error: No such module "Check for unknown parameters". is also p(φ). To derive from this equation that p(φ) = 0 ∈ End(V)Script error: No such module "Check for unknown parameters"., one left-multiplies by the adjugate matrix of φInAtr, which is defined in the matrix ring M(n, R[φ])Script error: No such module "Check for unknown parameters"., giving 0=adj(φInAtr)((φInAtr)E)=(adj(φInAtr)(φInAtr))E=(det(φInAtr)In)E=(p(φ)In)E; the associativity of matrix-matrix and matrix-vector multiplication used in the first step is a purely formal property of those operations, independent of the nature of the entries. Now component iScript error: No such module "Check for unknown parameters". of this equation says that p(φ)(ei) = 0 ∈ VScript error: No such module "Check for unknown parameters".; thus p(φ)Script error: No such module "Check for unknown parameters". vanishes on all eiScript error: No such module "Check for unknown parameters"., and since these elements generate VScript error: No such module "Check for unknown parameters". it follows that p(φ) = 0 ∈ End(V)Script error: No such module "Check for unknown parameters"., completing the proof.

One additional fact that follows from this proof is that the matrix AScript error: No such module "Check for unknown parameters". whose characteristic polynomial is taken need not be identical to the value φScript error: No such module "Check for unknown parameters". substituted into that polynomial; it suffices that φScript error: No such module "Check for unknown parameters". be an endomorphism of VScript error: No such module "Check for unknown parameters". satisfying the initial equations

φ(ei)=jAj,iej for some sequence of elements e1, ..., enScript error: No such module "Check for unknown parameters". that generate VScript error: No such module "Check for unknown parameters". (which space might have smaller dimension than Template:Mvar, or in case the ring RScript error: No such module "Check for unknown parameters". is not a field it might not be a free module at all).

A bogus "proof": p(A) = det(AInA) = det(AA) = 0Script error: No such module "Check for unknown parameters".

One persistent elementary but incorrect argument[17] for the theorem is to "simply" take the definition p(λ)=det(λInA) and substitute Template:Mvar for Template:Mvar, obtaining p(A)=det(AInA)=det(AA)=det(𝟎)=0.

There are many ways to see why this argument is wrong. First, in the Cayley–Hamilton theorem, p(A)Script error: No such module "Check for unknown parameters". is an n × nScript error: No such module "Check for unknown parameters". matrix. However, the right hand side of the above equation is the value of a determinant, which is a scalar. So they cannot be equated unless n = 1Script error: No such module "Check for unknown parameters". (i.e. Template:Mvar is just a scalar). Second, in the expression det(λInA), the variable λ actually occurs at the diagonal entries of the matrix λInA. To illustrate, consider the characteristic polynomial in the previous example again:

det(λ123λ4).

If one substitutes the entire matrix Template:Mvar for Template:Mvar in those positions, one obtains

det((1234)123(1234)4),

in which the "matrix" expression is simply not a valid one. Note, however, that if scalar multiples of identity matrices instead of scalars are subtracted in the above, i.e. if the substitution is performed as

det((1234)I22I23I2(1234)4I2),

then the determinant is indeed zero, but the expanded matrix in question does not evaluate to AInA; nor can its determinant (a scalar) be compared to p(A) (a matrix). So the argument that p(A)=det(AInA)=0 still does not apply.

Actually, if such an argument holds, it should also hold when other multilinear forms instead of determinant is used. For instance, if we consider the permanent function and define q(λ)=perm(λInA), then by the same argument, we should be able to "prove" that q(A) = 0Script error: No such module "Check for unknown parameters".. But this statement is demonstrably wrong: in the 2-dimensional case, for instance, the permanent of a matrix is given by

perm(abcd)=ad+bc.

So, for the matrix Template:Mvar in the previous example,

q(λ)=perm(λI2A)=perm(λ123λ4)=(λ1)(λ4)+(2)(3)=λ25λ+10.

Yet one can verify that

q(A)=A25A+10I2=12I20.

One of the proofs for Cayley–Hamilton theorem above bears some similarity to the argument that p(A)=det(AInA)=0. By introducing a matrix with non-numeric coefficients, one can actually let Template:Mvar live inside a matrix entry, but then AIn is not equal to Template:Mvar, and the conclusion is reached differently.

Proofs using methods of abstract algebra

Basic properties of Hasse–Schmidt derivations on the exterior algebra A=M of some Template:Mvar-module Template:Mvar (supposed to be free and of finite rank) have been used by Script error: No such module "Footnotes". to prove the Cayley–Hamilton theorem. See also Script error: No such module "Footnotes"..

A combinatorial proof

A proof based on developing the Leibniz formula for the characteristic polynomial was given by Straubing[18] and a generalization was given using trace monoid theory of Foata and Cartier.

Abstraction and generalizations

The above proofs show that the Cayley–Hamilton theorem holds for matrices with entries in any commutative ring RScript error: No such module "Check for unknown parameters"., and that p(φ) = 0Script error: No such module "Check for unknown parameters". will hold whenever φScript error: No such module "Check for unknown parameters". is an endomorphism of an RScript error: No such module "Check for unknown parameters".-module generated by elements e1,...,enScript error: No such module "Check for unknown parameters". that satisfies

φ(ej)=aijei,j=1,,n.

This more general version of the theorem is the source of the celebrated Nakayama lemma in commutative algebra and algebraic geometry.

The Cayley-Hamilton theorem also holds for matrices over the quaternions, a noncommutative ring.[19][nb 3]

See also

Remarks

<templatestyles src="Reflist/styles.css" />

  1. See Sect. 2 of Script error: No such module "Footnotes".. An explicit expression for the coefficients ciScript error: No such module "Check for unknown parameters". is provided by Script error: No such module "Footnotes".: ci=k1,k2,,knl=1n(1)kl+1lklkl!tr(Al)kl, where the sum is taken over the sets of all integer partitions kl ≥ 0Script error: No such module "Check for unknown parameters". satisfying the equation l=1nlkl=ni.
  2. See, e.g., p. 54 of Script error: No such module "Footnotes"., which solves Jacobi's formula, p(λ)λ=p(λ)m=0λ(m+1)trAm=p(λ)trIλIAtrB, where Template:Mvar is the adjugate matrix of the next section. There also exists an equivalent, related recursive algorithm introduced by Urbain Le Verrier and Dmitry Konstantinovich Faddeev—the Faddeev–LeVerrier algorithm, which reads M0Ocn=1(k=0)MkAMk11k1(tr(AMk1))Icnk=1ktr(AMk)k=1,,n. (see, e.g., Script error: No such module "Footnotes"..) Observe A−1 = −Mn /c0Script error: No such module "Check for unknown parameters". as the recursion terminates. See the algebraic proof in the following section, which relies on the modes of the adjugate, BkMnkScript error: No such module "Check for unknown parameters".. Specifically, (λIA)B=Ip(λ) and the above derivative of Template:Mvar when one traces it yields λpnp=tr(AB), (Script error: No such module "Footnotes".), and the above recursions, in turn.
  3. Due to the non-commutative nature of the multiplication operation for quaternions and related constructions, care needs to be taken with definitions, most notably in this context, for the determinant. The theorem holds as well for the slightly less well-behaved split-quaternions, see Script error: No such module "Footnotes".. The rings of quaternions and split-quaternions can both be represented by certain 2 × 2Script error: No such module "Check for unknown parameters". complex matrices. (When restricted to unit norm, these are the groups SU(2)Script error: No such module "Check for unknown parameters". and SU(1,1)Script error: No such module "Check for unknown parameters". respectively.) Therefore it is not surprising that the theorem holds.
    There is no such matrix representation for the octonions, since the multiplication operation is not associative in this case. However, a modified Cayley–Hamilton theorem still holds for the octonions, see Script error: No such module "Footnotes"..

Script error: No such module "Check for unknown parameters".

Notes

<templatestyles src="Reflist/styles.css" />

  1. a b Script error: No such module "Footnotes".
  2. a b Script error: No such module "Footnotes".
  3. a b Script error: No such module "Footnotes".
  4. a b Script error: No such module "Footnotes".
  5. Script error: No such module "Footnotes".
  6. Script error: No such module "Footnotes".
  7. Script error: No such module "Footnotes".
  8. Script error: No such module "Footnotes".
  9. a b Script error: No such module "Footnotes".
  10. Script error: No such module "Footnotes".
  11. Script error: No such module "Footnotes".
  12. Script error: No such module "Footnotes".
  13. Script error: No such module "Footnotes".
  14. Script error: No such module "Footnotes".
  15. Script error: No such module "citation/CS1".
  16. Script error: No such module "Footnotes".
  17. Script error: No such module "Footnotes".
  18. Script error: No such module "Citation/CS1".
  19. Script error: No such module "Footnotes".

Script error: No such module "Check for unknown parameters".

References

  • Script error: No such module "Citation/CS1". (open access)
  • Script error: No such module "citation/CS1".
  • Script error: No such module "Citation/CS1".
  • Script error: No such module "Citation/CS1".
  • Script error: No such module "citation/CS1".
  • Script error: No such module "citation/CS1".
  • Script error: No such module "Citation/CS1".
  • Script error: No such module "citation/CS1".
  • Script error: No such module "Citation/CS1".
  • Script error: No such module "Citation/CS1".
  • Script error: No such module "Citation/CS1".
  • Script error: No such module "citation/CS1".
  • Script error: No such module "citation/CS1".
  • Script error: No such module "citation/CS1".
  • Script error: No such module "citation/CS1".
  • Script error: No such module "citation/CS1".
  • Script error: No such module "Citation/CS1". (communicated on June 9, 1862)
  • Script error: No such module "Citation/CS1". (communicated on June 23, 1862)
  • Script error: No such module "Citation/CS1". "Classroom Note: A Simple Proof of the Leverrier--Faddeev Characteristic Polynomial Algorithm"
  • Script error: No such module "Citation/CS1".
  • Script error: No such module "citation/CS1".
  • Script error: No such module "citation/CS1".
  • Script error: No such module "Citation/CS1".
  • Script error: No such module "Citation/CS1".
  • Script error: No such module "Citation/CS1".
  • Script error: No such module "Citation/CS1".
  • Script error: No such module "Citation/CS1". (open archive).

External links