A processor may include a set of primitive operators, receive a set of data-driven operators, at least one of the set of data-driven operators including a machine learning model, and receive an input-output data pair set. Based on a grammar specifying rules for linking the set of primitive operators and the set of data-driven operators, the processor may search among the set of primitive operators and the set of data-driven operators to find a symbolic model that fits the input-output data set.