From 5a2aa693841c49403eb97e4d801df895b271dbd6 Mon Sep 17 00:00:00 2001 From: thomasabishop Date: Mon, 19 Dec 2022 08:00:05 +0000 Subject: [PATCH] Autosave: 2022-12-19 08:00:05 --- .../Boolean_function_synthesis.md | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/Logic/Propositional_logic/Boolean_function_synthesis.md b/Logic/Propositional_logic/Boolean_function_synthesis.md index 12e9dbf..1f5bb18 100644 --- a/Logic/Propositional_logic/Boolean_function_synthesis.md +++ b/Logic/Propositional_logic/Boolean_function_synthesis.md @@ -14,3 +14,48 @@ This is an important skill that we will use when constructing [logic circuits](/ ## The process The process proceeds as follows: + +1. Work out the truth conditions for the circuit we want to construct +2. Identify the rows where the output is equal to 1 +3. For each of these rows construct a Boolean expression that evaluates to that output +4. Join each expression with OR +5. Reduce these expressions to a single expression in its simplest form + +## Example + +Let's say we have the following truth table: + +| Line | $x$ | $y$ | $z$ | $f$ | +| ---- | --- | --- | --- | --- | +| 1 | 0 | 0 | 0 | 1 | +| 2 | 0 | 0 | 1 | 0 | +| 3 | 0 | 1 | 0 | 1 | +| 4 | 0 | 1 | 1 | 0 | +| 5 | 1 | 0 | 0 | 1 | +| 6 | 1 | 0 | 1 | 0 | +| 7 | 1 | 1 | 0 | 0 | +| 8 | 1 | 1 | 1 | 0 | + +We only need to focus on lines 1, 3, and 5 since they have the output 1: + +| Line | $x$ | $y$ | $z$ | $f$ | +| ---- | --- | --- | --- | --- | +| 1 | 0 | 0 | 0 | 1 | +| 3 | 0 | 1 | 0 | 1 | +| 5 | 1 | 0 | 0 | 1 | + +For each line we construct a Boolean expression that would result in the value in the $f$ column. In other words we construct the function: + +| Line | $x$ | $y$ | $z$ | $f$ | +| ---- | --- | --- | --- | ------------------------------------------- | +| 1 | 0 | 0 | 0 | $ \lnot(x) \land \lnot (y) \land \lnot(z) $ | +| 3 | 0 | 1 | 0 | $ \lnot(x) \land y \land \lnot(z) $ | +| 5 | 1 | 0 | 0 | $ x \land \lnot(y) \land \lnot(z) $ | + +We can now join each expression to create a complex expression that covers the entire truth table. Since 1 will be output for any one of these sub-expressions we can just join them up with OR: + +$$ +(\lnot(x) \land \lnot (y) \land \lnot(z)) \lor \lnot(x) \land y \land \lnot(z) \lor x \land \lnot(y) \land \lnot(z) +$$ + +It's clear that we have transcribed the truth conditions accurately but that we are doing so in a rather verbose way. Let's simplify: