← LibraryMatrix Transpose and Symmetric Matrices | KEVOS® MathematicsProject Delivery · Project ManagementLesson 101/189← PrevNext →
ArticlePublished 8 Aug 202621 min readBy Kevin Jogin
Skip to content

Engineering/Mathematics/Matrices

Matrix Transpose and Symmetric Matrices

The transpose reflects a matrix across its main diagonal, exchanging the roles of rows and columns and turning an m×n array into an n×m one. A matrix equal to its own transpose is symmetric, which forces it to be square and gives it structural and numerical advantages exploited throughout engineering computation.

  • Core level
  • Stream: matrix-algebra
  • Reading time 13 min
  • Ref KVS-ENG-MATH-0036
Taxonomy
Engineering / Mathematics
Prerequisite
Matrix entry notation; matrix addition and scalar multiplication
Size change
m×nn×m
Key identity
(At)t=A — the transpose is an involution
Symmetry test
A=At; forces A square
Cost
No arithmetic; mn data movements, cache-bound

Overview

The transpose is the third operation defined on matrices, and unlike addition and scalar multiplication it takes a single argument and changes the shape of its result. Informally it converts rows into columns; formally it is defined entry by entry, with the entry in row i and column j of At taken from row j and column i of A. Because the definition swaps the index order, the transpose of an m×n matrix is n×m.

That index swap is the whole of the definition, and it is what makes proofs about the transpose short. Any identity involving transposes is a matrix equality, so it reduces to an equality of complex numbers at an arbitrary index pair, and the transpose definition simply reverses the pair. Three such identities carry most of the weight: the transpose distributes over sums, commutes with scalar multiplication, and undoes itself.

A matrix that equals its own transpose is called symmetric. The definition is stated without a size restriction, and it does not need one: if A is m×n then At is n×m, and matrices of different sizes are never equal, so symmetry forces m=n. Symmetric matrices arise wherever a relation between two indices is inherently unordered — stiffness between two nodes, covariance between two variables, conductance between two terminals — and they carry powerful additional theory, including real eigenvalues in the real case and orthogonal diagonalisability.

In implementation the transpose is a data-movement problem rather than an arithmetic one. No floating-point operations are performed, yet a naive transpose of a large matrix is slow because it necessarily traverses one operand with unit stride and the other with stride equal to a full row. Practical systems either block the transpose to fit cache, or avoid materialising it entirely by carrying a transpose flag through to the routine that consumes the matrix.

Definition

Transpose of a Matrix

TM

Given an m×n matrix A, its transpose is the n×m matrix At defined by [At]ij=[A]ji for 1in, 1jm. Equivalently, row k of A becomes column k of At, and the entries on the main diagonal are unmoved.

Other common notations are AT and A. The prime notation clashes with derivatives and is avoided in this library.

Symmetric Matrix

SYM

A matrix A is symmetric when A=At. Equivalently [A]ij=[A]ji for every index pair: the array is unchanged by reflection across the main diagonal running from the top-left entry to the bottom-right.

No size hypothesis is imposed. Squareness is a consequence, not an assumption — see the theorem below.

Skew-Symmetric Matrix

SKEW

A matrix A is skew-symmetric (antisymmetric) when At=A, equivalently [A]ji=[A]ij. Setting i=j forces every diagonal entry to satisfy [A]ii=[A]ii, so all diagonal entries are zero. Skew-symmetric matrices are also necessarily square.

Main Diagonal

MD

The entries [A]ii of a matrix, running from the top-left corner towards the bottom-right. These are exactly the entries fixed by the transpose, which is why the operation is described as a reflection about this line.

Concepts

Symmetric matrices are square

Suppose A is symmetric and, without assuming anything about its shape, let A be m×n. Then At is n×m. Symmetry asserts A=At, and equality of matrices requires identical dimensions, so the row counts must agree: m=n. The argument is worth following carefully because it demonstrates a general pattern — a size conclusion extracted purely from an equality hypothesis, with no reference to any entry. The same reasoning shows skew-symmetric matrices are square.

The transpose respects addition and scaling

For m×n matrices A and B and any scalar α, (A+B)t=At+Bt and (αA)t=αAt. Both proofs are three lines of index chasing: expand the transpose to swap indices, apply the definition of the relevant operation, and reassemble. Together the two statements say the transpose is a linear map from Mmn to Mnm, so it can be applied before or after any linear combination without changing the result.

