In mathematical logic and theoretical computer science, a rewrite system has the (strong) normalization property or is terminating if every term is strongly normalizing; that is, if every sequence of rewrites eventually terminates with an irreducible term, also called a normal form. A rewrite system may also have the weak normalization property, meaning that for every term, there exists at least one particular sequence of rewrites that eventually yields a normal form, i.e., an irreducible term. In mathematical logic and theoretical computer science, a rewrite system has the (strong) normalization property or is terminating if every term is strongly normalizing; that is, if every sequence of rewrites eventually terminates with an irreducible term, also called a normal form. A rewrite system may also have the weak normalization property, meaning that for every term, there exists at least one particular sequence of rewrites that eventually yields a normal form, i.e., an irreducible term. The pure untyped lambda calculus does not satisfy the strong normalization property, and not even the weak normalization property. Consider the term λ x . x x x {displaystyle lambda x.xxx} . It has the following rewrite rule: For any term t {displaystyle t} , But consider what happens when we apply λ x . x x x {displaystyle lambda x.xxx} to itself: Therefore the term ( λ x . x x x ) ( λ x . x x x ) {displaystyle (lambda x.xxx)(lambda x.xxx)} is neither strongly nor weakly normalizing. Various systems of typed lambda calculus including thesimply typed lambda calculus, Jean-Yves Girard's System F, and Thierry Coquand's calculus of constructions are strongly normalizing. A lambda calculus system with the normalization property can be viewed as a programming language with the property that every program terminates. Although this is a very useful property, it has a drawback: a programming language with the normalization property cannot be Turing complete. That means that there are computable functions that cannot be defined in the simply typed lambda calculus (and similarly there are computable functions that cannot be computed in the calculus of constructions or System F). As an example, it is impossible to define a self-interpreter in any of the calculi cited above.