Lemma. Let \(h\) be a generalised homomorphism, then \(h(\left\{\varepsilon\right\}) = \left\{\varepsilon\right\}\).
Proof. Note that \(\emptyset^* = \left\{\varepsilon\right\}\), and \(\emptyset^* = h(\emptyset)^* = h(\emptyset^*) = h(\left\{\varepsilon\right\})\).
Let \(h\) be any given generalised homomorphism. Show by structural induction that \(h(L) = \bigcup_{u\in L} h(\left\{u\right\})\) for all regular languages \(L\).
In the case that \(L\) is finite, then \(h(L) = \bigcup_{u\in L} h(\left\{u\right\})\) follows from finite applications of \(h(\left\{u,v\right\}) = h(\left\{u\right\})\cup h(\left\{v\right\})\).
Suppose \(h(L) = \bigcup_{u\in L} h(\left\{u\right\})\) and \(h(H) = \bigcup_{v\in H} h(\left\{v\right\})\).
We first want \(h(L\cup H) = \bigcup_{w\in L\cup H} h(\left\{w\right\})\). As \(h\) is a generalised homomorphism we have \[h(L\cup H) = h(L)\cup h(H) = \bigcup_{u\in L}h(\left\{u\right\}) \cup \bigcup_{v\in H} h(\left\{v\right\}) \] and the result follows by set theory.
Next we want to show \(h(L\cdot H) = \bigcup_{w\in L\cdot H} h(\left\{w\right\})\). Again as \(h\) is a generalised homomorphism we have \[h(L\cdot H) = h(L)\cdot h(H) = \bigcup_{u\in L}h(\left\{u\right\}) \cdot \bigcup_{v\in H} h(\left\{v\right\}) \] and it suffices to show that for all \(u\in L, v\in H\), we have \(h(\left\{uv\right\}) = h(\left\{u\right\})\cdot h(\left\{v\right\})\), this holds because \(h\) is a generalised homomorphism and \(\left\{uv\right\} = \left\{u\right\}\cdot\left\{v\right\}\).
We still need to show that \(h(L^*) = \bigcup_{v\in L^*} h(\left\{v\right\})\). As \(h\) is a generalised homomorphism we have \[h(L^*) = h(L)^* = \left(\bigcup_{u\in L} h(\left\{u\right\})\right)^*. \] Now we show \[\bigcup_{v\in L^*} h(\left\{v\right\}) = \left(\bigcup_{u\in L} h(\left\{u\right\})\right)^*.\] Let \(v\in L^*\), if \(v = \varepsilon\) then \(h(\left\{\varepsilon\right\}) = \left\{\varepsilon\right\} \subseteq \left(\bigcup_{u\in L} h(\left\{u\right\})\right)^*\). In the other case let \(l_1,l_2,\dots,l_n\in L\) such that \(v = l_1l_2\cdots l_n\), then \(h(\left\{v\right\}) = h(\left\{l_1\right\})\cdot h(\left\{l_2\right\})\cdots h(\left\{l_n\right\}) \subseteq \left(\bigcup_{u\in L} h(\left\{u\right\})\right)^*\) too.
The argument for the other side of containment is similar, just chase elements.
Furthermore, show that every mapping \(h\) satisfying \(h(\left\{\varepsilon\right\}) = \left\{\varepsilon\right\}\), \(h(L) = \bigcup_{u\in L} h(\left\{u\right\})\) and \(h(L\cdot H) = h(L)\cdot h(H)\) for all regular subsets \(L, H\subseteq \Sigma^*\) is a generalised homomorphism.
To show \(h(L\cup H) = h(L)\cup h(H)\), we mostly reuse the equations earlier \[ h(L)\cup h(H) = \bigcup_{u\in L}h(\left\{u\right\}) \cup \bigcup_{v\in H} h(\left\{v\right\}) = \bigcup_{w\in L\cup H} h(\left\{w\right\}) = h(L\cup H). \]
To show \(h(\emptyset) = \emptyset\) consider \(h(\emptyset) = \bigcup_{u\in \emptyset} h(\left\{u\right\}) = \emptyset\).
To show \(h(L^*) = h(L)^*\) it suffices to show that \[\bigcup_{v\in L^*} h(\left\{v\right\}) = \left(\bigcup_{u\in L} h(\left\{u\right\})\right)^*\] and we can reuse the argument from earlier part.
Is the same true if one weakens the condition \(h(\left\{\varepsilon\right\}) = \left\{\varepsilon\right\}\) to \(\varepsilon\in h(\left\{\varepsilon\right\})\)?
No. Let \(h\) send \(\left\{\varepsilon\right\}\) to \(\left\{\varepsilon, 0\right\}\). Then \(h\) cannot be a generalised homomorphism because \[ \left\{\varepsilon, 0\right\} \ne h(\left\{\varepsilon\right\}) = h(\left\{\varepsilon\right\}^*) = \left\{\varepsilon, 0\right\}^* = 0^*. \]