The transpose is an involution

Applying the transpose twice returns the original matrix: (At)t=A. In indices, [(At)t]ij=[At]ji=[A]ij. The operation is therefore its own inverse, which has two practical consequences. Any identity involving transposes can be transposed again to yield an equivalent identity, and a transpose applied for algebraic convenience can always be undone at no cost in accuracy.

Symmetric and skew-symmetric parts

Every square matrix decomposes uniquely as the sum of a symmetric and a skew-symmetric matrix, A=12(A+At)+12(AAt). The first term is symmetric because transposing it swaps the two summands; the second is skew-symmetric for the same reason with a sign. In continuum mechanics this is exactly the split of a velocity gradient into a strain-rate tensor and a spin tensor, and in graph analysis it separates a directed adjacency matrix into a mutual part and a net-flow part.

The transpose is not the adjoint over

For complex matrices the transpose alone is rarely the right operation. The transpose does not conjugate entries, so xtx can be zero for a non-zero complex vector and is not a squared length. The operation that plays the structural role of the transpose over is the adjoint A=A¯t, combining conjugation with transposition, and the analogue of a symmetric matrix is a Hermitian matrix satisfying A=A. Over the two notions coincide.

Why symmetry is worth detecting

Symmetry is not merely aesthetic. A real symmetric matrix has real eigenvalues and an orthonormal basis of eigenvectors; a symmetric positive-definite matrix admits a Cholesky factorisation costing half the work of general LU with no pivoting required for stability; symmetric storage formats halve memory. Detecting and preserving symmetry through a computation is therefore a first-order design decision, and losing it to rounding is a common and expensive defect.

Decision path: classifying a square matrix by its transpose

Form At by swapping indicesRow k of A becomes column k of At. If the result has a different shape from A, the matrix is not square and neither symmetry nor skew-symmetry is possible.
Is A=At?If every entry satisfies [A]ij=[A]ji, the matrix is symmetric. Real symmetric matrices have real eigenvalues and an orthonormal eigenbasis.
Is At=A?If every entry satisfies [A]ji=[A]ij, the matrix is skew-symmetric and its diagonal is necessarily zero.
Neither: split the matrixForm S=12(A+At) and K=12(AAt). Then A=S+K uniquely, with S symmetric and K skew-symmetric.
Choose storage and factorisationSymmetric implies packed or banded storage and a Cholesky or LDL factorisation; a general matrix requires full storage and pivoted LU.

Equations

Definition of the transpose

EQ-TSM-01
[At]ij=[A]ji1in,1jm

The index pair is reversed. Consequently At has n rows and m columns when A has m rows and n columns.

Transpose of a rectangular matrix

EQ-TSM-02
D=[372314280325]Dt=[310743222385]

A 3×4 matrix transposes to a 4×3 matrix. Each row of D appears as the corresponding column of Dt.

Transpose distributes over addition

EQ-TSM-03
(A+B)t=At+BtA,BMmn

Proved entrywise: [(A+B)t]ij=[A+B]ji=[A]ji+[B]ji=[At]ij+[Bt]ij.

Transpose commutes with scalar multiplication

EQ-TSM-04
(αA)t=αAtα

Together with the previous identity this makes the transpose a linear map MmnMnm.

The transpose is an involution

EQ-TSM-05
(At)t=A

Two index reversals restore the original order, so the operation is its own inverse and loses no information.

Symmetry condition

EQ-TSM-06
A=At[A]ij=[A]jii,jA is square

The size conclusion follows from the shape mismatch alone: A is m×n and At is n×m, so equality forces m=n.

Symmetric and skew-symmetric decomposition

EQ-TSM-07
A=12(A+At)+12(AAt)

Valid for every square matrix and unique. The first term is symmetric, the second skew-symmetric; in kinematics they are the strain-rate and spin tensors.

Variable Definitions

Symbols used on this page
SymbolNameMeaningDomain / type
AMatrixAn m×n matrix with complex entriesM_{mn}
AtTransposeThe n×m matrix obtained by exchanging rows and columnsM_{nm}
[A]ijMatrix entryEntry in row i, column j of Acomplex number
mRow count of ABecomes the column count of Atpositive integer
nColumn count of ABecomes the row count of Atpositive integer
αScalarComplex number in the scalar multiplication identitycomplex number
SSymmetric part12(A+At), satisfying S=Stsquare matrix
KSkew-symmetric part12(AAt), satisfying Kt=Ksquare matrix
AAdjointConjugate transpose A¯t; the correct analogue of the transpose over M_{nm}

