Another pattern to look for in this problem is to -un-distribute $C$, that is pull out the $C$ from the two main parts being intersected. That is,
$[(A\cap B)\cup C]∩(A^c\cup C) \rightarrow [((A\cap B) \cap A^c) \cup C]$
Then you can notice something in that intersection about $A$ and $A^C$ that will eliminate that entire part not involving $C$.
Two general strategies for solving equivalence problems by just playing with the syntax is to
- rewrite to simpler things, like using an identity like distribution to reduce the length of the 'phrases' (the shortest set of things operated on). This can be very automatic (apply any identity that fits but always in one direction), but sometimes you get stuck, where you don't think you can simplify any further.
- look for patterns to undo. Here you can ignore complexity in the syntax and consider one complex part as replaced by some new variable. Then with this new variable the syntax you have might match one side of an identity you already know. This is where a little experience helps, knowing identities that might be useful.
Another strategy is to try to think of what the (convoluted) syntax -means- (for example by some visualization like a Venn diagram, or thinking of an intersection as somehow below' both the sets being intersected)