Recursive Cases: Operators
The recursive case has a rhs that is an operation:
(= α ( op β γ ))
We are hoping that the desired variable will be somewhere in β or γ; to get to it, we must apply some kind of inverse operation to both sides of the equation to get rid of op and isolate β or γ.
In general, there may be two inverse operations to try.
We can produce the result of the inverse operation by constructing
a new equation from the given one, e.g., given:
(= α (+ β γ ))
we can construct two new possibilities:
(= (- α β ) γ ) (subtract β from both sides)
(= (- α γ ) β ) (subtract γ from both sides)
After making a new equation, we simply call solve to try to solve that equation. We return the first solution that is not null.