Worked Numerical Example

Problem statement

A computational fluid dynamics solver reports the velocity gradient at a cell as a 3×3 matrix G with [G]ij=vi/xj in units of reciprocal seconds. Form the transpose, decompose G into its symmetric and skew-symmetric parts, and interpret each.

  1. State the velocity gradient

    The matrix is square and, in general, neither symmetric nor skew-symmetric. Each row records how one velocity component varies with the three spatial coordinates.

    G=[4102268601]
  2. Form the transpose

    Apply [Gt]ij=[G]ji: row 1 of G becomes column 1 of Gt, and so on. The diagonal entries 4, 6 and 1 are unmoved because they satisfy i=j.

    Gt=[4261060281]
  3. Confirm G is not symmetric

    Compare entry (1,2) with entry (2,1): [G]12=10 but [G]21=2. A single disagreeing off-diagonal pair is enough to rule out symmetry; there is no need to inspect the remaining entries.

  4. Form the symmetric part

    Compute S=12(G+Gt) using the linearity of the transpose. Entry (1,2) is 12(10+(2))=4, and by construction entry (2,1) is the same. The diagonal of S equals the diagonal of G.

    S=12[8848128482]=[442464241]
  5. Form the skew-symmetric part

    Compute K=12(GGt). Entry (1,2) is 12(10(2))=6 and entry (2,1) is 12(210)=6. Every diagonal entry cancels to zero, as skew-symmetry requires.

    K=12[01281208880]=[064604440]
  6. Verify the decomposition reconstructs G

    Add the two parts entry by entry. Entry (1,2) gives 4+6=10 and entry (2,1) gives 4+(6)=2, matching G. The full sum recovers G exactly, confirming both the arithmetic and the identity.

    S+K=[4102268601]=G
  7. Check that each part has the claimed symmetry

    Transposing S reproduces S, since St=12(Gt+(Gt)t)=12(Gt+G)=S by linearity and the involution property. The same computation with a minus sign gives Kt=K. Neither check requires inspecting entries.

Result

The symmetric part S is the strain-rate tensor: it describes how the fluid element is being stretched and sheared, and its trace 4+61=9 per second is the volumetric dilatation rate. The skew-symmetric part K is the spin tensor, encoding rigid-body rotation at angular rate with components 4, 4 and 6 per second, which produces no deformation and therefore no viscous stress. Separating them is what allows a constitutive law to be applied to the deformation alone.

Applications & Industry Use

Structural and mechanical engineering

Stiffness matrices are symmetric

Maxwell-Betti reciprocity states that the deflection at node i from a unit load at node j equals the deflection at j from a unit load at i, so a finite element stiffness matrix is symmetric by physics rather than by convention. Solvers exploit this to store only the upper triangle and factorise by Cholesky, halving both memory and arithmetic.

Statistics and machine learning

Covariance and Gram matrices

A covariance matrix is symmetric because the covariance of two variables does not depend on their order, and a Gram matrix AtA is symmetric for the same structural reason. Symmetry guarantees real eigenvalues, which is what makes principal component analysis well posed.

Continuum mechanics

Strain-rate and spin decomposition

Splitting a velocity gradient into symmetric and skew-symmetric parts separates deformation from rigid rotation. Constitutive models relate stress to the symmetric part only, since a rotating element with no deformation must generate no viscous stress; the skew part drives vorticity.

Network and power systems

Admittance matrices of reciprocal networks

A network of passive bilateral elements has a symmetric admittance matrix, because the transfer admittance between two buses is direction-independent. Loss of symmetry in an assembled model is a reliable indicator of a modelling error such as a mis-signed mutual coupling.

Computer graphics and geometry

Transposes of orthogonal transformations

For a real orthogonal matrix, the transpose is the inverse, so undoing a rotation costs nothing but an index swap. Renderers exploit this to transform surface normals, which require the inverse transpose of the model matrix rather than the matrix itself.

High-performance computing

Layout conversion between row-major and column-major

