useful string and integer constants are included.

$$\begin{aligned}
{2}
\mbox{Expression } E &:= \: && S {\; | \;}I \\
\mbox{String expression } S &:= && {\texttt{Concat}}(S_1, S_2) {\; | \;}{\texttt{Left}}(S, I) {\; | \;}{\texttt{Right}}(S, I) {\; | \;}{\texttt{Substr}}(S, I_1, I_2) \\
& && 
{\; | \;}{\texttt{Replace}}(S_1, I_1, I_2, S_2) {\; | \;}{\texttt{Trim}}(S) {\; | \;}{\texttt{Repeat}}(S, I) {\; | \;}{\texttt{Substitute}}(S_1, S_2, S_3)
\\ & && {\; | \;}{\texttt{Substitute}}(S_1, S_2, S_3, I) {\; | \;}{\texttt{ToText}}(I) {\; | \;}{\texttt{LowerCase}}(S) {\; | \;}{\texttt{UpperCase}}(S)
\\ & && {\; | \;}{\texttt{ProperCase}}(S) {\; | \;}T {\; | \;}X \\
\mbox{Integer expression } I &:= && I_1 + I_2 {\; | \;}I_1 - I_2 {\; | \;}{\texttt{Find}}(S_1, S_2) {\; | \;}{\texttt{Find}}(S_1, S_2, I) {\; | \;}{\texttt{Len}}(S) {\; | \;}J {\; | \;}X  \\
\mbox{String constants } T &:= && \mbox{\textvisiblespace} {\; | \;}{\texttt{,}} {\; | \;}{\texttt{.}} {\; | \;}{\texttt{-}} {\; | \;}{\texttt{/}} \\
\mbox{Integer constants } J &:= &&  0 {\; | \;}1 {\; | \;}2 {\; | \;}3 {\; | \;}99 \\
\mbox{Input } X &:= && x_1 {\; | \;}\ldots {\; | \;}x_k\end{aligned}$$

Bottom-Up Synthesis
-------------------

The baseline synthesizer on top of which we build our approach is a bottom-up enumerative search inspired by [@TRANSIT], 