I think that’s a very good summary indeed, in particular that the “unique non-ambiguous set of derivations” is what imbues the syntax with ‘reality’.
Symbols are indeed not defined, but the only means we have of duck-typing symbols is to do so symbolically (a symbol S is an object supporting an equality operator = with other symbols). You mention Lisp; the best mental model of symbols is Lisp gensyms (which, again, are objects supporting only one operator, equality).
conses of conses are indeed a common model of strings, but I’m not sure whether that matters—we’re interested in the syntax itself considered abstractly, rather than any representation of the syntax. Since ad-hoc infinite regress is not allowed, we must take something as primal (just as formal mathematics takes the ‘set’ as primal and constructs everything from set theory) and that is what I do with syntax.
As mathematics starts with axioms about sets and inference rules about sets, so I begin with meta-axioms about syntax and meta-inference rules about syntax. (I then—somewhat reflexively—consider meta²-axioms, then transfinitely induct. It’s a habit I’ve developed lately; a current project of mine is to work out how large a large ordinal kappa must be such that meta^kappa -syntax will prove the existence of ordinals larger than kappa, and then (by transfinite recursion shorter than kappa) prove the existence of [a given large cardinal, or the Von Neumann universe, or some other desired ‘big’ entity]. But that’s a topic for another post, I fear)
I think that’s a very good summary indeed, in particular that the “unique non-ambiguous set of derivations” is what imbues the syntax with ‘reality’.
Symbols are indeed not defined, but the only means we have of duck-typing symbols is to do so symbolically (a symbol S is an object supporting an equality operator = with other symbols). You mention Lisp; the best mental model of symbols is Lisp gensyms (which, again, are objects supporting only one operator, equality).
conses of conses are indeed a common model of strings, but I’m not sure whether that matters—we’re interested in the syntax itself considered abstractly, rather than any representation of the syntax. Since ad-hoc infinite regress is not allowed, we must take something as primal (just as formal mathematics takes the ‘set’ as primal and constructs everything from set theory) and that is what I do with syntax.
As mathematics starts with axioms about sets and inference rules about sets, so I begin with meta-axioms about syntax and meta-inference rules about syntax. (I then—somewhat reflexively—consider meta²-axioms, then transfinitely induct. It’s a habit I’ve developed lately; a current project of mine is to work out how large a large ordinal kappa must be such that meta^kappa -syntax will prove the existence of ordinals larger than kappa, and then (by transfinite recursion shorter than kappa) prove the existence of [a given large cardinal, or the Von Neumann universe, or some other desired ‘big’ entity]. But that’s a topic for another post, I fear)