Legend:

* !SubstFam (formerly, IdenticalLHS) only applies to family equalities (both local and wanteds)

126

126

* Top only applies to family equalities (both locals and wanteds)

127

We should apply !SubstFam first as it cheaper and potentially reduces the number of applications of Top. On the other hand, for each family equality, we may want to try to reduce it with Top, and if that fails, use it with !SubstFam. (That strategy should lend itself well to an implementation.)

127

We should apply !SubstFam first as it cheaper and potentially reduces the number of applications of Top. On the other hand, for each family equality, we may want to try to reduce it with Top, and if that fails, use it with !SubstFam. (That strategy should lend itself well to an implementation.) But be careful, we need to apply Top exhaustively, to avoid non-termination. More precisely, if we interleave Top and SubstFam, we can easily diverge.