This article includes a list of general references, but it lacks sufficient corresponding inline citations. Please help to improve this article by introducing more precise citations. (April 2015) (Learn how and when to remove this template message)

In mathematics, an **invariant** is a property of a mathematical object (or a class of mathematical objects) which remains unchanged after operations or transformations of a certain type are applied to the objects.^{[1]}^{[2]} The particular class of objects and type of transformations are usually indicated by the context in which the term is used. For example, the area of a triangle is an invariant with respect to isometries of the Euclidean plane. The phrases "invariant under" and "invariant to" a transformation are both used. More generally, an invariant with respect to an equivalence relation is a property that is constant on each equivalence class.^{[3]}

Invariants are used in diverse areas of mathematics such as geometry, topology, algebra and discrete mathematics. Some important classes of transformations are defined by an invariant they leave unchanged. For example, conformal maps are defined as transformations of the plane that preserve angles. The discovery of invariants is an important step in the process of classifying mathematical objects.^{[2]}^{[3]}

A simple example of invariance is expressed in our ability to count. For a finite set of objects of any kind, there is a number to which we always arrive, regardless of the order in which we count the objects in the set. The quantity—a cardinal number—is associated with the set, and is invariant under the process of counting.

An identity is an equation that remains true for all values of its variables. There are also inequalities that remain true when the values of their variables change.

The distance between two points on a number line is not changed by adding the same quantity to both numbers. On the other hand, multiplication does not have this same property, as distance is not invariant under multiplication.

Angles and ratios of distances are invariant under scalings, rotations, translations and reflections. These transformations produce similar shapes, which is the basis of trigonometry. In contrast, angles and ratios are not invariant under non-uniform scaling (such as stretching). The sum of a triangle's interior angles (180°) is invariant under all the above operations. As another example, all circles are similar: they can be transformed into each other and the ratio of the circumference to the diameter is invariant (denoted by the Greek letter π (pi)).

Some more complicated examples:

- The real part and the absolute value of a complex number are invariant under complex conjugation.
- The degree of a polynomial is invariant under a linear change of variables.
- The dimension and homology groups of a topological object are invariant under homeomorphism.
^{[4]} - The number of fixed points of a dynamical system is invariant under many mathematical operations.
- Euclidean distance is invariant under orthogonal transformations.
- Euclidean area is invariant under linear maps which have determinant ±1 (see Equiareal map § Linear transformations).
- Some invariants of projective transformations include collinearity of three or more points, concurrency of three or more lines, conic sections, and the cross-ratio.
^{[5]} - The determinant, trace, eigenvectors, and eigenvalues of a linear endomorphism are invariant under a change of basis. In other words, the spectrum of a matrix is invariant under a change of basis.
- The principal invariants of tensors do not change with rotation of the coordinate system (see Invariants of tensors).
- The singular values of a matrix are invariant under orthogonal transformations.
- Lebesgue measure is invariant under translations.
- The variance of a probability distribution is invariant under translations of the real line. Hence the variance of a random variable is unchanged after the addition of a constant.
- The fixed points of a transformation are the elements in the domain that are invariant under the transformation. They may, depending on the application, be called symmetric with respect to that transformation. For example, objects with translational symmetry are invariant under certain translations.
- The integral of the Gaussian curvature of a two-dimensional Riemannian manifold is invariant under changes of the Riemannian metric
*. This is the Gauss–Bonnet theorem.*

The MU puzzle^{[6]} is a good example of a logical problem where determining an invariant is of use for an impossibility proof. The puzzle asks one to start with the word MI and transform it into the word MU, using in each step one of the following transformation rules:

- If a string ends with an I, a U may be appended (
*x*I →*x*IU) - The string after the M may be completely duplicated (M
*x*→ M*xx*) - Any three consecutive I's (III) may be replaced with a single U (
*x*III*y*→*x*U*y*) - Any two consecutive U's may be removed (
*x*UU*y*→*xy*)

