Here is a quotation from Nicod's Axiom and Generalizing Deduction, page 180.
I came upon the idea of a parenthesis-free notation in 1924. I used that notation for the first time in my article Łukasiewicz(1), p. 610, footnote.
The reference cited by Jan Łukasiewicz above is apparently a lithographed report in Polish.
Alonzo Church mentions this notation in his classic book on Mathematical logic as worthy of remark in notational systems even contrasted to Whitehead and Russell's logical notational exposition and work in Principia Mathematica.
While no longer used much in logic, Polish notation has since found a place in computer science.
The expression for adding the numbers one and two is, in prefix notation, written "+ 1 2" rather than "1 + 2". In more complex expressions, the operators still precede their operands, but the operands may themselves be nontrivial expressions including operators of their own. For instance, the expression that would be written in conventional infix notation as
Since the simple arithmetic operators are all binary (at least, in arithmetic contexts), any prefix representation thereof is unambiguous, and bracketing the prefix expression is unnecessary. In the previous example, the parentheses in the infix version were required, since moving them
Prefix notation of simple arithmetic is largely of academic interest. Unlike the similar postfix reverse Polish notation, prefix notation has been used in few if any commercially-made calculators. However, prefix-notated arithmetic is frequently used as a first, conceptual step in the teaching of compiler construction
Although obvious, it is important to note that the number of operands in an expression must equal the number of operators plus one, otherwise the statement makes no sense (assuming only binary operators are used in the expression). This can be easy to overlook when dealing with longer, more complicated expressions with several operators, so care must be taken to double check that an expression makes sense when using prefix notation.
/ 10 5 = 2 (Prefix)
is read as "Divide 10 BY 5". Thus the solution is 2, not ½ as would be the result of an incorrect analysis.
Prefix notation is especially popular with stack-based operations due to its innate ability to easily distinguish order of operations without the need for parentheses. To evaluate order of operations under prefix notation, one does not even need to memorize an operational hierarchy, as with infix notation. Instead, one looks directly to the notation to discover which operator to evaluate first. Reading an expression from left to right, one first looks for an operator and proceeds to look for two operands. If another operator is found before two operands are found, then the old operator is placed aside until this new operator is resolved. This process iterates until an operator is resolved, which must happen eventually, as there must be one more operand than there are operators in a complete statement. Once resolved, the operator and the two operands are replaced with a new operand. Because one operator and two operands were removed and one operand was added, there was a net loss of one operator and one operand, meaning that there still exist more operands than operators by a factor of one, allowing the iterative process to complete once again. This is the general theory behind using stacks in programming languages to evaluate a statement in prefix notation, although there are various algorithms that manipulate the process. Once analyzed, a statement in prefix notation becomes less intimidating to the human mind as it allows some separation from convention with added convenience. An example shows the ease with which a complex statement in prefix notation can be deciphered through order of operations:
- * / 15 - 7 + 1 1 3 + 2 + 1 1 =
- * / 15 - 7 2 3 + 2 + 1 1 =
- * / 15 5 3 + 2 + 1 1 =
- * 3 3 + 2 + 1 1 =
- 9 + 2 + 1 1 =
- 9 + 2 2 =
- 9 4 =
5
| Concept | Conventional notation | Polish notation |
|---|---|---|
| Negation | φ | Nφ |
| Conjunction | φψ | Kφψ |
| Disjunction | φψ | Aφψ |
| Material conditional | φψ | Cφψ |
| Biconditional | φψ | Eφψ |
| Sheffer stroke | phi >psi | Dφψ |
| Possibility | φ | Mφ |
| Necessity | φ | Lφ |
| Universal Quantifier | φ | Πφ |
| Existential Quantifier | φ | Σφ |
Note that the quantifiers ranged over propositional values in Łukasiewicz's work on many-valued logics.