title: Reducing a boolean expression
body: <p>I am having an expression, suppose,</p>
  
  <pre><code>a = 1 &amp;&amp; (b = 1 || b != 0 ) &amp;&amp; (c &gt;= 35 || d != 5) &amp;&amp; (c &gt;= 38 || d = 6)
  </code></pre>
  
  <p>I expect it to be reduced to,</p>
  
  <pre><code>a = 1 &amp;&amp; b != 0 &amp;&amp; (c &gt;= 38 || d = 6)
  </code></pre>
  
  <p><strong>Does anyone have any suggestions? Pointers to any algorithm?</strong></p>
  
  <p><em>Nota Bene:</em> Karnaugh Map or Quine-McCluskey are not an option here, I believe. As these methods don't handle grey cases. I mean, expression can only be reduced as far as things are like, A or A' or nothing, or say black or white or absense-of-colour. But here I'm having grey shades, as you folks can see.</p>
  
  <p><em>Solution:</em> I have written the program for this in Clojure. I used map of a map containing a function as value. That came pretty handy, just a few rules for a few combinations and you are good. Thanks for your helpful answers.</p>