Interfacing C or Python code with Fortran-order LAPACK routines is a transpose problem in disguise: the same buffer read with the opposite convention is the transpose of the intended matrix. Passing an explicit transpose flag instead of copying the data is standard practice and avoids a full cache-hostile traversal.

Design Considerations

Avoid materialising a transpose when a flag will do

BLAS and LAPACK routines accept a transpose argument that changes the access pattern rather than the data. Copying a large matrix to form its transpose costs a full pass over memory with poor locality on one side; passing 'T' costs nothing. Materialise a transpose only when the same transposed matrix will be consumed repeatedly with a favourable access pattern.

Preserve symmetry explicitly through a computation

A matrix that should be symmetric can lose symmetry to rounding in the last bits, after which a Cholesky factorisation may fail or an eigenvalue routine may return complex results. Where the mathematics guarantees symmetry, enforce it by construction — compute only the upper triangle and mirror it, or symmetrise with 12(A+At) before factorising.

Use the adjoint, not the transpose, for complex matrices

Over the transpose is the wrong generalisation for anything involving length, angle or energy. xtx is not a squared norm and can vanish for non-zero x, whereas xx is real, non-negative and zero only for the zero vector. Reserve the plain transpose for genuinely real data or for purely combinatorial index rearrangement.

Block the transpose for cache efficiency

A naive double loop reads A with unit stride and writes At with stride equal to a row length, or the reverse, so almost every write touches a fresh cache line. Transposing in square tiles sized to the cache line and the L1 capacity restores locality on both sides and typically improves throughput by an order of magnitude for large matrices.

Symmetry earns a cheaper factorisation, not just cheaper storage

A symmetric positive-definite system solved by Cholesky costs about 13n3 operations against 23n3 for general LU, requires no pivoting for stability, and never generates complex intermediates. Detecting symmetry early therefore halves the solve cost and simplifies the error analysis; detecting it late wastes both.

Test symmetry with a tolerance, not with equality

On measured or computed data, exact entrywise equality of [A]ij and [A]ji almost never holds. Test AAt against a tolerance scaled by A, and decide in advance whether a near-symmetric matrix should be symmetrised or reported as an error, since silently symmetrising a genuinely asymmetric matrix hides modelling faults.

Standards & Codes

Notation, interchange and numerical standards that govern how this material is written down, stored and computed in production systems.

Applicable standards, conventions and reference implementations
ReferenceTitleRelevance to this topic
ISO 80000-2Quantities and units — Part 2: MathematicsSpecifies superscript T or t for the transpose and the asterisk for the conjugate transpose, and fixes the row-then-column index order that the transpose reverses.
BLAS Level 3Basic Linear Algebra Subprograms, matrix-matrix operationsEvery Level 3 routine takes a TRANS character argument, so a transpose is expressed as an access pattern rather than a data copy; xSYRK and xSYMM additionally exploit symmetry directly.
LAPACK packed and banded storageLinear Algebra PACKage storage conventionsDefines the packed triangular formats (SP, PP) in which a symmetric matrix is stored in roughly half the memory, and the xPOTRF Cholesky routine that consumes them.
ISO/IEC 9899Programming languages — CFixes row-major array layout, in contrast with the column-major convention of Fortran and LAPACK. The two conventions read the same buffer as mutual transposes, which is the most common source of transpose defects in mixed-language code.
ISO/IEC 40314Mathematical Markup Language (MathML) Version 3.0Encodes the transpose superscript as semantic markup rather than as styling, so screen readers announce the operation instead of reading an isolated letter.

Material Selection

For a mathematical topic, "material" is the numeric representation: the scalar field, storage format and precision the computation is built from.

Representation and precision selection
RepresentationSelect whenTrade-off
Full dense storage, both trianglesGeneral rectangular matrices, or square matrices with no guaranteed structure.Simplest indexing and best vectorisation; uses twice the memory strictly needed for a symmetric matrix and permits symmetry to drift.
Packed triangular storageLarge symmetric matrices where memory is the binding constraint, such as dense covariance estimates.Halves memory and makes symmetry exact by construction, but indexing is non-contiguous and packed BLAS routines are markedly slower than their full-storage equivalents.
Symmetric banded storageStructural and finite-difference matrices where non-zeros are confined near the diagonal.Storage proportional to bandwidth times dimension with a fast banded Cholesky; requires a bandwidth-reducing permutation first and degrades badly if any entry lies far off-diagonal.
Transpose-by-flag (no copy)A matrix is consumed once by a routine that accepts a transpose argument.Zero memory and zero movement cost; may force the consuming kernel into a less favourable access pattern, so the saving is not always net positive.
Blocked explicit transposeThe transposed matrix will be reused many times, or the consumer requires contiguous rows.Pays one cache-friendly pass over the data and doubles peak memory during the copy, in exchange for optimal locality on all subsequent uses.
Real entries versus complex entriesDeciding whether transpose or adjoint is the appropriate operation.For real data the two coincide and the plain transpose is correct and cheaper; for complex data the transpose omits conjugation and silently produces wrong norms, angles and Hermitian tests.

