In functions like recursive-validate we're passing in a sequence of strings that indicate whether a given step is an equivalence/equality step or an implication step.
We probably ought to be using keywords like :equals and :implies (and :follows-from when we implement that in #75) instead of just strings.
I also wonder if passing in these parallel sequences is the best bet here. We could instead have a single, structured input instead. That might simplify some things where, for example, we currently have to worry about the number of rules and expressions not lining up correctly.