84 lines
16 KiB
HTML
84 lines
16 KiB
HTML
|
|
<!DOCTYPE html><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type" /><meta content="width=device-width, initial-scale=1" name="viewport" /><!--replace-start-0--><!--replace-start-5--><!--replace-start-8--><title>Boolean algebra - My Zettelkasten</title><!--replace-end-8--><!--replace-end-5--><!--replace-end-0--><link href="https://cdn.jsdelivr.net/npm/fomantic-ui@2.8.7/dist/semantic.min.css" rel="stylesheet" /><link href="https://fonts.googleapis.com/css?family=Merriweather|Libre+Franklin|Roboto+Mono&display=swap" rel="stylesheet" /><!--replace-start-1--><!--replace-start-4--><!--replace-start-7--><link href="https://raw.githubusercontent.com/srid/neuron/master/assets/neuron.svg" rel="icon" /><meta content="Many of the laws that obtain in the mathematical realm of algebra also obtain for Boolean expressions." name="description" /><meta content="Boolean algebra" property="og:title" /><meta content="My Zettelkasten" property="og:site_name" /><meta content="article" property="og:type" /><meta content="Boolean_algebra" property="neuron:zettel-id" /><meta content="Boolean_algebra" property="neuron:zettel-slug" /><meta content="algebra" property="neuron:zettel-tag" /><meta content="logic" property="neuron:zettel-tag" /><meta content="nand-to-tetris" property="neuron:zettel-tag" /><meta content="propositional-logic" property="neuron:zettel-tag" /><script type="application/ld+json">[]</script><style type="text/css">body{background-color:#eeeeee !important;font-family:"Libre Franklin", serif !important}body .ui.container{font-family:"Libre Franklin", serif !important}body h1, h2, h3, h4, h5, h6, .ui.header, .headerFont{font-family:"Merriweather", sans-serif !important}body code, pre, tt, .monoFont{font-family:"Roboto Mono","SFMono-Regular","Menlo","Monaco","Consolas","Liberation Mono","Courier New", monospace !important}body div.z-index p.info{color:#808080}body div.z-index ul{list-style-type:square;padding-left:1.5em}body div.z-index .uplinks{margin-left:0.29999em}body .zettel-content h1#title-h1{background-color:rgba(33,133,208,0.1)}body nav.bottomPane{background-color:rgba(33,133,208,2.0e-2)}body div#footnotes{border-top-color:#2185d0}body p{line-height:150%}body img{max-width:100%}body .deemphasized{font-size:0.94999em}body .deemphasized:hover{opacity:1}body .deemphasized:not(:hover){opacity:0.69999}body .deemphasized:not(:hover) a{color:#808080 !important}body div.container.universe{padding-top:1em}body div.zettel-view ul{padding-left:1.5em;list-style-type:square}body div.zettel-view .pandoc .highlight{background-color:#ffff00}body div.zettel-view .pandoc .ui.disabled.fitted.checkbox{margin-right:0.29999em;vertical-align:middle}body div.zettel-view .zettel-content .metadata{margin-top:1em}body div.zettel-view .zettel-content .metadata div.date{text-align:center;color:#808080}body div.zettel-view .zettel-content h1{padding-top:0.2em;padding-bottom:0.2em;text-align:center}body div.zettel-view .zettel-content h2{border-bottom:solid 1px #4682b4;margin-bottom:0.5em}body div.zettel-view .zettel-content h3{margin:0px 0px 0.4em 0px}body div.zettel-view .zettel-content h4{opacity:0.8}body div.zettel-view .zettel-content div#footnotes{margin-top:4em;border-top-style:groove;border-top-width:2px;font-size:0.9em}body div.zettel-view .zettel-content div#footnotes ol > li > p:only-of-type{display:inline;margin-right:0.5em}body div.zettel-view .zettel-content aside.footnote-inline{width:30%;padding-left:15px;margin-left:15px;float:right;background-color:#d3d3d3}body div.zettel-view .zettel-content .overflows{overflow:auto}body div.zettel-view .zettel-content code{margin:auto auto auto auto;font-size:100%}body div.zettel-view .zettel-content p code, li code, ol code{padding:0.2em 0.2em 0.2em 0.2em;background-color:#f5f2f0}body div.zettel-view .zettel-content pre{overflow:auto}body div.zettel-view .zettel-content dl dt{font-weight:bold}body div.zettel-view .zettel-content blockquote{background-color:#f9f9f9;border-left:solid 10px #cccccc;margin:1.5em 0px 1.5em 0px;padding:0.5em 10px 0.5em 10px}body div.zettel-v
|
|||
|
|
async=""
|
|||
|
|
id="MathJax-script"
|
|||
|
|
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"
|
|||
|
|
></script>
|
|||
|
|
<link
|
|||
|
|
href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.23.0/themes/prism.min.css"
|
|||
|
|
rel="stylesheet"
|
|||
|
|
/><link rel="preconnect" href="https://fonts.googleapis.com" /><link
|
|||
|
|
rel="preconnect"
|
|||
|
|
href="https://fonts.gstatic.com"
|
|||
|
|
crossorigin
|
|||
|
|
/><link
|
|||
|
|
href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;1,100;1,200;1,300;1,400;1,500;1,600;1,700&family=IBM+Plex+Sans+Condensed:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;1,100;1,200;1,300;1,400;1,500;1,600;1,700&family=IBM+Plex+Sans:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;1,100;1,200;1,300;1,400;1,500;1,600;1,700&family=IBM+Plex+Serif:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;1,100;1,200;1,300;1,400;1,500;1,600;1,700&display=swap"
|
|||
|
|
rel="stylesheet"
|
|||
|
|
/>
|
|||
|
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.23.0/components/prism-core.min.js"></script>
|
|||
|
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.23.0/plugins/autoloader/prism-autoloader.min.js"></script>
|
|||
|
|
<style>
|
|||
|
|
body .ui.container,
|
|||
|
|
body ul {
|
|||
|
|
font-family: "IBM Plex Sans" !important;
|
|||
|
|
}
|
|||
|
|
body blockquote {
|
|||
|
|
border-left-width: 3px !important;
|
|||
|
|
font-style: italic;
|
|||
|
|
}
|
|||
|
|
.headerFont,
|
|||
|
|
.ui.header,
|
|||
|
|
body h1,
|
|||
|
|
h2,
|
|||
|
|
h3,
|
|||
|
|
h4,
|
|||
|
|
h5,
|
|||
|
|
h6 {
|
|||
|
|
font-family: "IBM Plex Sans Condensed" !important;
|
|||
|
|
}
|
|||
|
|
body p {
|
|||
|
|
line-height: 1.4;
|
|||
|
|
}
|
|||
|
|
.monoFont,
|
|||
|
|
body code,
|
|||
|
|
pre,
|
|||
|
|
tt {
|
|||
|
|
font-family: "IBM Plex Mono" !important;
|
|||
|
|
font-size: 12px !important;
|
|||
|
|
line-height: 1.4 !important;
|
|||
|
|
}
|
|||
|
|
</style>
|
|||
|
|
<!--replace-end-7--><!--replace-end-4--><!--replace-end-1--></head><body><div class="ui fluid container universe"><!--replace-start-2--><!--replace-start-3--><!--replace-start-6--><div class="ui text container" id="zettel-container" style="position: relative"><div class="zettel-view"><article class="ui raised attached segment zettel-content"><div class="pandoc"><h1 id="title-h1">Boolean algebra</h1><h2 id="algebraic-laws">Algebraic laws</h2><p>Many of the laws that obtain in the mathematical realm of algebra also obtain for Boolean expressions.</p><h3 id="the-commutative-law">The Commutative Law</h3><p><span class="math display">$$
|
|||
|
|
x \land y = y \land x \\
|
|||
|
|
$$</span></p><p>$$</p><pre><code class="language-none">x \lor y = y \lor x</code></pre><p>$$</p><p>Compare the <a href="Whole_numbers.md#the-commutative-property">Commutative Law</a> in the context of arithmetic.</p><h3 id="the-associative-law">The Associative Law</h3><p><span class="math display">$$
|
|||
|
|
x \land (y \land z) = (x \land y) \land z
|
|||
|
|
$$</span></p><p><span class="math display">$$
|
|||
|
|
x \lor (y \lor z) = (x \lor y) \lor z
|
|||
|
|
$$</span></p><p>Compare the <a href="Whole_numbers.md#the-associative-property">Associative Law</a> in the context of arithmetic.</p><h3 id="the-distributive-law">The Distributive Law</h3><p><span class="math display">$$
|
|||
|
|
x \land (y \lor z) = (x \land y) \lor (x \land z)
|
|||
|
|
$$</span></p><p><span class="math display">$$
|
|||
|
|
x \lor (y \land z) = (x \lor y) \land (x \lor z)
|
|||
|
|
$$</span></p><p>Compare how the <span class="zettel-link-container cf"><span class="zettel-link" title="Zettel: The Distributive Property of Multiplication"><a href="Distributivity.html">Distributive Law applies in the case of algebra based on arithmetic</a></span></span>:</p><p><span class="math display">$$
|
|||
|
|
a \cdot (b + c) = a \cdot b + a \cdot c
|
|||
|
|
$$</span></p><h3 id="double-negation-elimination">Double Negation Elimination</h3><p><span class="math display">$$
|
|||
|
|
\lnot \lnot x = x
|
|||
|
|
$$</span></p><h3 id="idempotent-law">Idempotent Law</h3><p><span class="math display">$$
|
|||
|
|
x \land x = x
|
|||
|
|
$$</span></p><blockquote><p>Combining a quantity with itself either by logical addition or logical multiplication will result in a logical sum or product that is the equivalent of the quantity</p></blockquote><h3 id="demorgans-laws">DeMorgan’s Laws</h3><p>In addition we have <span class="zettel-link-container cf"><span class="zettel-link" title="Zettel: DeMorgan’s Laws"><a href="DeMorgan's_Laws.html">DeMorgan’s Laws</a></span></span> which express the relationship that obtains between the negations of conjunctive and disjunctive expressions:</p><p><span class="math display">$$
|
|||
|
|
\lnot(x \land y) = \lnot x \lor \lnot y
|
|||
|
|
$$</span></p><p><span class="math display">$$
|
|||
|
|
\lnot (x \lor y) = \lnot x \land \lnot y
|
|||
|
|
$$</span></p><h2 id="applying-the-laws-to-simplify-complex-boolean-expressions">Applying the laws to simplify complex Boolean expressions</h2><p>Say we have the following expression:</p><p><span class="math display">$$
|
|||
|
|
\lnot(\lnot(x) \land \lnot (x \lor y))
|
|||
|
|
$$</span></p><p>We can employ DeMorgan’s Laws to convert the second conjunct to a different form:</p><p><span class="math display">$$
|
|||
|
|
\lnot (x \lor y) = \lnot x \land \lnot y
|
|||
|
|
$$</span></p><p>So now we have:</p><p><span class="math display">$$
|
|||
|
|
\lnot(\lnot(x) \land (\lnot x \land \lnot y ))
|
|||
|
|
$$</span></p><p>As we have now have an expression of the form <em>P and (Q and R)</em> we can apply the Distributive Law to simplify the brackets (<em>P and Q and R</em>):</p><p><span class="math display">$$
|
|||
|
|
\lnot( \lnot(x) \land \lnot(x) \land \lnot(y))
|
|||
|
|
$$</span></p><p>Notice that we are repeating ourselves in this reformulation. We have <span class="math inline">\(\lnot(x) \land \lnot(x)\)</span> but this is just the same <span class="math inline">\(\lnot(x)\)</span> by the principle of <strong>idempotence</strong>. So we can reduce to:</p><p><span class="math display">$$
|
|||
|
|
\lnot(\lnot(x) \land \lnot(y))
|
|||
|
|
$$</span></p><p>This gives our expression the form of the first DeMorgan Law (<span class="math inline">\(\lnot (P \land Q)\)</span>), thus we can apply the law (<span class="math inline">\(\lnot P \lor \lnot Q\)</span>) to get:</p><p><span class="math display">$$
|
|||
|
|
\lnot(\lnot(x)) \lor \lnot(\lnot(y))
|
|||
|
|
$$</span></p><p>Of course now we have two double negatives. We can apply the double negation law to get:</p><p><span class="math display">$$
|
|||
|
|
x \lor y
|
|||
|
|
$$</span></p><h3 id="truth-table">Truth table</h3><p>Whenever we simplify an algebraic expression the value of the resulting expression should match that of the complex expression. We can demonstrate this with a truth table:</p><table class="ui table"><thead><tr><th><span class="math inline">\(x\)</span></th><th><span class="math inline">\(y\)</span></th><th><span class="math inline">\(\lnot(\lnot(x) \land \lnot (x \lor y))\)</span></th><th><span class="math inline">\(x \lor y\)</span></th></tr></thead><tbody><tr><td>0</td><td>0</td><td>0</td><td>0</td></tr><tr><td>0</td><td>1</td><td>1</td><td>1</td></tr><tr><td>1</td><td>0</td><td>1</td><td>1</td></tr><tr><td>1</td><td>1</td><td>1</td><td>1</td></tr></tbody></table><h3 id="significance-for-computer-architecture">Significance for computer architecture</h3><p>The fact that we can take a complex Boolean function and reduce it to a simpler formulation has great significance for the development of computer architectures, specifically <span class="zettel-link-container cf"><span class="zettel-link" title="Zettel: Logic gates"><a href="Logic_gates.html">logic gates</a></span></span>. It would be rather resource intensive and inefficient to create a gate that is representative of the complex function. Whereas the simplified version only requires a single <a href="Logic_gates.md#or-gate">OR gate</a>.</p></div></article><nav class="ui attached segment deemphasized bottomPane" id="neuron-tags-pane"><div><span class="ui basic label zettel-tag" title="Tag">algebra</span><span class="ui basic label zettel-tag" title="Tag">logic</span><span class="ui basic label zettel-tag" title="Tag">nand-to-tetris</span><span class="ui basic label zettel-tag" title="Tag">propositional-logic</span></div></nav><nav class="ui bottom attached icon compact inverted menu blue" id="neuron-nav-bar"><!--replace-start-9--><!--replace-end-9--><a class="right item" href="impulse.html" title="Open Impulse"><i class="wave square icon"></i></a></nav></div></div><!--replace-end-6--><!--replace-end-3--><!--replace-end-2--><div class="ui center aligned container footer-version"><div class="ui tiny image"><a href="https://neuron.zettel.page"><img alt="logo" src="https://raw.githubusercontent.com/srid/neuron/master/assets/neuron.svg" title="Generated by Neuron 1.9.35.3" /></a></div></div></div></body></html>
|