Manufacturing Notes

Implementation notes — how the result is actually produced by hand, by algorithm and by library, including cost and numerical behaviour.

Cost model: movement, not arithmetic

A transpose performs zero floating-point operations and exactly mn element moves. Its running time is therefore governed entirely by the memory hierarchy. A naive implementation on a large matrix achieves a small fraction of peak bandwidth because one of the two traversals has stride equal to a row length; a tiled implementation with tiles of a few dozen elements per side recovers most of it.

In-place transposition

Transposing a square matrix in place is a simple exchange of [A]ij with [A]ji over the strict upper triangle, requiring no extra storage. Transposing a rectangular matrix in place is a permutation with non-trivial cycle structure and is substantially harder; unless memory is critically constrained, allocate the n×m result.

Hand procedure and verification

Write each row of A as a column of At, working left to right. Two checks catch nearly all errors: the diagonal entries must be unchanged, and the shape must have flipped from m×n to n×m. For a symmetry check, compare only the strict upper triangle against the strict lower triangle — 12n(n1) comparisons rather than n2.

Library conventions and pitfalls

NumPy's A.T returns a view with swapped strides and copies nothing, so writing through it modifies the original; numpy.ascontiguousarray forces a real copy. MATLAB's ' is the complex-conjugate transpose while .' is the plain transpose, an easily missed distinction on complex data. Eigen's a.transpose() aliases the source, so a = a.transpose() is undefined behaviour and a.transposeInPlace() must be used.

Numerical stability

The transpose is exact: it moves values without arithmetic, so no rounding occurs and the condition number, norm and spectrum-related quantities of interest are preserved exactly. All accuracy concerns around transposes are really concerns about the operations performed alongside them, particularly the formation of AtA, which squares the condition number and should be avoided in favour of a QR or SVD approach.

Failure Modes & Common Mistakes

Failure modes, root causes and prevention
Failure mode / mistakeImpactRoot causePrevention & detection
Using the transpose in place of the adjoint on complex datahighApplying At where A=A¯t is required, so entries are rearranged but not conjugated.Over , use the conjugate transpose for every inner product, norm, orthogonality or self-adjointness computation. In MATLAB prefer ' and use .' only deliberately.
Row-major versus column-major mismatchhighPassing a C row-major buffer to a Fortran-order routine, which interprets it as the transpose.Set the layout and transpose arguments explicitly at every language boundary, and validate with a deliberately non-square, non-symmetric test matrix where a transpose error cannot hide.
Loss of symmetry to roundinghighA matrix assembled or updated by operations that should preserve symmetry accumulates differing rounding in the two triangles.Compute one triangle and mirror it, or symmetrise with 12(A+At) before any routine that assumes symmetry; do not rely on the arithmetic to maintain it.
Testing symmetry with exact equalitymediumComparing [A]ij and [A]ji bitwise on floating-point data, so a numerically symmetric matrix is rejected.Compare AAt against a tolerance scaled by A and decide the symmetrise-or-fail policy in advance.
Assuming a symmetric matrix can be rectangularmediumApplying the definition A=At without noticing that it constrains the shape.Recall that A is m×n and At is n×m, so equality forces m=n. Check squareness first and skip the entry comparison if it fails.
Aliasing during an in-place transposemediumWriting a = a.transpose() in a library whose transpose returns a view of the same buffer, so entries are overwritten while still being read.Use the library's dedicated in-place routine, or transpose into a freshly allocated destination and then swap the handles.
Forming AtA to solve a least-squares problemhighBuilding the normal equations explicitly, which squares the condition number and can lose half the available significant digits.Solve least-squares problems by QR factorisation or SVD applied directly to A; form AtA only when the condition number is known to be modest.
Unblocked transpose of a large matrixlowA naive double loop whose write stride equals a full row length, so nearly every write misses cache.Transpose in square tiles sized to the cache, or avoid materialisation entirely by passing a transpose flag to the consuming routine.

