# Post canonical system

A Post canonical system, also known as a Post production system, as created by Emil Post, is a string-manipulation system that starts with finitely-many strings and repeatedly transforms them by applying a finite set j of specified rules of a certain form, thus generating a formal language. Today they are mainly of historical relevance because every Post canonical system can be reduced to a string rewriting system (semi-Thue system), which is a simpler formulation. Both formalisms are Turing complete.

## Definition

A Post canonical system is a triplet (A,I,R), where
* A is a finite alphabet, and finite (possibly empty) strings on A are called words.
* I is a finite set of initial words.
* R is a finite set of string-transforming rules (called production rules), each rule being of the following form:
    ${\overset {\begin{matrix}g_{10}&\$_{11}&g_{11}&\$_{12}&g_{12}&\dots &\$_{1m_{1}}&g_{1m_{1}}\\g_{20}&\$_{21}&g_{21}&\$_{22}&g_{22}&\dots &\$_{2m_{2}}&g_{2m_{2}}\\\vdots &\vdots &\vdots &\vdots &\vdots &\ddots &\vdots &\vdots \\g_{k0}&\$_{k1}&g_{k1}&\$_{k2}&g_{k2}&\dots &\$_{km_{k}}&g_{km_{k}}\\\end{matrix}}{\underset {\begin{matrix}h_{0}&\$'_{1}&h_{1}&\$'_{2}&h_{2}&\dots &\$'_{n}&h_{n}\\\end{matrix}}{\downarrow }}}$
where each g and h is a specified fixed word, and each $ and $' is a variable standing for an arbitrary word. The strings before and after the arrow in a production rule are called the rule's antecedents and consequent, respectively. It is required that each $' in the consequent be one of the $s in the antecedents of that rule, and that each antecedent and consequent contain at least one variable.
In many contexts, each production rule has only one antecedent, thus taking the simpler form
    $g_{0}\ \$_{1}\ g_{1}\ \$_{2}\ g_{2}\ \dots \ \$_{m}\ g_{m}\ \rightarrow \ h_{0}\ \$'_{1}\ h_{1}\ \$'_{2}\ h_{2}\ \dots \ \$'_{n}\ h_{n}$
The formal language generated by a Post canonical system is the set whose elements are the initial words together with all words obtainable from them by repeated application of the production rules. Such sets are recursively enumerable languages and every recursively enumerable language is the restriction of some such set to a sub-alphabet of A.

### Example (well-formed bracket expressions)
## Normal-form theorem

A Post canonical system is said to be in normal form if it has only one initial word and every production rule is of the simple form
    $g\$\ \rightarrow \ \$h$
Post 1943 proved the remarkable Normal-form Theorem, which applies to the most-general type of Post canonical system:
    Given any Post canonical system on an alphabet A, a Post canonical system in normal form can be constructed from it, possibly enlarging the alphabet, such that the set of words involving only letters of A that are generated by the normal-form system is exactly the set of words generated by the original system.
Tag systems, which comprise a universal computational model, are notable examples of Post normal-form system, being also monogenic. (A canonical system is said to be monogenic if, given any string, at most one new string can be produced from it in one step — i.e., the system is deterministic.)

## String rewriting systems, type-0 formal grammars

A string rewriting system is a special type of Post canonical system with a single initial word, and the productions are each of the form
    $P_{1}gP_{2}\ \rightarrow \ P_{1}hP_{2}$
That is, each production rule is a simple substitution rule, often written in the form g → h. It has been proved that any Post canonical system is reducible to such a substitution system, which, as a formal grammar, is also called a phrase-structure grammar, or a type-0 grammar in the Chomsky hierarchy.