isImpliedCondition() currently handles and/or on the LHS, but not on the RHS, resulting in asymmetric behavior. This patch adds two new implication rules:
- LHS ==> (RHS1 || RHS2) if LHS ==> RHS1 or LHS ==> RHS2
- LHS ==> !(RHS1 && RHS2) if LHS ==> !RHS1 or LHS ==> !RHS2
I had to step through this to convince myself that the logic was correct.
That is probably the shortest way to write it, but something like this might be easier to read?