<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Fri, Aug 22, 2014 at 11:14 AM, David Majnemer <span dir="ltr"><<a href="mailto:david.majnemer@gmail.com" target="_blank">david.majnemer@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">This can be generalized:<br>
<br>
`(X | (Y ^ Z)) ^ ((X ^ Z) ^ Y)` -> `X & (Y ^ Z)`</blockquote><div><br></div><div>Is matching that really the right approach? I would (perhaps naively) think we should instead CSE that to</div><div><br></div><div>  (X | A) ^ X ^ A   (with A = Y ^ Z)<br>
</div><div><br></div><div>... and we should be able to perform these more primitive transformations:</div><div><br></div><div> (X | A) ^ X -> ~X & A</div><div> (~X & A) ^ A -> X & A</div><div><br></div><div>
... which together reduce your expression to X & (Y ^ Z). Perhaps one of those takes us further from canonical form, though. What are the rules for canonicity here?</div></div></div></div>