FAQs

Why does symmetry force a matrix to be square?

Because the transpose of an m×n matrix is n×m, and two matrices of different sizes can never be equal. The hypothesis A=At therefore forces m=n before any entry is examined. This is why the definition of a symmetric matrix does not need to assume squareness — it is a consequence.

Is the transpose the same as the inverse?

Only for real orthogonal matrices, where AtA=I holds by definition of orthogonality. In general the transpose exists for every matrix, including rectangular and singular ones, while the inverse exists only for square non-singular matrices. Conflating them is a common and consequential error.

What is the difference between the transpose and the adjoint?

The transpose reverses the index order; the adjoint A=A¯t reverses the index order and conjugates every entry. For real matrices they are identical. For complex matrices only the adjoint gives a well-behaved inner product, so norms, orthogonality and self-adjointness must all be phrased with the adjoint.

Does transposing change the rank, determinant or eigenvalues?

Rank and determinant are unchanged: a matrix and its transpose have the same rank, and for square matrices the same determinant. The eigenvalues of a square matrix and its transpose also coincide, though the eigenvectors generally differ — the eigenvectors of At are the left eigenvectors of A.

Why is transposing a large matrix slow when it performs no arithmetic?

Because it is bound by memory locality rather than computation. One of the two traversals necessarily has a stride equal to a full row, so almost every access touches a new cache line and the operation runs at a small fraction of peak bandwidth. Tiling the transpose into cache-sized blocks restores locality and typically gives an order-of-magnitude improvement.

Can every square matrix be split into symmetric and skew-symmetric parts?

Yes, and uniquely: A=12(A+At)+12(AAt). Transposing the first term swaps the two summands and leaves it unchanged, so it is symmetric; the same operation on the second term introduces a sign, so it is skew-symmetric. Uniqueness follows because a matrix that is both symmetric and skew-symmetric must be zero.

Should I store both triangles of a symmetric matrix?

It depends on which resource binds. Packed triangular storage halves memory and makes symmetry exact by construction, but packed routines are noticeably slower than full-storage ones because the indexing is not contiguous. For matrices that fit comfortably in memory, full storage with an enforced symmetrisation step is usually faster overall.

References

  1. Beezer, R. A. A First Course in Linear Algebra, Version 0.70. University of Puget Sound, 2006. Section MO, Subsection TSM, Theorems SMS, TMA, TMSM and TT. Licensed under the GNU Free Documentation License v1.2.
  2. ISO 80000-2:2019, Quantities and units — Part 2: Mathematics. International Organization for Standardization.
  3. Anderson, E. et al. LAPACK Users' Guide, 3rd edition. Society for Industrial and Applied Mathematics, 1999.
  4. Golub, G. H. and Van Loan, C. F. Matrix Computations, 4th edition. Johns Hopkins University Press, 2013.
  5. Higham, N. J. Accuracy and Stability of Numerical Algorithms, 2nd edition. Society for Industrial and Applied Mathematics, 2002.

AI Suggested Questions

  • Show me a 3x3 matrix that is neither symmetric nor skew-symmetric and compute both parts of its decomposition, interpreting each physically.
  • Why does forming the normal equations A-transpose-A square the condition number, and what should I use instead for least squares?
  • Benchmark a naive versus a cache-blocked transpose of a 4096x4096 binary64 matrix and explain the difference in throughput.
  • In what situations does MATLAB's apostrophe operator give a different answer from dot-apostrophe, and how do I catch that bug in a test?
  • Prove that a matrix which is both symmetric and skew-symmetric must be the zero matrix.
  • How do the eigenvectors of A and A-transpose relate, and what are left eigenvectors used for in practice?

Related Calculators

Continue learning

Algebraic and Geometric Multiplicities of Eigenvalues | KEVOS® MathematicsArticle · Project ManagementAmitsur’s Theorem on the Radical of a Polynomial Ring | KEVOS®Article · Project ManagementAmitsur’s Theorem on the Radical of an Algebra of Small Dimension | KEVOS®Article · Project ManagementArchetypes: Reference Catalogue of Worked Systems | KEVOS® MathematicsArticle · Project Management