How do you convert a regular expression to its disjunctive normal form?
The proof is by structural induction. I will define an operator $T$ that takes an arbitrary regular expression, and outputs an equivalent regular expression in disjunctive normal form:


Base cases: $T[\epsilon] = \epsilon$, $T[\sigma] = \sigma$, $T[\emptyset] = \emptyset$.
If $r = s + t$, then we define $T[r] = T[s] + T[t]$.
If $r = st$, by induction we know that $T[s] = s_1 + \cdots + s_n$ and $T[t] = t_1 + \cdots + t_m$, where $+$ doesn't appear in any of the $s_i$ or $t_j$. We define $T[r] = \sum_{1 \leq i \leq n} \sum_{1 \leq j \leq m} s_i t_j$.
If $r = s^*$, by induction we know that $T[s] = s_1 + \cdots + s_n$. We define $T[r] = (s_1^* \cdots s_n^*)^*$.


It is routine to prove by structural induction that $T[r]$ is a regular expression in disjunctive normal form which is equivalent to $r$.