In last post, it was shown that in Lisp practice, the term "symbolic expression", shorter "sexpression", "sepxr", "sexp" is used on few different, although similar meanings.
It is not unusual. Other terms, even mathematical ones, like "lines" or "numbers" are not uniquely defined as well. Ambiguity usually motivates the search for the essence of the discussed entities; the result of the search is axiomatic theory.
For example, the axioms of natural numbers are developed in late 1880's by R. Dedekind and G. Peano.
Axioms of Natural Numbers
There is a set N ("numbers"), distinctive element of the N denoted with 1 ("base", "initial number") and mapping
successor: N → N
such that
Search for axioms of symbolic expressions might be equally justified. I designed following axioms (version in which lists are only shorter way of writing "dotted pairs") to emphasize the similarities to axioms of natural numbers.
Axioms of Symbolic Expressions
There is a set SEXPR ("symbolic expressions"), infinite set of distinct elements of the SEXPR denoted with A ("atoms") and mapping
cons: SEXPR × SEXPR → SEXPR
such that
Symbolic expressions in all three meanings satisfy the axioms; cons structures satisfy axiom (3) only if cyclic structures are not allowed, like in original, McCarthy's Lisp. I'm not aware of unintended, perverse models that satisfy given axioms; but I am not sure that such models do not exist.
There are only two differences between these axiom systems.
It is not obvious that symbolic expressions require infinitely many atoms; it could be only convenience. Perhaps Sexpressions like (A . (B . (C . D))) can be used instead of symbols like ABCD, eliminating need for infinitely many atoms.
It remains unclear why these two systems of axioms are so similar.

The Similarities Between Axioms of Natural Numbers and Axioms of Sexpressions.
.
Three Meanings of The Term 'Sexpression.'
.
Three meanings of the term 'Sexpression' "Symbolic expressions" or "Sexpressions" are the basic data type in Lisp. Particularly, Lisp programs are Sexpressions as well. The notion has immense importance in Lisp community. Surprisingly, designers of recent Lisp dialects avoid the term "symbolic expression" or "Sexpression". It is used once in Picolisp documentation; only twice, almost accidentally, in CLtL2, and it isn't used in CL Hyperspec or recent Scheme standards. Clojure, according to its web site "extends the codeasdata system beyond parenthesized lists (sexpressions) to vectors and maps." Only Newlisp documentation appear to regularly uses the term. However, the term Sexpression is still extensively used in daily communication and literature. Unfortunately, there is no universal, unique meaning. Inconsistent use is sometimes noted; for instance, in P. Siebel's "Practical Common Lisp." More frequently, it is ignored. For J. McCarthy, Sexpression is finite sequence consisting of dots and parentheses and symbols. The symbols, truly atomic, cannot be analysed on characters. For instance, Sexpression (left.right) is sequence of five elements: (, left, ., right and ). More often^{1}, Sexpression is seen as sequence of characters. In that meaning, Sexpression (left . right) is sequence consisting of 14 elements. The most usually^{2}, Sexpression is data structure, perhaps tree consisting of cons cells and symbols. In that meaning Sexpression (left . right) is cons cell, containing adresses of symbols left and right in memory. 1 For instance, in E. Shaphiro, "Common Lisp  an interactive approach"; F. Turbak and D. Gifford, "Design concept of programming languages." 2 For instance, in J. and G. Sussman and H. Abelson, "SICP"; D. Touretsky, "Common Lisp  A gentle introduction to symbolic computation"; R. Finkel, "Advanced programming languages design". 
Subscribe to:
Posts (Atom)