Starting with an arbitrary class of sets $\Gamma$, can you generate a free semigroup $\Gamma^*$ over $\Gamma$ with the group operation of concatenation ($\frown$)?
The goal here is to codify a formal language in terms of set theory.
The difficulty is in coming up with a set-theoretic operation that corresponds to concatenation such that it makes every new element resulting from concatenation unique, and is associative.
Given $a,b \in \Gamma$, the first thought would be to represent $a \frown b\frown c$ as a 3-tuple $<a,b,c>$. I know I can define tuples set-theoretically via $<a,b>:=\{\{a\},\{a,b\}\}$ but this will violate associativity in concatenation:
$$a \frown(b \frown c)=<a,<b,c>> \ne <<a,b>,c>=(a \frown b)\frown c$$
I have tried other variants but I haven't been able to come up with a set-theoretic description of concatenation that respects associativity, any ideas?
EDIT: This is a related question: https://mathoverflow.net/questions/12190/set-theoretic-foundations-for-formal-language-theory
unfortunately none of the answers provide an explicit definition of concatenation in set-theoretic terms.
Wouldn't that cause the same problem with associativity that the tuples cause in my question?
– Mike Mar 10 '19 at 21:22https://math.stackexchange.com/questions/3143072/how-to-define-the-class-of-terms-of-a-formal-language
about how to identify all the elements of the language that we conventionally call 'terms' (constants, variables and functions).
– Mike Mar 10 '19 at 23:48