to learn whether a value is intermediate between an input and an output, the model receives *two* property signatures as input: one from the inputs and one from the intermediate value. Recall from Section \[section:property\_signatures\] that a property signature is computed by applying a list of properties to a list of input-output pairs. So one signature is computed by applying all of the properties to input-output pairs, and the other is applied to intermediate value-output pairs. A few example properties that we use include: (a) if $v$ and $o$ are both strings, is $v$ an initial substring of $o$; (b) do $v$ and $o$ have the same length; (c) does the output contain a space, and so on. (See Supplementary Material for the full list of properties.) Then we concatenate these two vectors to obtain the model’s input. The rest of the model is straightforward. Each element of the property signature is either ${\ensuremath{\mathsf{AllTrue}}}$, ${\ensuremath{\mathsf{AllFalse}}}$ and ${\ensuremath{\mathsf{Mixed}}}$. So we embed the ternary property signature into a higher-dimensional dense vector and then feed it into a fully connected neural network for binary classification.

This model is simple, but we are only able to use such a simple model due to our 