An example derivation (with superscripts indicating the applied rules) is

- MI →
^{2}MII →^{2}MIIII →^{3}MUI →^{2}MUIUI →^{1}MUIUIU →^{2}MUIUIUUIUIU →^{4}MUIUIIUIU → ...

In light of this, one might wonder whether it is possible to convert MI into MU, using only these four transformation rules. One could spend many hours applying these transformation rules to strings. However, it might be quicker to find a property that is invariant to all rules (i.e. that isn't changed by any of them), and demonstrates that getting to MU is impossible. By looking at the puzzle from a logical standpoint, one might realize that the only way to get rid of any I's is to have three consecutive I's in the string. This makes the following invariant interesting to consider:

*The number of I's in the string is not a multiple of 3*.

This is an invariant to the problem, if for each of the transformation rules the following holds: if the invariant held before applying the rule, it will also hold after applying it. Looking at the net effect of applying the rules on the number of I's and U's, one can see this actually is the case for all rules:

Rule #I's #U's Effect on invariant 1 +0 +1 Number of I's is unchanged. If the invariant held, it still does. 2 ×2 ×2 If *n*is not a multiple of 3, then 2×*n*isn't either. The invariant still holds.3 −3 +1 If *n*is not a multiple of 3,*n*−3 isn't either. The invariant still holds.4 +0 −2 Number of I's is unchanged. If the invariant held, it still does.

The table above shows clearly that the invariant holds for each of the possible transformation rules, which means that whichever rule one picks, at whatever state, if the number of I's was not a multiple of three before applying the rule, then it won't be afterwards either.

Given that there is a single I in the starting string MI, and one that is not a multiple of three, one can then conclude that it is impossible to go from MI to MU (as the number of I's will never be a multiple of three).

A subset *S* of the domain *U* of a mapping *T*: *U* → *U* is an **invariant set** under the mapping when Note that the elements of *S* are not fixed, even though the set *S* is fixed in the power set of *U*. (Some authors use the terminology *setwise invariant,*^{[7]} vs. *pointwise invariant,*^{[8]} to distinguish between these cases.)
For example, a circle is an invariant subset of the plane under a rotation about the circle's center. Further, a conical surface is invariant as a set under a homothety of space.

An invariant set of an operation *T* is also said to be **stable under** *T*. For example, the normal subgroups that are so important in group theory are those subgroups that are stable under the inner automorphisms of the ambient group.^{[9]}^{[10]}^{[11]}
In linear algebra, if a linear transformation *T* has an eigenvector **v**, then the line through **0** and **v** is an invariant set under *T*, in which case the eigenvectors span an invariant subspace which is stable under *T*.

When *T* is a screw displacement, the screw axis is an invariant line, though if the pitch is non-zero, *T* has no fixed points.

This section does not cite any sources. Please help improve this section by adding citations to reliable sources. Unsourced material may be challenged and removed. (February 2010) (Learn how and when to remove this template message)

The notion of invariance is formalized in three different ways in mathematics: via group actions, presentations, and deformation.

Firstly, if one has a group *G* acting on a mathematical object (or set of objects) *X,* then one may ask which points *x* are unchanged, "invariant" under the group action, or under an element *g* of the group.

Frequently one will have a group acting on a set *X*, which leaves one to determine which objects in an *associated* set *F*(*X*) are invariant. For example, rotation in the plane about a point leaves the point about which it rotates invariant, while translation in the plane does not leave any points invariant, but does leave all lines parallel to the direction of translation invariant as lines. Formally, define the set of lines in the plane *P* as *L*(*P*); then a rigid motion of the plane takes lines to lines – the group of rigid motions acts on the set of lines – and one may ask which lines are unchanged by an action.

More importantly, one may define a *function* on a set, such as "radius of a circle in the plane", and then ask if this function is invariant under a group action, such as rigid motions.

Dual to the notion of invariants are *coinvariants,* also known as *orbits,* which formalizes the notion of congruence: objects which can be taken to each other by a group action. For example, under the group of rigid motions of the plane, the perimeter of a triangle is an invariant, while the set of triangles congruent to a given triangle is a coinvariant.

These are connected as follows: invariants are constant on coinvariants (for example, congruent triangles have the same perimeter), while two objects which agree in the value of one invariant may or may not be congruent (for example, two triangles with the same perimeter need not be congruent). In classification problems, one might seek to find a complete set of invariants, such that if two objects have the same values for this set of invariants, then they are congruent.

For example, triangles such that all three sides are equal are congruent under rigid motions, via SSS congruence, and thus the lengths of all three sides form a complete set of invariants for triangles. The three angle measures of a triangle are also invariant under rigid motions, but do not form a complete set as incongruent triangles can share the same angle measures. However, if one allows scaling in addition to rigid motions, then the AAA similarity criterion shows that this is a complete set of invariants.

Secondly, a function may be defined in terms of some presentation or decomposition of a mathematical object; for instance, the Euler characteristic of a cell complex is defined as the alternating sum of the number of cells in each dimension. One may forget the cell complex structure and look only at the underlying topological space (the manifold) – as different cell complexes give the same underlying manifold, one may ask if the function is *independent* of choice of *presentation,* in which case it is an *intrinsically* defined invariant. This is the case for the Euler characteristic, and a general method for defining and computing invariants is to define them for a given presentation, and then show that they are independent of the choice of presentation. Note that there is no notion of a group action in this sense.

The most common examples are:

- The presentation of a manifold in terms of coordinate charts – invariants must be unchanged under change of coordinates.
- Various manifold decompositions, as discussed for Euler characteristic.
- Invariants of a presentation of a group.

Thirdly, if one is studying an object which varies in a family, as is common in algebraic geometry and differential geometry, one may ask if the property is unchanged under perturbation (for example, if an object is constant on families or invariant under change of metric).

For other uses of the word "invariant" in computer science, see invariant (disambiguation). |

In computer science, an invariant is a logical assertion that is always held to be true during a certain phase of execution of a computer program. For example, a loop invariant is a condition that is true at the beginning and the end of every iteration of a loop.

Invariants are especially useful when reasoning about the correctness of a computer program. The theory of optimizing compilers, the methodology of design by contract, and formal methods for determining program correctness, all rely heavily on invariants.

Programmers often use assertions in their code to make invariants explicit. Some object oriented programming languages have a special syntax for specifying class invariants.

Abstract interpretation tools can compute simple invariants of given imperative computer programs. The kind of properties that can be found depend on the abstract domains used. Typical example properties are single integer variable ranges like `0<=x<1024`

, relations between several variables like `0<=i-j<2*n-1`

, and modulus information like `y%4==0`

. Academic research prototypes also consider simple properties of pointer structures.^{[12]}

More sophisticated invariants generally have to be provided manually.
In particular, when verifying an imperative program using the Hoare calculus,^{[13]} a loop invariant has to be provided manually for each loop in the program, which is one of the reasons that this approach is generally impractical for most programs.

In the context of the above MU puzzle example, there is currently no general automated tool that can detect that a derivation from MI to MU is impossible using only the rules 1–4. However, once the abstraction from the string to the number of its "I"s has been made by hand, leading, for example, to the following C program, an abstract interpretation tool will be able to detect that `ICount%3`

can't be 0, and hence the "while"-loop will never terminate.

```
void MUPuzzle(void) {
volatile int RandomRule;
int ICount = 1, UCount = 0;
while (ICount % 3 != 0) // non-terminating loop
switch(RandomRule) {
case 1: UCount += 1; break;
case 2: ICount *= 2; UCount *= 2; break;
case 3: ICount -= 3; UCount += 1; break;
case 4: UCount -= 2; break;
} // computed invariant: ICount % 3 == 1 || ICount % 3 == 2
}
```